第 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 安装。

流程

  1. 登录您的 OpenShift Container Platform 集群。
  2. openshift-logging 命名空间中安装 OpenShift Logging Operator 并切换到命名空间:

    切换到命名空间的命令示例

    oc project openshift-logging

  3. 创建名为 log-collectorserviceAccount,并将 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

  4. 在 Splunk 实例中生成 hecToken
  5. 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

  6. 创建一个基本的 'ClusterLogForwarder' 资源 YAML 文件,如下所示:

    'ClusterLogForwarder'resource YAML 文件示例

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: instance
      namespace: openshift-logging

    如需更多信息,请参阅创建日志转发器

  7. 使用 OpenShift Web 控制台或 OpenShift CLI 定义以下 ClusterLogForwarder 配置:

    1. 在 YAML 文件中将 log-collector 指定为 serviceAccount

      serviceAccount 配置示例

      serviceAccount:
        name: log-collector

    2. 配置 输入 以指定要转发的日志的类型和源。以下配置可让转发器从提供命名空间中的所有应用程序捕获日志:

      输入 配置示例

      inputs:
        - name: my-app-logs-input
          type: application
          application:
            includes:
              - namespace: my-developer-hub-namespace
            containerLimit:
              maxRecordsPerSecond: 100

      如需更多信息,请参阅 从特定 pod 转发应用程序日志

    3. 配置输出,以指定发送捕获的日志的位置。在这一步中,着重介绍 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

    4. 可选:过滤日志以只包含审计日志:

      过滤器 配置示例

      filters:
        - name: audit-logs-only
          type: drop
          drop:
            - test:
              - field: .message
                notMatches: isAuditLog

      如需更多信息,请参阅 OpenShift Container Platform 文档中的 按内容 过滤日志。

    5. 配置管道,将日志从特定输入路由到指定的输出。使用定义的输入和输出的名称为每个管道指定多个 inputRefsoutputRefs

      管道 配置示例

      pipelines:
        - name: my-app-logs-pipeline
          detectMultilineErrors: true
          inputRefs:
            - my-app-logs-input
          outputRefs:
            - splunk-receiver-application
          filterRefs:
            - audit-logs-only

  8. 运行以下命令以应用 ClusterLogForwarder 配置:

    应用 ClusterLogForwarder 配置示例

    oc apply -f <ClusterLogForwarder-configuration.yaml>

  9. 可选: 要降低日志丢失的风险,请使用以下选项配置 ClusterLogForwarder pod:

    1. 为日志收集器定义资源请求和限值,如下所示:

      收集器 配置示例

      collector:
        resources:
          requests:
            cpu: 250m
            memory: 64Mi
            ephemeral-storage: 250Mi
          limits:
            cpu: 500m
            memory: 128Mi
            ephemeral-storage: 500Mi

    2. 定义日志交付的 调优选项,包括 交付压缩RetryDuration。可以根据需要按输出应用调优。

      调优 配置示例

      tuning:
        delivery: AtLeastOnce 1
        compression: none
        minRetryDuration: 1s
        maxRetryDuration: 10s

      1
      AtLeastOnce 交付模式意味着,如果日志转发器崩溃或重启,任何在崩溃前读取的日志都会重新发送到其目的地。有些日志可能会在崩溃后重复。

验证

  1. 通过在 Splunk 仪表板中查看日志,以确认日志被转发到 Splunk 实例。
  2. 根据需要使用 OpenShift Container Platform 和 Splunk 日志排除任何问题。
Red Hat logoGithubRedditYoutube

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.