반응형
Ⅰ. Filebeat 란?
Elastic사가 개발한 경량 로그 수집기(Agent)로, 서버·컨테이너·클라우드 환경에서 생성되는 로그를 Elasticsearch, Logstash, Kafka 등으로 전송합니다. 2015년에 출시되었으며 Go 언어로 작성되어 리소스 사용이 적고 안정적인 로그 수집이 가능합니다.
Ⅱ. Filebeat 구성 요소
Input → Harvester → Spooler의 세 단계로 작동합니다.
| 단계 | 구성요소 | 설명 |
| 1 | Input (Prospector) | 1) 로그 파일의 위치를 탐색 및 모니터링 2) 설정 파일에 지정된 경로의 로그 파일을 찾아 Harvester를 실행 3) log, stdin, container, docker 등 다양한 입력 타입을 지원 4) 하나의 Filebeat에서 여러 Input을 설정 |
| 2 | Harvester | 1) 실제 파일을 읽는 역할 수행 2) 한 Harvester가 한 파일을 담당, 파일을 열고 한 줄씩 읽어 데이터를 수집 3) 파일이 이동되거나 이름이 변경되어도 지속적으로 추적 4) 수집이 완료되면 파일을 닫고 리소스를 해제 |
| 3 | Spooler | 1) Harvester가 수집한 데이터를 배치 처리(batch) 하여 Elasticsearch, Logstash 등으로 전송 2) 데이터를 버퍼링·그룹화하여 효율적인 전송을 보장 |
Ⅲ. Filebeat 특징
| 특징 | 설명 |
| 경량 설계 | 1) Logstash 대비 CPU·메모리 사용량이 매우 적음 2) 애플리케이션 서버에 직접 설치해도 성능 저하가 거의 없음 3) 각 서버에 Agent 형태로 배포하기에 적합 |
| 데이터 손실 방지 | 1) Registry 파일을 통해 로그 읽기 상태(파일 경로, inode, offset 등)를 지속적으로 추적 2) 시스템 재시작 후에도 중단 지점부터 이어서 수집 3) At-least-once delivery 방식으로 ACK 미수신 시 재전송 수행 |
| 백프레셔(Backpressure) 제어 | 1) 출력 대상(예: Elasticsearch)이 느려지면 자동으로 읽기 속도를 조절 2) 파이프라인 과부하를 방지하고 안정적인 처리 보장 |
| Autodiscover 기능 | 1) Kubernetes/Docker 환경에서 새로운 컨테이너를 자동 감지 2) 적절한 모듈을 적용하여 자동으로 로그 수집 시작 3) Pod·컨테이너 메타데이터(namespace, label 등)를 자동으로 포함 |
| 다양한 모듈 제공 | 1) Apache, Nginx, MySQL, Kafka, System 등 주요 서비스용 미리 구성된 모듈 제공 2) 일부 모듈은 Kibana 대시보드 및 ML(Job) 설정까지 포함 |
Ⅳ. Filebeat vs Logstash
| 구분 | Filebeat | Logstash |
| 언어 / 구조 | Go 기반, 경량 Agent | Java 기반, 무거운 프로세스 |
| 리소스 사용량 | 매우 적음 | 비교적 많음 |
| 기능 범위 | 파일 수집 중심, 단순 필터링 | 다양한 Input/Output 플러그인, 복잡한 필터링 가능 |
| 적합한 환경 | 서버별 로그 수집, 경량 배포 중앙 | 집중형 파싱·데이터 변환 |
| 버퍼링 방식 | 메모리 기반 버퍼 | Persistent Queue(디스크 기반) |
| 확장성 | 수동 Scale-out | Kafka 등 중간 계층으로 확장 용이 |
Ⅴ. FileBeat 활용 구조
ⅰ. 단순 전달: Filebeat → Elasticsearch
ⅱ. 복잡한 파싱/가공: Filebeat → Logstash → Elasticsearch
ⅲ. 대규모 환경: Filebeat → Kafka → Logstash → Elasticsearch
Ⅵ. Filebeat 설치 및 기본 설정
ⅰ. Linux
1) Debian/Ubuntu
| wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat--amd64.deb sudo dpkg -i filebeat--amd64.deb |
2) CentOS/RHEL
| sudo yum install filebeat |
ⅱ. Windows
| ZIP 또는 MSI 파일 다운로드 C:\Program Files\Filebeat에 압축 해제 PowerShell(관리자 권한)에서 실행: .\install-service-filebeat.ps1 |
ⅲ. 기본 설정 예시 (filebeat.yml)
| filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log - /var/log/application/*.log # Elasticsearch로 전송 output.elasticsearch: hosts: ["localhost:9200"] # 또는 Logstash로 전송 # output.logstash: # hosts: ["localhost:5044"] setup.kibana: host: "localhost:5601" |
ⅳ. 모듈 활성화
| filebeat modules enable nginx modules.d/nginx.yml에서 로그 경로 수정 Kibana 대시보드 자동 설치 가능 |
Ⅶ. Filebeat 주요 설정 옵션
| 설정 항목 | 설명 |
| paths | 수집할 로그 파일 경로 (필수) |
| scan_frequency | 로그 파일 스캔 주기 (기본 10초) |
| harvester_buffer_size | 파일 읽기 버퍼 크기 (기본 16KB) |
| include_lines / exclude_lines | 정규식 기반 라인 필터링 |
| multiline | 여러 줄 로그를 하나의 이벤트로 병합 |
| json.keys_under_root JSON | 필드를 최상위 레벨로 병합 |
| filebeat.registry.flush Registry | 파일 기록 주기 (IO 부하 완화) |
Ⅷ. Filebeat 장·단점
| FileBeat | |
| 장점 | 매우 가벼운 리소스 사용량 신뢰성 있는 수집 (Registry + ACK 기반) Backpressure 처리로 안정성 확보 다양한 모듈과 Elastic Stack 완벽 통합 Kibana 대시보드 즉시 활용 가능 |
| 단점 | Input/Output 옵션이 제한적 복잡한 데이터 변환/필터링에는 부적합 많은 파일 수집 시 FD 한계 발생 가능 Scale-out 기능이 없어 수동 분산 필요 플러그인 생태계가 Fluentd/Logstash보다 작음 |
Ⅸ. Filebeat 실제 활용 사례
| 시나리오 | 구성 및 특징 |
| 웹 서버 로그 수집 | Apache/Nginx 모듈로 access/error 로그 자동 수집 및 파싱, Kibana로 트래픽·에러율 모니터링 |
| Kubernetes 환경 | DaemonSet으로 배포, 모든 노드의 컨테이너 로그 자동 수집, Pod 메타데이터 포함 |
| 애플리케이션 로그 중앙화 | 각 서버의 Spring Boot 로그(JSON)를 Filebeat로 수집 → 중앙 Elasticsearch 전송 |
| 다단계 파이프라인 | Filebeat → Kafka → Logstash → Elasticsearch 구성으로 버퍼링 및 데이터 보강 수행 |
반응형
'어플리케이션' 카테고리의 다른 글
| Apache 에서 사용되는 Virtual Host(가상 호스트) 에 대해 알아보겠습니다. (0) | 2025.10.22 |
|---|---|
| 마이크로서비스 아키텍처(Microservices Architecture)에 대해 알아보겠습니다. (0) | 2025.10.15 |
| 웹 크롤러(Web Crawler) 에 대해 알아보겠습니다. (0) | 2025.10.14 |
| 검색엔진 최적화(Search Engine Optimization, SEO)에 대해 알아보겠습니다. (0) | 2025.10.13 |
| SAML(Security Assertion Markup Language)에 대해 알아보겠습니다. (2) | 2025.08.15 |