第 2 章 在 OpenShift Container Platform 上为 Developer Hub 配置审计日志
使用 OpenShift Container Platform Web 控制台将以下 OpenShift Container Platform 日志记录组件配置为使用 Developer Hub 的审计日志记录:
- 日志记录部署
- 配置日志记录环境,包括每个日志记录组件的 CPU 和内存限值。如需更多信息,请参阅 Red Hat OpenShift Container Platform - 配置日志记录部署。
- 日志记录收集器
-
配置
ClusterLogging
自定义资源(CR)中的spec.collection
小节,以使用支持的对日志收集器的修改,并从STDOUT
收集日志。如需更多信息,请参阅 Red Hat OpenShift Container Platform - 配置日志记录收集器。 - 日志转发
-
通过在
ClusterLogForwarder
CR 中指定输出和管道的组合,将日志发送到 OpenShift Container Platform 集群内部和外部的特定端点。如需更多信息,请参阅 Red Hat OpenShift Container Platform - 启用 JSON 日志转发 和 Red Hat OpenShift Container Platform - 配置日志转发。
2.1. 将 Red Hat Developer Hub 审计日志转发到 Splunk
您可以使用 Red Hat OpenShift Logging (OpenShift Logging) Operator 和 ClusterLogForwarder
实例从 Developer Hub 实例捕获流的审计日志,并将它们转发到与 Splunk 实例关联的 HTTPS 端点。
先决条件
- 您有一个在受支持的 OpenShift Container Platform 版本上运行的集群。
-
有具有
cluster-admin
权限的帐户。 - 您有一个 Splunk Cloud 帐户或 Splunk Enterprise 安装。
流程
- 登录您的 OpenShift Container Platform 集群。
在
openshift-logging
命名空间中安装 OpenShift Logging Operator 并切换到命名空间:切换到命名空间的命令示例
oc project openshift-logging
创建名为
log-collector
的serviceAccount
,并将collect-application-logs
角色绑定到serviceAccount
:创建
serviceAccount
的命令示例oc create sa log-collector
将角色绑定到
serviceAccount
的命令示例oc create clusterrolebinding log-collector --clusterrole=collect-application-logs --serviceaccount=openshift-logging:log-collector
-
在 Splunk 实例中生成
hecToken
。 在
openshift-logging
命名空间中创建 key/value secret 并验证 secret:使用
hecToken
创建键/值 secret 的命令示例oc -n openshift-logging create secret generic splunk-secret --from-literal=hecToken=<HEC_Token>
验证 secret 的命令示例
oc -n openshift-logging get secret/splunk-secret -o yaml
创建一个基本的 'ClusterLogForwarder' 资源 YAML 文件,如下所示:
'ClusterLogForwarder'resource YAML 文件示例
apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance namespace: openshift-logging
如需更多信息,请参阅创建日志转发器。
使用 OpenShift Web 控制台或 OpenShift CLI 定义以下
ClusterLogForwarder
配置:在 YAML 文件中将
log-collector
指定为serviceAccount
:serviceAccount
配置示例serviceAccount: name: log-collector
配置
输入
以指定要转发的日志的类型和源。以下配置可让转发器从提供命名空间中的所有应用程序捕获日志:输入
配置示例inputs: - name: my-app-logs-input type: application application: includes: - namespace: my-developer-hub-namespace containerLimit: maxRecordsPerSecond: 100
如需更多信息,请参阅 从特定 pod 转发应用程序日志。
配置输出,以指定发送捕获的日志的位置。在这一步中,着重介绍 mvapich
类型
。如果 Splunk 端点使用自签名 TLS 证书(不推荐)或使用 Secret 提供证书链,您可以使用tls.insecureSkipVerify
选项。输出
配置示例outputs: - name: splunk-receiver-application type: splunk splunk: authentication: token: key: hecToken secretName: splunk-secret index: main url: 'https://my-splunk-instance-url' rateLimit: maxRecordsPerSecond: 250
如需更多信息,请参阅 OpenShift Container Platform 文档中的 将日志转发到 Splunk。
可选:过滤日志以只包含审计日志:
过滤器
配置示例filters: - name: audit-logs-only type: drop drop: - test: - field: .message notMatches: isAuditLog
如需更多信息,请参阅 OpenShift Container Platform 文档中的 按内容 过滤日志。
配置管道,将日志从特定输入路由到指定的输出。使用定义的输入和输出的名称为每个管道指定多个
inputRefs
和outputRefs
:管道
配置示例pipelines: - name: my-app-logs-pipeline detectMultilineErrors: true inputRefs: - my-app-logs-input outputRefs: - splunk-receiver-application filterRefs: - audit-logs-only
运行以下命令以应用
ClusterLogForwarder
配置:应用
ClusterLogForwarder
配置示例oc apply -f <ClusterLogForwarder-configuration.yaml>
可选: 要降低日志丢失的风险,请使用以下选项配置
ClusterLogForwarder
pod:为日志收集器定义资源请求和限值,如下所示:
收集器
配置示例collector: resources: requests: cpu: 250m memory: 64Mi ephemeral-storage: 250Mi limits: cpu: 500m memory: 128Mi ephemeral-storage: 500Mi
定义日志交付的
调优选项
,包括交付
、压缩
和RetryDuration
。可以根据需要按输出应用调优。调优
配置示例tuning: delivery: AtLeastOnce 1 compression: none minRetryDuration: 1s maxRetryDuration: 10s
- 1
AtLeastOnce
交付模式意味着,如果日志转发器崩溃或重启,任何在崩溃前读取的日志都会重新发送到其目的地。有些日志可能会在崩溃后重复。
验证
- 通过在 Splunk 仪表板中查看日志,以确认日志被转发到 Splunk 实例。
- 根据需要使用 OpenShift Container Platform 和 Splunk 日志排除任何问题。