7.3. 将日志转发到外部 Elasticsearch 实例
除了内部 OpenShift Container Platform Elasticsearch 实例外,您还可以将日志转发到外部 Elasticsearch 实例。您需要配置外部日志聚合器,以接收来自 OpenShift Container Platform 的日志数据。
要配置日志转发到外部 Elasticsearch 实例,请创建一个 ClusterLogForwarder
自定义资源(CR),其中包含输出到该实例的输出以及使用输出的管道。外部 Elasticsearch 输出可以使用 HTTP(不安全)或 HTTPS(安全 HTTP)连接。
要将日志转发到外部和内部 Elasticsearch 实例,请将输出和管道创建到外部实例,以及一个使用 default
输出将日志转发到内部实例的管道。您不需要创建 default
输出。如果配置 default
输出,您会收到出错信息,因为 Red Hat OpenShift Logging Operator 保留了 default
输出。
如果您只想将日志转发到内部 OpenShift Container Platform Elasticsearch 实例,则不需要创建一个 ClusterLogForwarder
CR。
先决条件
- 您必须有配置为使用指定协议或格式接收日志数据的日志服务器。
流程
创建一个类似如下的
ClusterLogForwarder
CR YAML 文件:apiVersion: "logging.openshift.io/v1" kind: ClusterLogForwarder metadata: name: instance 1 namespace: openshift-logging 2 spec: outputs: - name: elasticsearch-insecure 3 type: "elasticsearch" 4 url: http://elasticsearch.insecure.com:9200 5 - name: elasticsearch-secure type: "elasticsearch" url: https://elasticsearch.secure.com:9200 secret: name: es-secret 6 pipelines: - name: application-logs 7 inputRefs: 8 - application - audit outputRefs: - elasticsearch-secure 9 - default 10 parse: json 11 labels: myLabel: "myValue" 12 - name: infrastructure-audit-logs 13 inputRefs: - infrastructure outputRefs: - elasticsearch-insecure labels: logs: "audit-infra"
- 1
ClusterLogForwarder
CR 的名称必须是instance
。- 2
ClusterLogForwarder
CR 的命名空间必须是openshift-logging
。- 3
- 指定输出的名称。
- 4
- 指定
elasticsearch
类型。 - 5
- 指定外部 Elasticsearch 实例的 URL 和端口作为有效的绝对 URL。您可以使用
http
(不安全)或https
(安全 HTTP)协议。如果启用了使用 CIDR 注解的集群范围代理,输出必须是服务器名称或 FQDN,而不是 IP 地址。 - 6
- 如果使用
https
前缀,则必须指定 TLS 通信端点所需的 secret 名称。secret 必须存在于openshift-logging
项目中,且必须具有指向它们所代表的相应证书的 tls.crt、tls.key 和 ca-bundle.crt 的键。 - 7
- 可选:指定管道的名称。
- 8
- 指定使用该管道转发哪些日志类型:
application
、infrastructure
或audit
。 - 9
- 指定要与该管道搭配使用的输出来转发日志。
- 10
- 可选:指定将日志发送到内部 Elasticsearch 实例的
default
输出。 - 11
- 可选:转发结构化的 JSON 日志条目作为 JSON 对象,在
structured
项。日志条目必须包含有效的结构化 JSON;否则,OpenShift Logging 会删除structured
字段,并将日志条目发送到默认索引app-00000x
。 - 12
- 可选:字符串。要添加到日志中的一个或多个标签。
- 13
- 可选:配置多个输出,将日志转发到任何受支持类型的其他外部日志聚合器:
- 可选。描述管道的名称。
-
inputRefs
是使用管道转发的日志类型:application
、infrastructure
或audit
。 -
outputRefs
是要使用的输出名称。 - 可选:字符串。要添加到日志中的一个或多个标签。
创建 CR 对象。
$ oc create -f <file-name>.yaml
Red Hat OpenShift Logging Operator 会重新部署 Fluentd Pod。如果 pod 没有重新部署,您可以删除 Fluentd pod 来强制重新部署。
$ oc delete pod --selector logging-infra=fluentd