我正在使用 Fluentd 和 Elasticsearch 来获取来自 Kubernetes 的日志,但我注意到某些 JSON 日志无法正确索引,因为 JSON 存储为字符串。
kubectl 日志中的日志如下所示:
{"timestamp":"2016-11-03T15:48:12.007Z","level":"INFO","thread":"cromwell-system-akka.actor.default-dispatcher-4","logger":"akka.event.slf4j.Slf4jLogger","message":"Slf4jLogger started","context":"default"}
Run Code Online (Sandbox Code Playgroud)
但是保存在 /var/log/containers/... 文件中的日志已经转义了引号并使它们成为字符串而不是破坏索引的 JSON:
{"log":"{\"timestamp\":\"2016-11-03T15:45:07.976Z\",\"level\":\"INFO\",\"thread\":\"cromwell-system-akka.actor.default-dispatcher-4\",\"logger\":\"akka.event.slf4j.Slf4jLogger\",\"message\":\"Slf4jLogger started\",\"context\":\"default\"}\n","stream":"stdout","time":"2016-11-03T15:45:07.995443479Z"}
Run Code Online (Sandbox Code Playgroud)
我试图让日志看起来像:
{
"log": {
"timestamp": "2016-11-03T15:45:07.976Z",
"level": "INFO",
"thread": "cromwell-system-akka.actor.default-dispatcher-4",
"logger": "akka.event.slf4j.Slf4jLogger",
"message": "Slf4jLogger started",
"context": "default"
},
"stream": "stdout",
"time": "2016-11-03T15: 45: 07.995443479Z"
}
Run Code Online (Sandbox Code Playgroud)
你能建议我怎么做吗?