어플리케이션

Filebeat 에 대해 알아보겠습니다.

forward error correction Circle 2025. 10. 28. 08:27
반응형

Ⅰ. 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 구성으로 버퍼링 및 데이터 보강 수행

 

반응형