首页 > 解决方案 > 如何使用 fluentd 解析 kubelet 日志

问题描述

原始的 kubelet 日志是这样的:

I0605 09:03:41.463195   28799 setters.go:72] Using node IP: "10.127.7.174"

我可以用流利的方式将其解析为:

format1 /^(?<severity>\w)(?<time>\d{4} [^\s]*)\s+(?<pid>\d+)\s+(?<source>[^ \]]+)\] (?<message>.*)/

但是,kubespary 部署 kubelet 如下: 1. journald 收集 kubelet 日志;2.我写了一个rsyslog文件,所以kubelet日志可以存放在/var/log/kubelet.log中。并且日志更改为:

Jun  5 09:03:41 k8s-4 kubelet: I0605 09:03:41.463195   28799 setters.go:72] Using node IP: "10.127.7.174"

我想知道如何解析这个。

标签: parsingfluentdkubelet

解决方案


我尝试解析您的日志示例文件并使用以下regexp过滤器来实现结果:

format /(?<time>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[^ :\[]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/

这将根据Fluentular输出相应地拆分键:

时间 2019/06/06 08:19:35 +0000

主机 k8s-4

识别kubelet

消息 I0605 09:03:41.463195 28799 setters.go:72] 使用节点 IP:“10.127.7.174”

为了获得更多关于 Fluentd 的知识regexp,请阅读文档

供参考。也有机会systemd通过fluent-plugin-systemd捕获日志。


推荐阅读