如何使用 fluentd 解析 kubelet 日志
how to parse kubelet log with fluentd
原来的kubelet日志是这样的:
I0605 09:03:41.463195 28799 setters.go:72] Using node IP: "10.127.7.174"
我可以用 fluentd 解析它:
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"
我想知道如何解析这个。
我已尝试解析您的日志示例文件并使用以下 regexp
过滤器来获得结果:
format /(?<time>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[^ :\[]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/
这将根据 Fluentular 输出相应地拆分密钥:
time 2019/06/06 08:19:35 +0000
host k8s-4
ident kubelet
message I0605 09:03:41.463195 28799 setters.go:72] Using node IP:
"10.127.7.174"
为了获得更多关于 Fluentd 的知识 regexp
,请阅读 documentation。
仅供参考。还有机会通过 fluent-plugin-systemd 从 systemd
捕获日志。
原来的kubelet日志是这样的:
I0605 09:03:41.463195 28799 setters.go:72] Using node IP: "10.127.7.174"
我可以用 fluentd 解析它:
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"
我想知道如何解析这个。
我已尝试解析您的日志示例文件并使用以下 regexp
过滤器来获得结果:
format /(?<time>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[^ :\[]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/
这将根据 Fluentular 输出相应地拆分密钥:
time 2019/06/06 08:19:35 +0000
host k8s-4
ident kubelet
message I0605 09:03:41.463195 28799 setters.go:72] Using node IP: "10.127.7.174"
为了获得更多关于 Fluentd 的知识 regexp
,请阅读 documentation。
仅供参考。还有机会通过 fluent-plugin-systemd 从 systemd
捕获日志。