8.3. 将 JSON 日志转发到 Elasticsearch 日志存储

对于 Elasticsearch 日志存储,如果您的 JSON 日志条目遵循不同的模式,请将 ClusterLogForwarder 自定义资源 (CR) 配置为将每个 JSON 模式分组到单个输出定义中。这样,Elasticsearch 会为每个 schema 使用一个单独的索引。

重要

因为将不同的模式转发到同一索引可能会导致类型冲突和卡化问题,所以您必须在将数据转发到 Elasticsearch 存储前执行此配置。

为避免与索引数量过多相关的性能问题,请考虑通过标准化到常见模式来保持可能的模式数量较低。

流程

  1. 将以下代码片段添加到 ClusterLogForwarder CR YAML 文件中。

    outputDefaults:
     elasticsearch:
        structuredTypeKey: <log record field>
        structuredTypeName: <name>
    pipelines:
    - inputRefs:
      - application
      outputRefs: default
      parse: json
  2. 可选:使用 structTypeKey 指定其中一个日志记录字段,如前面的为 Elasticsearch 配置 JSON 日志数据所述。否则,删除此行。
  3. 可选:使用 structTypeName 指定 <name>,如前面的为 Elasticsearch 配置 JSON 日志数据所述。否则,删除此行。

    重要

    要解析 JSON 日志,您必须设置 structuredTypeKeystructuredTypeName,或者同时设置 structuredTypeKeystructuredTypeName

  4. 对于 inputRefs,指定要使用该管道转发哪些日志类型,如 applicationinfrastructureaudit
  5. parse: json 元素添加到管道。
  6. 创建 CR 对象。

    $ oc create -f <file-name>.yaml

    Red Hat OpenShift Logging Operator 会重新部署 Fluentd Pod。但是,如果没有重新部署,请删除 Fluentd Pod 以强制重新部署。

    $ oc delete pod --selector logging-infra=collector