GKE v1.22开启Cloud Logging后无法查看Pod及fluent-bit日志
问题根因
GKE v1.22版本内置的日志采集组件fluent-bit默认glog解析器存在配置错误,直接导致日志采集流水线整体阻塞,所有日志(包括应用日志、fluent-bit自身运行日志)都无法上报到Cloud Logging:
- 默认glog解析器配置的时间匹配规则为
%m%d %H:%M:%S.%L%z,强制要求时间字符串末尾携带时区偏移字段 - 实际运行中采集到的glog格式日志时间戳为
0608 08:41:45.986036这类格式,末尾没有时区标识,持续触发时间解析失败报错,和节点fluentbit.log中记录的错误日志完全对应。
修复操作
- 编辑
kube-system命名空间下fluent-bit使用的ConfigMap,定位到名称为glog的PARSER配置块 - 将该配置块的
Time_Format字段值从%m%d %H:%M:%S.%L%z修改为%m%d %H:%M:%S.%L,修改后完整的glog解析器配置如下:
[PARSER] Name glog Format regex Regex ^(?<severity>\w)(?<time>\d{4} [^\s]*)\s+(?<pid>\d+)\s+(?<source_file>[^ \]]+)\:(?<source_line>\d+)\]\s(?<message>.*)$ Time_Key time Time_Format %m%d %H:%M:%S.%L
- 执行如下命令滚动重启fluent-bit守护进程集,加载新配置:
kubectl rollout restart daemonset fluent-bit -n kube-system
- 等待所有fluent-bit Pod进入Running状态后2-3分钟,即可在Logs Explorer中查询到全量日志。
补充说明
该问题属于GKE 1.22特定小版本的默认配置缺陷,集群升级到1.23及以上版本后,官方已经修复了该默认配置错误,升级时会自动覆盖修正相关ConfigMap,无需额外手动保留自定义配置。
内容的提问来源于stack exchange,提问作者Dmitriy Esin
相关产品推荐
相关产品推荐

