如何修改Fluent Bit配置自定义AWS CloudWatch中EKS Pod日志的日志流名称
如何修改Fluent Bit配置自定义AWS CloudWatch中EKS Pod日志的日志流名称
嗨,我来帮你搞定这个日志流名称自定义的问题!其实核心就是修改Fluent Bit配置里CloudWatch输出插件的log_stream_name参数,用你需要的字段拼接成想要的格式,具体步骤如下:
1. 找到并编辑Fluent Bit的ConfigMap
首先,你需要找到部署的Fluent Bit对应的ConfigMap(默认在amazon-cloudwatch命名空间下,名字一般是fluent-bit-config),执行命令进入编辑模式:
kubectl edit configmap fluent-bit-config -n amazon-cloudwatch
2. 修改CloudWatch输出段的日志流名称配置
在ConfigMap里找到output.conf部分的[OUTPUT]区块,这里就是负责把日志发送到CloudWatch的配置。你会看到原来的log_stream_name参数拼接了很多冗余字段,把它改成你想要的格式即可。
比如你想要实例名_命名空间名_Pod名的格式,就把log_stream_name改成:
log_stream_name ${kubernetes_node_name}_${kubernetes_namespace_name}_${kubernetes_pod_name}
${kubernetes_node_name}:对应EKS节点的实例名(比如ip-10-11-97-64.ec2.internal)${kubernetes_namespace_name}:Pod所在的命名空间${kubernetes_pod_name}:Pod的名称
如果还想加上容器名,也可以扩展成:
log_stream_name ${kubernetes_node_name}_${kubernetes_namespace_name}_${kubernetes_pod_name}_${kubernetes_container_name}
3. 确保Kubernetes过滤器已正确提取字段
要保证上面用到的这些变量能被正确识别,需要确认ConfigMap的filter.conf里已经开启了Kubernetes过滤器,配置大概长这样:
[FILTER] Name kubernetes Match kube.* 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 Kube_Tag_Prefix kube.var.log.containers. Merge_Log On Merge_Log_Key log_processed K8S-Logging.Parser On K8S-Logging.Exclude Off
这个过滤器会自动从Kubernetes元数据中提取节点名、命名空间、Pod名等字段,供输出配置使用。
4. 重启Fluent Bit DaemonSet让配置生效
修改完ConfigMap后,需要重启Fluent Bit的DaemonSet Pod,让新配置加载:
kubectl rollout restart daemonset fluent-bit -n amazon-cloudwatch
等Pod重启完成后,新生成的日志流就会按照你自定义的格式显示啦!
备注:内容来源于stack exchange,提问作者cloudbud
相关产品推荐
相关产品推荐

