json - 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
和.id
date
这是我的配置:
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
解决方案
推荐阅读
- webpack - 在 webpack 4 中拆分块
- html - 如何制作位置固定在第二个和标签下的弹出元素?
- xcode - 使用 XCODE 构建时出错
- java - Flink 中的 windowAll 算子是否会将并行化缩减为 1?
- ruby-on-rails - Heroku:通过 rake 任务解压 Gzip 文件失败
- swift - Codable 类中的可编码变量
- java - javax.xml.transform.Transformer 未将数据写入 Linux 中的文件
- react-native - JSON 解析错误:无法识别的令牌'<' - react-native
- php - 从 mysqli_multi_query 获取最后一个结果
- twitter-bootstrap - 更新 bootstrap-vue 警报的内容