parsing - 如何使用 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"
我想知道如何解析这个。
解决方案
我尝试解析您的日志示例文件并使用以下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捕获日志。
推荐阅读
- android - Logcat 显示创建索引的链接,即使它已创建
- r - 是否有用于选择以特定字符结尾的单词的 R 函数?
- python - 是否可以在磁盘上存储镶木地板文件,同时附加并按索引检索行?
- javascript - 如何在 react-native 中一次/同时运行多个轨道?
- date - 如何在 Go 中以自定义日期格式获取时差
- python-3.x - 如何将一个项目与熊猫数据框中的下一个项目进行比较?
- javascript - 如何使用js隐藏输入点击的输入值?
- azure - 如何恢复被盗用的 Azure 帐户
- r - 为什么在世界映射时我会在 ggplot 中得到不同的图例?
- php - 用php cURL模拟表单POST,忽略标题?