You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EKS Fargate中配置Fluent Bit实现自定义日志采集?

EKS Fargate 自定义Fluent Bit多服务日志采集到CloudWatch实现方案

核心思路

通过为不同服务配置独立的Fluent Bit日志采集输入规则,匹配对应服务的日志路径,再通过过滤规则给对应日志打上服务名标识,最终输出到CloudWatch时自动添加服务名前缀的日志流,实现不同服务日志的隔离与区分。

前置准备

  • 已启用EKS Fargate的日志采集能力
  • Fargate执行角色已配置CloudWatch日志写入权限(允许创建日志组、日志流、写入日志数据)
  • 所有服务的Pod统一添加app.kubernetes.io/name标签标识服务名,方便后续元数据关联

步骤1:创建自定义Fluent Bit ConfigMap

将以下配置保存为fluent-bit-config.yaml,部署到集群的aws-observability命名空间下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-observability-fluent-bit-config
  namespace: aws-observability
  labels:
    k8s-app: fluent-bit
data:
  fluent-bit.conf: |
    [SERVICE]
        Flush                     1
        Log_Level                 info
        Daemon                    off
        Parsers_File              parsers.conf
        HTTP_Server               On
        HTTP_Listen               0.0.0.0
        HTTP_Port                 2020
        storage.path              /var/fluent-bit/state/flb-storage/
        storage.sync              normal
        storage.checksum          off
        storage.backlog.mem_limit 5M

    # 服务1:nginx服务日志采集配置
    [INPUT]
        Name                      tail
        Tag                       nginx-service.*
        Path                      /var/log/nginx/*,/usr01/app/product/logs/*
        DB                        /var/fluent-bit/state/flb_nginx.db
        Mem_Buf_Limit             5MB
        Skip_Long_Lines           On
        Refresh_Interval          10

    # 服务2:birt服务日志采集配置
    [INPUT]
        Name                      tail
        Tag                       birt-service.*
        Path                      /jboss/product/logs/*,/birt/1.0.0/deploy/birt.war/logs,/birt/1.0.0/logs/*
        DB                        /var/fluent-bit/state/flb_birt.db
        Mem_Buf_Limit             5MB
        Skip_Long_Lines           On
        Refresh_Interval          10

    # 过滤规则:拉取Kubernetes Pod元数据
    [FILTER]
        Name                      kubernetes
        Match                     *
        Kube_URL                  https://kubernetes.default.svc:443
        Kube_CA_File              /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        Kube_Token_File           /var/run/secrets/kubernetes.io/serviceaccount/token
        Merge_Log                 On
        Keep_Log                  Off
        K8S-Logging.Parser        On
        K8S-Logging.Exclude       On

    # 过滤规则:给对应服务日志添加服务名字段
    [FILTER]
        Name                      modify
        Match                     nginx-service.*
        Add                       service_name nginx-service

    [FILTER]
        Name                      modify
        Match                     birt-service.*
        Add                       service_name birt-service

    # 输出规则:日志写入CloudWatch
    [OUTPUT]
        Name                      cloudwatch_logs
        Match                     *
        region                    <替换为你的集群所在AWS区域>
        log_group_name            /eks/fargate/service-all-logs
        log_stream_prefix         ${service_name}-
        auto_create_group         true
        log_key                   log
  parsers.conf: |
    # 可根据业务需求添加自定义日志解析器,示例为nginx解析器
    [PARSER]
        Name   nginx
        Format regex
        Regex ^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
        Time_Key time
        Time_Format %d/%b/%Y:%H:%M:%S %z

部署命令:
kubectl apply -f fluent-bit-config.yaml

步骤2:关联Fargate日志配置到自定义ConfigMap

执行AWS CLI命令更新集群Fargate日志配置,指定使用你创建的自定义ConfigMap:
aws eks update-fargate-profile --cluster-name <替换为你的EKS集群名> --fargate-profile-name <替换为你的Fargate配置文件名> --logging '{"logConfiguration": {"fluentBitConfig": {"configMapName": "aws-observability-fluent-bit-config", "namespace": "aws-observability"}}}'

步骤3:新增其他服务的适配方法

后续新增服务只需在fluent-bit.conf中添加对应配置即可:

  • 新增[INPUT]段,填写对应服务的日志路径,设置独立的TAG标识
  • 新增对应的[FILTER] modify段,给该TAG的日志添加service_name字段
  • 无需修改输出配置,服务日志会自动写入对应前缀的CloudWatch日志流

验证效果

  • 进入AWS CloudWatch控制台,找到日志组/eks/fargate/service-all-logs
  • 可看到以nginx-service-、birt-service-为前缀的独立日志流
  • 所有日志条目自带service_name字段,支持直接按服务名过滤查询

内容的提问来源于stack exchange,提问作者Nitin G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:54:00