【发布时间】:2020-01-09 18:36:30
【问题描述】:
如何使用 fluentd 从 kubernetes 日志中提取不同的字段,例如严重性、时间、流、消息。我有多个来自 kubernetes 的日志模式。如何使用 fluentd 从不同类型的模式中提取字段
示例错误日志 - {"log":"2019-09-06 21:57:50.864 DEBUG 1 --- [ntainer#2-0-C-1] class : error message \"\n","stream":"stdout","time":"2019-09-06T21:57:50.864955417Z"}
我正在使用的正则表达式 - ^(?:{"log":"(?<time>\d+(?:-\d+){2}\s+\d+(?::\d+){2}\.\d+)\s"*(?<level>\S+) (?<pid>\d+) --- \[(?<thread>[\s\S]*?)\] (?<class>\S+)\s*:\s* (?<message>[\s\S]*?)(?=\g<time>|\Z).*)
我在使用正则表达式时遇到模式未找到错误。下面是我的流利配置
<source>
type tail
path /var/log/containers/*.log
pos_file /var/log/es-containers.log.pos
tag kubernetes.*
format /^(?:{"log":"(?<time>\d+(?:-\d+){2}\s+\d+(?::\d+){2}\.\d+)\s"*(?<level>\S+) (?<pid>\d+) --- \[(?<thread>[\s\S]*?)\] (?<class>\S+)\s*:\s* (?<message>[\s\S]*?)(?=\g<time>|\Z).*)/
time_format %Y-%m-%dT%H:%M:%S.%NZ
read_from_head false
</source>
【问题讨论】:
标签: elasticsearch kubernetes fluentd