MSA/쿠버네티스

[Kubernetes] Fluentbit 로그 수집 방법(Sidecar vs DaemonSet)

miracle21 2025. 9. 16. 16:20
반응형

 

EKS에서 fluentbit를 sidecar로 띄울때와 daemonset으로 띄울때의 설정을 다르게 줘야한다.

 

sidecar는 pod name을 바로 가져올 수 있지만, daemonset 은 기본적으로 노드 이름을 가져와서 설정을 따로 더 해줘야한다.

 

 

 

[sidecar] fluentbit-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentbit-config
  namespace: ns-app
data:
  fluent-bit.conf: |
    [SERVICE]
        Flush                     1
        Grace                     30
        Log_Level                 trace
        Daemon                    off

    [INPUT]
        Name                tail
        Log_Level           trace
        Path                /app.log
        Tag                 ${POD_NAME}
        Skip_Long_Lines     Off
        Refresh_Interval    10
        Read_from_Head      True
        DB                  /app.db

    [OUTPUT]
        Name                cloudwatch_logs
        Match               *
        region              ap-northeast-2
        log_group_name      /app
        log_stream_prefix   log-
        auto_create_group   true
        log_key             log

    [FILTER]
        Name                aws
        Match               ${POD_NAME}
        imds_version        v1

 

 

 

 

[daemonset] fluentbit-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentbit-config
  namespace: ns-app
data:
  fluent-bit.conf: |
    [SERVICE]
        Flush                     1
        Grace                     30
        Log_Level                 trace
        Daemon                    off

    [INPUT]
        Name                tail
        Log_Level           trace
        Path                /app.log
        Tag                 *
        Skip_Long_Lines     Off
        Refresh_Interval    10
        Read_from_Head      True
        DB                  /app.db

    [OUTPUT]
        Name                cloudwatch_logs
        Match               *
        region              ap-northeast-2
        log_group_name      /app
        log_stream_name     ${kubernetes['pod_name']}
        log_stream_prefix   log-
        auto_create_group   true
        log_key             log

    [FILTER]
        Name                aws
        Match               *
        imds_version        v1

    [FILTER]
        Name                kubernetes
        Match               *
        Kube_URL            https://kubernetes.default.svc:443

 

 

 

deployment는 sidecar나 daemonset이나 차이가 없다.

 

단, 볼륨 설정은 sidecar는 emptydir 로, daemonset은 hostpath 로 해야한다.

  • DaemonSet: 노드 로그를 수집하려면 Pod가 호스트 파일 시스템에 접근해야 하므로 hostpath 를 사용해야 함(emptydir  불가)
  • Sidecar: Pod 내부 로그를 수집하기 때문에  emptydir을 공유해서 로그를 전달

 

 

 
반응형