首页 > 解决方案 > Filebeat 6.2 无法解析 docker 容器的 json 日志

问题描述

我的应用程序以 json 格式登录,例如

{"verified": true, "id": 42, "date": "bla"}

我想用filebeat(6.2.4)将此作为json转发。但是,由于应用程序在 docker 内部运行,因此日志将写入 /var/lib/docker/containers//_json.log,如下所示:

{"log":"{\"verified\": true, \"id\": 42, \"date\": \"bla\"}\r\n","stream":"stdout","time":"2018-08-10T08:13:53.219511878Z"}

所以现在有一个log带有字符串值的 json 元素。

当 filebeat 解析 docker-log 文件时,该log值的内容被解释为一个简单的字符串,并且 filebeat 产生以下输出:

... "log": "{\"verified\": true, \"id\": 42, \"date\": \"bla\"}", "time": "2018-08-10T09:00:15.038787209Z", "stream": "stdout", ...

是否可以解析 filebeat 中的“log”字段,以便 filebeat 输出包含 json 元素verified和.iddate

这是我的配置: filebeat.autodiscover: providers: - type: docker templates: - condition: contains.docker.container.image: logprod config: - type: log paths: - /var/lib/docker/containers/${data.docker.container.id}/*.log json.message_key: log json.add_error_key: true json.keys_under_root: true output.console: enabled: true pretty: true

标签: jsondockerfilebeat

解决方案


推荐阅读