Docker日志将JSON日志解释为string
我们的Go服务器以JSON的forms输出日志到stdout,每一行看起来像下面这样:
{"time": "2017-06-01 14:00:00", "message": "Something happened", "level": "DEBUG"}
我们的docker-compose使用标准的json-filelogging器,它将每行logging在一个log
字段中作为一个转义string,如下所示:
{ "log": "{\"time\": \"2017-06-01 14:00:00\", \"message\": \"Something happened\", \"level\": \"DEBUG\"}\"", "timestamp": "<the time>", ...more fields... }
但是我们不希望将日志字段作为string转义,我们希望将其作为JSONembedded到同一级别:
{ "log": { "time": "2017-06-01 14:00:00", "message": "Something happened", "level": "DEBUG" }, "timestamp": "<the time>", ...more fields... }
这可以实现吗?
看起来这是不能做的。 但是我可以将JSONstring转换为Filebeat中的实际JSON,我们正在使用它将日志传递给Kibana和Elastalert。 为此,我使用decode_json_fields
processors
下的decode_json_fields
选项。