我需要格式化应用程序中的控制台输出(标准输出),以便GKE可以区分不同的严重性级别。当前,所有内容都被解释为“信息”。
我徒劳地寻找了很多解决方案,但是我仍然没有办法解决它。奇怪的是,(似乎)没有文档描述如何执行此操作。
在GCP #kubernetes-engine备用频道上询问后,建议我需要一种日志格式,其中应包括:
我没有被告知这是纯文本还是JSON,所以我尝试了以下操作:
Severity:WARNING Timestamp:2018-12-11T00:00:00.000Z Message:Hello World!
和
{"Severity": "WARNING", "Timestamp": "2018-12-11T00:00:00.000Z", "Message": "Hello World!"}
但是这些解析似乎没有什么不同。 JSON实际上根本没有解析,只是在日志查看器中显示为JSON。我已经检查了GKE的默认配置是否流利,它包含以下部分:
<source>
type tail
path /var/log/containers/*.log
pos_file /var/log/gcp-containers.log.pos
tag reform.*
read_from_head true
format multi_format
<pattern>
format json
time_key time
time_format %Y-%m-%dT%H:%M:%S.%NZ
</pattern>
<pattern>
format /^(?<time>.+) (?<stream>stdout|stderr) [^ ]* (?<log>.*)$/
time_format %Y-%m-%dT%H:%M:%S.%N%:z
</pattern>
</source>
<filter reform.**>
type parser
format /^(?<severity>\w)(?<time>\d{4} [^\s]*)\s+(?<pid>\d+)\s+(?<source>[^ \]]+)\] (?<log>.*)/
reserve_data true
suppress_parse_error_log true
key_name log
</filter>
<match reform.**>
type record_reformer
enable_ruby true
tag raw.kubernetes.${tag_suffix[4].split('-')[0..-2].join('-')}
</match>
我不想更改默认的流畅配置,所以我想知道如何格式化数据以匹配将在此处工作的格式。正确的格式是什么?