본문 바로가기
Kubernetes

Kubernetes환경에서 Filebeat + ELK를 활용한 Log Pipeline 구축 #2 Filebeat편

by beann 2025. 3. 19.

 

Filebeat는 앞서 설명 했듯이, 경량형 로그수집 도구이다.

 

지정한 경로에 대한 로그를 실시간으로 수집하고, 수집된 로그는 Elasticsearch, Logstash, Kafka 등 다양한 시스템으로 전송할 수 있다. 가장 일반적인 구성은 Filebeat가 로그를 수집하고, 이를 Logstash로 전달하여 추가적인 처리 후 Elasticsearch에 저장하는 방식이다.

당연히 kubernetes에 대한 로그만 수집할 수 있는건 아니고, 시스템로그, 애플리케이션 로그 등 경로 설정이 가능하여 필요한 로그 파일을 수집할 수 있다.

 

Filebeat Configmap예시


filebeat.inputs:
  - type: log
    paths:
      - "/var/log/syslog"
      - "/var/log/auth.log"
  - type: container
    paths:
      - "/var/log/pods/beverage_tea-*/tea/*.log"
      - "/var/log/pods/beverage_ade-*/ade/*.log"
  - type: log
    paths:
      - "/var/log/myapp/*.log"

output.logstash:
  hosts: ["logstash.elk.svc.cluster.local:5044"]

위 경로에 대한 로그는 hosts한테 떨어지는 stdout, stderr 로그를 수집하는데 이를 수집하기 위해선 Filebeat를 Daemonset으로 배포해야하며, hostpath에 대한 해당 경로 mount가 필수적이다.

 

 

 

Filebeat spec.template.spec.volumes 예시


spec:
  selector:
    matchLabels:
      app: filebeat
  template:
    spec:
      containers:
      - name: filebeat
        image: docker.elastic.co/beats/filebeat:7.5.0
        volumeMounts:
        - name: varlog
          mountPath: /var/log
	  volumes:
      - name: varlog
        hostPath:
          path: /var/log