7.10. 使用 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 日志条目作为
structured
项中的 JSON 对象。日志条目必须包含有效的结构化 JSON;否则,OpenShift Logging 会删除structured
字段,并将日志条目发送到默认索引app-00000x
。 - 13
- 可选:字符串。要添加到日志中的一个或多个标签。对值加引号(如 "true"),以便它们被识别为字符串值,而不是作为布尔值。
- 14
- 可选:配置多个输出,将日志转发到任何受支持类型的其他外部日志聚合器:
- 描述管道的名称。
-
inputRefs
是使用管道转发的日志类型:application
、infrastructure
或audit
。 -
outputRefs
是要使用的输出名称。 - 可选:字符串。要添加到日志中的一个或多个标签。
创建 CR 对象:
$ oc create -f <file-name>.yaml
7.10.1. 在消息输出中添加日志消息
您可以通过将 AddLogSource
字段添加到 ClusterLogForwarder
自定义资源(CR)将 namespace_name
、pod_name
和 container_name
元素添加到记录的 message
字段中。
spec: outputs: - name: syslogout syslog: addLogSource: true facility: user payloadKey: message rfc: RFC3164 severity: debug tag: mytag type: syslog url: tls://syslog-receiver.openshift-logging.svc:24224 pipelines: - inputRefs: - application name: test-app outputRefs: - syslogout
这个配置与 RFC3164 和 RFC5424 兼容。
没有 AddLogSource
的 syslog 消息输出示例
<15>1 2020-11-15T17:06:14+00:00 fluentd-9hkb4 mytag - - - {"msgcontent"=>"Message Contents", "timestamp"=>"2020-11-15 17:06:09", "tag_key"=>"rec_tag", "index"=>56}
带有 AddLogSource
的 syslog 消息输出示例
<15>1 2020-11-16T10:49:37+00:00 crc-j55b9-master-0 mytag - - - namespace_name=clo-test-6327,pod_name=log-generator-ff9746c49-qxm7l,container_name=log-generator,message={"msgcontent":"My life is my message", "timestamp":"2020-11-16 10:49:36", "tag_key":"rec_tag", "index":76}
7.10.2. 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:从标签中删除指定的前缀。
7.10.3. 其他 RFC5424 syslog 参数
以下参数适用于 RFC5424:
-
appName: APP-NAME 是一个自由文本字符串,用于标识发送日志的应用程序。必须为
RFC5424
指定。 -
msgID: MSGID 是一个用于标识消息类型的自由文本字符串。必须为
RFC5424
指定。 -
PROCID: PROCID 是一个自由文本字符串。该值的变化表示 syslog 报告不连续。必须为
RFC5424
指定。