백엔드

[ELK] Filebeat 핵심 요약 및 설정법

SparkIT 2025. 2. 8. 19:28

Filebeat란?

Filebeat는 여러 장소에 존재하는 로그를 한 곳으로 모으기 위한 경량화된 로그 수집기입니다.

 

 

Filebeat 주요 필드

필드는 Filebeat에서 로그를 수집한 뒤 넘겨줄 때 추가해주는 값들이라고 생각하면 됩니다. 기본적으로 Filebeat는 Elasticsearch에서 로그를 쉽게 분석할 수 있게 여러 필드를 추가해줍니다. 그 중 주요한 필드 몇 가지만 소개하겠습니다.

  1. @timestamp
    filebeat에서 해당 로그를 수집한 시간
  2. ecs.version
    Elastic Common Schema의 버전. 즉, elastic stack에서 표준화된 로그 데이터 구조의 버전을 의미
  3. host.name
    로그를 수집한 호스트 이름 (예를 들어 filebeat를 특정 도커 컨테이너 위에서 실행시켰다면 해당 도커 컨테이너 id값이 담김)
  4. agent
    로그를 수집기에 대한 정보. 즉, 여기서는 filebeat에 대한 정보가 담김
    - id
    - name
    - type
    - version
  5. log
    - file.path
    - file.name
    - offset
  6. input.type

 

 

Filebeat 설정법

기본적으로 filebeat 관련 설정은 filebeat.yml 파일을 통해 관리할 수 있습니다. 몇 가지 예시를 통해 filebeat를 설정해봅시다.

filebeat.inputs

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/*.log  # 로그 파일 경로 (여러 개 지정 가능)
    json.keys_under_root: true  # JSON 형식 로그의 경우
    json.add_error_key: true    # JSON 오류가 있을 경우 오류 정보를 추가

 

processors

processors:
  - drop_fields:
      fields: ["host.name"]  # 불필요한 필드를 삭제할 수 있습니다.
  - add_host_metadata: {}  # 호스트 메타데이터 추가

 

output

  • elasticsearch로 전송할 때
output.elasticsearch:
  hosts: ["http://localhost:9200"]  # Elasticsearch 서버 주소
  username: "elastic"               # 인증 사용자
  password: "password"             # 인증 비밀번호
  index: "filebeat-%{+yyyy.MM.dd}"  # 인덱스 이름 설정 (날짜 기반으로 인덱스 생성)
  • logstash로 전송할 때
output.logstash:
  hosts: ["localhost:5044"]  # Logstash 서버의 주소와 포트