第 12 章 启用 JSON 日志记录
您可以配置 Log Forwarding API,将 JSON 字符串解析为结构化对象。
12.1. 解析 JSON 日志
包含 JSON 日志的日志通常以 message
字段中的字符串表示。这使得用户难以查询 JSON 文档中的特定字段。OpenShift Logging 的 Log Forwarding API 可让您将 JSON 日志解析到结构化对象,并将其转发到 OpenShift Logging 管理的 Elasticsearch 或 Log Forwarding API 支持的任何其他第三方系统。
为了说明其工作原理,假定您有以下结构化 JSON 日志条目:
结构化 JSON 日志条目示例
{"level":"info","name":"fred","home":"bedrock"}
通常,ClusterLogForwarder
自定义资源 (CR) 会在 message
字段中转发该日志条目。message
字段包含与 JSON 日志条目等效的 JSON-quoted 字符串,如下例中所示:
message
字段示例
{"message":"{\"level\":\"info\",\"name\":\"fred\",\"home\":\"bedrock\"", "more fields..."}
要启用解析 JSON 日志,您需要将 parse: json
添加到 ClusterLogForwarder
CR 的管道中,如下例所示。
显示 parse: json
的片段示例
pipelines: - inputRefs: [ application ] outputRefs: myFluentd parse: json
当使用 parse: json
来启用 JSON 日志解析时,CR 会复制 structured
项中的 JSON 结构化日志条目,如下例所示。这不会修改原始的 message
字段。
包含结构化 JSON 日志条目的 structured
输出示例
{"structured": { "level": "info", "name": "fred", "home": "bedrock" }, "more fields..."}
如果日志条目不包含有效的结构化 JSON,则将缺少 structured
字段。
要启用为特定日志记录平台解析 JSON 日志,请参阅将日志转发到第三方系统。