使用FluentBit过滤K8s存活、就绪探针日志无效,寻求排查方案
问题排查与解决方案
核心原因
你的grep过滤器失效,是因为Kubernetes过滤器的Keep_Log Off配置删除了原始的log字段:
- 当设置
Merge_Log On+Keep_Log Off时,FluentBit会把容器日志的内容解析后合并到根级别字段,同时删除原始的log字段。 - 你的grep过滤器仍在针对
log字段过滤,自然无法匹配到任何内容,导致探针日志继续流入ES。
修复方案
以下两种方案任选其一:
方案1:保留原始log字段
修改Kubernetes过滤器的Keep_Log参数为On,这样原始log字段会被保留,原grep过滤器即可生效:
[FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log On # 改为On K8S-Logging.Parser On K8S-Logging.Exclude On
方案2:针对合并后的字段过滤
如果不想保留log字段,调整grep过滤器的目标字段为合并后的日志字段(通常是message,具体取决于你的解析器配置),同时可以添加大小写不敏感匹配:
[FILTER] Name grep Match kube.* Case_Insensitive On # 可选,避免大小写问题 Exclude message .*liveness.*|.*readiness.*
额外验证点
- 确认过滤器执行顺序:grep过滤器必须在Kubernetes过滤器之后,你的当前配置顺序是正确的。
- 检查探针日志的实际内容:可以通过FluentBit的HTTP API(
curl http://<fluentbit-pod-ip>:2020/api/v1/metrics)或临时调整Log_Level为info,查看日志是否被正确解析到目标字段。
内容的提问来源于stack exchange,提问作者Raz Maabari
相关产品推荐
相关产品推荐

