【发布时间】:2018-03-28 17:35:24
【问题描述】:
我真的希望有人能帮我解决这个问题,因为我已经尝试了好几天了。
我有容器在 GKE 的 kubernetes 中运行。在 /var/log/containers/my_container.log 中,我有这样的东西(在其他一些不同格式的日志中):
{"log":"17-Oct-2017;04:36:29.744 : [main] [server:] [id:] [yt:] ERROR no.myproject.service.Server - call failed for some reason\n","stream":"stdout","time":"2017-10-17T04:36:29.750702216Z"}
此日志在 Stackdriver(GKE 中的 Fluentd 输出)上显示为 INFO 日志,类似于:
23:02:32.000 17-Oct-2017;04:36:29.744 : [main] [server:] [id:] [yt:] ERROR no.myproject.service.Server - call failed for some reason
所以
23:02:32.000
被添加到它(这是 Stackdriver 的正常行为)。我将这种格式称为格式 2。
由于此日志消息实际上是一条 ERROR 日志消息(基于其有效负载内容),我希望它在 Stackdriver (Fluentd) 中显示为 ERROR。
我正在尝试:
<filter reform.**>
type parser
format /^(?<time>\d{2} [^\s]*) : (?<message2>[^ \]]*)\] (?<message3>[^ \]]*)\] (?<message4>[^ \]]*)\] (?<message5>[^ \]]*)\] (?<severity>\w)\s+(?<log2222>.*)/
reserve_data true
suppress_parse_error_log false
key_name log
</filter>
希望将消息的严重性更改为 ERROR,并将日志中 [..] 字段的内容作为一些新的键/值(在本例中为 message2: main 等)。
但是将这个过滤器添加到我的配置文件后,输出日志仍然和以前一样,我没有看到任何变化。
我错过了什么?当我写我的正则表达式模式时,我不确定我是否真的应该考虑 kubernetes 日志文件中消息的“日志”字段或我称之为格式 2 的那个(添加了时间 - 在 Stackdriver 上) .
非常感谢任何建议,这将是一个很大的帮助。
【问题讨论】:
标签: regex logging kubernetes fluentd google-kubernetes-engine