7.5. 使用 syslog 协议转发日志
您可以使用 syslog RFC3164 或 RFC5424 协议将日志副本发送到配置为接受该协议的外部日志聚合器(替代默认的 Elasticsearch 日志存储或作为它的补充)。您需要配置外部日志聚合器(如 syslog 服务器)来接收来自 OpenShift Container Platform 的日志。
要使用 syslog 协议配置日志转,,请创建一个 ClusterLogForwarder
自定义资源(CR),并将一个或多个输出输出到使用这些输出的 syslog 服务器和管道。syslog 输出可以使用 UDP、TCP 或 TLS 连接。
另外,您可以使用配置映射使用 syslog RFC3164 协议转发日志。但是,此方法在 OpenShift Container Platform 中已弃用,并将在以后的发行版本中删除。
先决条件
- 您必须有配置为使用指定协议或格式接收日志数据的日志服务器。
流程
创建一个类似如下的
ClusterLogForwarder
CR YAML 文件:apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance 1 namespace: openshift-logging 2 spec: outputs: - name: rsyslog-east 3 type: syslog 4 syslog: 5 facility: local0 rfc: RFC3164 payloadKey: message severity: informational url: 'tls://rsyslogserver.east.example.com:514' 6 secret: 7 name: syslog-secret - name: rsyslog-west type: syslog syslog: appName: myapp facility: user msgID: mymsg procID: myproc rfc: RFC5424 severity: debug url: 'udp://rsyslogserver.west.example.com:514' pipelines: - name: syslog-east 8 inputRefs: 9 - audit - application outputRefs: 10 - rsyslog-east - default 11 parse: json 12 labels: secure: "true" 13 syslog: "east" - name: syslog-west 14 inputRefs: - infrastructure outputRefs: - rsyslog-west - default labels: syslog: "west"
- 1
ClusterLogForwarder
CR 的名称必须是instance
。- 2
ClusterLogForwarder
CR 的命名空间必须是openshift-logging
。- 3
- 指定输出的名称。
- 4
- 指定
syslog
类型。 - 5
- 可选。指定以下列出的 syslog 参数。
- 6
- 指定外部 syslog 实例的 URL 和端口。您可以使用
udp
(不安全)、tcp
(不安全)或者tls
(安全 TCP)协议。如果启用了使用 CIDR 注解的集群范围代理,输出必须是服务器名称或 FQDN,而不是 IP 地址。 - 7
- 如果使用
tls
前缀,您必须为 TLS 通信指定端点所需的 secret 名称。secret 必须存在于openshift-logging
项目中,且必须具有指向它们所代表的相应证书的 tls.crt、tls.key 和 ca-bundle.crt 的键。 - 8
- 可选:指定管道的名称。
- 9
- 指定使用该管道转发哪些日志类型:
application
、infrastructure
或audit
。 - 10
- 指定要与该管道搭配使用的输出来转发日志。
- 11
- 可选:指定将日志转发到内部 Elasticsearch 实例的
default
输出。 - 12
- 可选:转发结构化的 JSON 日志条目作为 JSON 对象,在
structured
项。日志条目必须包含有效的结构化 JSON;否则,OpenShift Logging 会删除structured
字段,并将日志条目发送到默认索引app-00000x
。 - 13
- 可选:字符串。要添加到日志中的一个或多个标签。对值加引号(如 "true"),以便它们被识别为字符串值,而不是作为布尔值。
- 14
- 可选:配置多个输出,将日志转发到任何受支持类型的其他外部日志聚合器:
- 可选。描述管道的名称。
-
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
7.5.1. syslog 参数
您可以为 syslog
输出配置以下内容。如需更多信息,请参阅 syslog RFC3164 或 RFC5424 RFC。
facility: syslog facility.该值可以是十进制整数,也可以是区分大小写的关键字:
-
0
或kern
用于内核信息 -
1
或user
代表用户级信息(默认)。 -
2
或mail
用于邮件系统。 -
3
或daemon
用于系统守护进程 -
4
或auth
用于安全/身份验证信息 -
5
或syslog
用于 syslogd 内部生成的信息 -
6
或lpr
用于行打印机子系统 -
7
或news
用于网络新闻子系统 -
8
或uucp
用于 UUCP 子系统 -
9
或cron
用于 clock 守护进程 -
10
或authpriv
用于安全身份验证信息 -
11
或ftp
用于 FTP 守护进程 -
12
或ntp
用于 NTP 子系统 -
13
或security
用于 syslog audit 日志 -
14
或console
用于 syslog alert 日志 -
15
或solaris-cron
用于 scheduling 守护进程 -
16
-23
或local0
-local7
用于本地使用的工具
-
可选。
payloadKey
:用作 syslog 消息有效负载的记录字段。注意配置
payloadKey
参数可防止将其他参数转发到 syslog。- RFC:用于使用 syslog 发送日志的 RFC。默认为 RFC5424。
severity:设置传出的 syslog 记录的syslog 的严重性。该值可以是十进制整数,也可以是区分大小写的关键字:
-
0
或Emergency
用于代表系统不可用的信息 -
1
或Alert
用于代表立即执行操作的信息 -
2
或Critical
用于代表关键状况的信息 -
3
或Error
用于代表错误状况的信息 -
4
或Warning
用于代表警告条件的信息 -
5
或Notice
用于代表正常但存在重要条件的信息 -
6
或Informational
用于代表提示信息的信息 -
7
或Debug
用于代表调试级别的信息(默认)
-
- tag:Tag 指定记录字段,用作 syslog 消息上的标签。
- trimPrefix:从标签中删除指定的前缀。