7.7. 从特定项目转发应用程序日志

您可以使用 Cluster Log Forwarder 将应用日志的副本从特定项目发送到外部日志聚合器。除了使用默认的 Elasticsearch 日志存储外,您还可以进行此操作。您还必须配置外部日志聚合器,以接收来自 OpenShift Container Platform 的日志数据。

要从项目中配置转发应用程序日志,创建一个 ClusterLogForwarder 自定义资源(CR),其中至少从一个项目中输入,为其他日志聚合器提供可选输出,以及使用这些输入和输出的管道。

先决条件

  • 您必须有配置为使用指定协议或格式接收日志数据的日志服务器。

流程

  1. 创建一个类似如下的 ClusterLogForwarder CR YAML 文件:

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: instance 1
      namespace: openshift-logging 2
    spec:
      outputs:
       - name: fluentd-server-secure 3
         type: fluentdForward 4
         url: 'tls://fluentdserver.security.example.com:24224' 5
         secret: 6
            name: fluentd-secret
       - name: fluentd-server-insecure
         type: fluentdForward
         url: 'tcp://fluentdserver.home.example.com:24224'
      inputs: 7
       - name: my-app-logs
         application:
            namespaces:
            - my-project
      pipelines:
       - name: forward-to-fluentd-insecure 8
         inputRefs: 9
         - my-app-logs
         outputRefs: 10
         - fluentd-server-insecure
         parse: json 11
         labels:
           project: "my-project" 12
       - name: forward-to-fluentd-secure 13
         inputRefs:
         - application
         - audit
         - infrastructure
         outputRefs:
         - fluentd-server-secure
         - default
         labels:
           clusterId: "C1234"
    1
    ClusterLogForwarder CR 的名称必须是 instance
    2
    ClusterLogForwarder CR 的命名空间必须是 openshift-logging
    3
    指定输出的名称。
    4
    指定输出类型: elasticsearchfluentdForwardsyslogkafka
    5
    将外部日志聚合器的 URL 和端口指定为有效的绝对 URL。如果启用了使用 CIDR 注解的集群范围代理,输出必须是服务器名称或 FQDN,而不是 IP 地址。
    6
    如果使用 tls 前缀,您必须为 TLS 通信指定端点所需的 secret 名称。secret 必须存在于 openshift-logging 项目中,并具有每个指向它们所代表证书的 tls.crttls.keyca-bundle.crt 密钥。
    7
    用于过滤指定项目的应用程序日志的输入配置。
    8
    管道配置,使用输入将项目应用程序日志发送到外部 Fluentd 实例。
    9
    my-app-logs 输入。
    10
    要使用的输出名称。
    11
    可选:转发结构化的 JSON 日志条目作为 JSON 对象,在 structured 项。日志条目必须包含有效的结构化 JSON;否则,OpenShift Logging 会删除 structured 字段,并将日志条目发送到默认索引 app-00000x
    12
    可选:字符串。要添加到日志中的一个或多个标签。
    13
    管道配置,将日志发送到其他日志聚合器。
    • 可选:指定管道的名称。
    • 指定使用该管道转发哪些日志类型:applicationinfrastructureaudit
    • 指定要与该管道搭配使用的输出来转发日志。
    • 可选:指定将日志转发到内部 Elasticsearch 实例的 default 输出。
    • 可选:字符串。要添加到日志中的一个或多个标签。
  2. 创建 CR 对象。

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