1.6. 升级日志收集和转发


日志转发和转发配置现在在新的 API 下指定,这是 observability.openshift.io API 组的一部分。

注意

Vector 是唯一支持的收集器实现。

要升级 Red Hat OpenShift Logging Operator,请按照以下步骤执行:

  1. 通过执行 "Changes to Cluster logging and forwarding in Logging 6" 中列出的更改来更新日志和转发配置。
  2. 更新 Red Hat OpenShift Logging Operator。

日志转发和转发配置现在在新的 API 下指定,这是 observability.openshift.io API 组的一部分。以下小节重点介绍了与旧 API 资源的不同。

注意

Vector 是唯一支持的收集器实现。

1.6.1.1. 管理、资源分配和工作负载调度

用于管理状态的配置、资源请求和限值、容限和节点选择现在是新的 ClusterLogForwarder API 的一部分。

Logging 5.x 配置

apiVersion: "logging.openshift.io/v1"
kind: "ClusterLogging"
spec:
  managementState: "Managed"
  collection:
    resources:
      limits: {}
      requests: {}
    nodeSelector: {}
    tolerations: {}
Copy to Clipboard Toggle word wrap

日志记录 6 配置

apiVersion: "observability.openshift.io/v1"
kind: ClusterLogForwarder
spec:
  managementState: Managed
  collector:
    resources:
      limits: {}
      requests: {}
    nodeSelector: {}
    tolerations: {}
Copy to Clipboard Toggle word wrap

1.6.1.2. 输入规格

输入规格是 ClusterLogForwarder 规格的可选部分。管理员可以继续使用预定义的值 应用程序infrastructureaudit 来收集这些源。

命名空间和容器包含和排除项已整合到一个字段中。

5.x 应用程序带有命名空间和容器输入包括和排除

apiVersion: "logging.openshift.io/v1"
kind: ClusterLogForwarder
spec:
  inputs:
   - name: application-logs
     type: application
     application:
       namespaces:
       - foo
       - bar
       includes:
       - namespace: my-important
         container: main
       excludes:
       - container: too-verbose
Copy to Clipboard Toggle word wrap

6.x 带有命名空间和容器的应用程序输入包括和排除

apiVersion: "observability.openshift.io/v1"
kind: ClusterLogForwarder
spec:
  inputs:
   - name: application-logs
     type: application
     application:
       includes:
       - namespace: foo
       - namespace: bar
       - namespace: my-important
         container: main
       excludes:
       - container: too-verbose
Copy to Clipboard Toggle word wrap

注意

"应用程序"、"infrastructure"和"audit"是保留词语,在定义输入时不能用作名称。

对输入接收器的更改包括:

  • 在接收器级别明确配置类型。
  • 端口设置移到接收器级别。

5.x 输入接收器

apiVersion: "logging.openshift.io/v1"
kind: ClusterLogForwarder
spec:
  inputs:
  - name: an-http
    receiver:
      http:
        port: 8443
        format: kubeAPIAudit
  - name: a-syslog
    receiver:
      type: syslog
      syslog:
        port: 9442
Copy to Clipboard Toggle word wrap

6.x 输入接收器

apiVersion: "observability.openshift.io/v1"
kind: ClusterLogForwarder
spec:
  inputs:
  - name: an-http
    type: receiver
    receiver:
      type: http
      port: 8443
      http:
        format: kubeAPIAudit
  - name: a-syslog
    type: receiver
    receiver:
      type: syslog
      port: 9442
Copy to Clipboard Toggle word wrap

1.6.1.3. 输出规格

输出规格的高级更改包括:

  • URL 设置移到每个输出类型规格中。
  • 调整参数移到每个输出类型规格中。
  • 将 TLS 配置与身份验证分离.
  • TLS 和身份验证的密钥和 secret/config 映射明确配置。

1.6.1.4. secret 和 TLS 配置

现在,每个输出都会将 secret 和 TLS 配置划分为身份验证和 TLS 配置。它们必须在规格中明确定义,而不依赖于管理员使用可识别的密钥定义 secret。升级 TLS 和授权配置需要管理员了解之前识别的密钥才能继续使用现有的 secret。本节中的示例演示了如何配置 ClusterLogForwarder secret 以转发到现有的红帽受管日志存储解决方案。

使用服务帐户令牌和配置映射记录 6.x 输出配置

...
spec:
  outputs:
  - lokiStack
      authentication:
        token:
          from: serviceAccount
      target:
        name: logging-loki
        namespace: openshift-logging
    name: my-lokistack
    tls:
      ca:
        configMapName: openshift-service-ca.crt
        key: service-ca.crt
    type: lokiStack
...
Copy to Clipboard Toggle word wrap

使用 secret 日志记录 6.x 输出身份验证和 TLS 配置

...
spec:
  outputs:
  - name: my-output
    type: http
    http:
      url: https://my-secure-output:8080
    authentication:
      password:
        key: pass
        secretName: my-secret
      username:
        key: user
        secretName: my-secret
    tls:
      ca:
        key: ca-bundle.crt
        secretName: collector
      certificate:
        key: tls.crt
        secretName: collector
      key:
        key: tls.key
        secretName: collector
...
Copy to Clipboard Toggle word wrap

1.6.1.5. 过滤和管道配置

之前的版本中的所有管道属性都已转换为过滤器。单个过滤器在 filters spec 中定义,并由管道引用。

5.x 过滤器

...
spec:
  pipelines:
  - name: app-logs
    detectMultilineErrors: true
    parse: json
    labels:
      <key>: <value>
...
Copy to Clipboard Toggle word wrap

6.x 过滤器和管道规格

...
spec:
  filters:
  - name: my-multiline
    type: detectMultilineException
  - name: my-parse
    type: parse
  - name: my-labels
    type: openshiftLabels
    openshiftLabels:
      <key>: <label>
  pipelines:
  - name: app-logs
    filterRefs:
    - my-multiline
    - my-parse
    - my-labels
...
Copy to Clipboard Toggle word wrap

注意

drop,Prune, 和 KubeAPIAudit 过滤器保持不变。

1.6.1.6. 验证和状态

现在,当创建或更新资源时,大多数验证都会强制提供即时反馈。与之前的版本不同,所有验证在创建后都需要检查资源状态位置。在创建或更新时,一些验证仍然会在资源创建后进行。

ClusterLogForwarder.observability.openshift.io 资源的实例必须满足以下条件,然后才能部署日志收集器:

  • 资源状态条件:Authorized, Valid, Ready
  • Spec 验证:过滤器、输入、输出、管道

所有 必须评估为 True 的状态值。

1.6.2. 更新 Red Hat OpenShift Logging Operator

Red Hat OpenShift Logging Operator 不提供从 Logging 5.x 到 Logging 6.x 的自动升级,因为可以配置日志记录的不同组合。您必须安装所有不同的操作器,以单独管理日志记录。

您可以通过在 OpenShift Container Platform Web 控制台中更改订阅频道或卸载它来更新 Red Hat OpenShift Logging Operator。以下流程演示了通过更改 OpenShift Container Platform Web 控制台中的订阅频道来更新 Red Hat OpenShift Logging Operator。

重要

迁移时,所有尚未压缩的日志都将由 Vector 重新处理。重新处理可能会导致以下问题:

  • 在迁移过程中重复的日志。
  • Log storage 中有太多的请求接收日志,或请求达到速率限制。
  • 由于收集器中所有旧日志读取和处理,因此对磁盘和性能的影响。
  • 对 Kube API 的影响。
  • 在处理所有旧日志前,向量使用内存和 CPU 的峰值。每个节点可以有多个 GB。

先决条件

  • 您已将日志收集和转发配置更新至 observability.openshift.io API。
  • 有管理员权限。
  • 您可以访问 OpenShift Container Platform Web 控制台,并查看 Administrator 视角。

流程

  1. 运行以下命令来创建服务帐户:

    注意

    如果以前的日志转发器部署在命名空间 openshift-logging 中,名为 instance,则 Operator 的早期版本会创建一个 logcollector 服务帐户。当您删除集群日志记录时,此服务帐户会被删除。因此,您需要创建新服务帐户。所有其他服务帐户都会被保留。并可在 Logging 6.x 中使用。

    $ oc create sa logging-collector -n openshift-logging
    Copy to Clipboard Toggle word wrap
  2. 为服务帐户提供所需的 RBAC 权限。

    1. ClusterRole 角色绑定到服务帐户,以便能够将日志写入 Red Hat LokiStack

      $ oc adm policy add-cluster-role-to-user logging-collector-logs-writer -z logging-collector -n openshift-logging
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令,分配收集和转发应用程序日志的权限:

      $ oc adm policy add-cluster-role-to-user collect-application-logs -z logging-collector -n openshift-logging
      Copy to Clipboard Toggle word wrap
    3. 运行以下命令,分配收集和转发审计日志的权限:

      $ oc adm policy add-cluster-role-to-user collect-audit-logs -z logging-collector -n openshift-logging
      Copy to Clipboard Toggle word wrap
    4. 运行以下命令,分配收集和转发基础架构日志的权限:

       $ oc adm policy add-cluster-role-to-user collect-infrastructure-log -z logging-collector -n openshift-logging
      Copy to Clipboard Toggle word wrap
  3. 将 Vector checkpoints 移到新路径。

    Logging v5 中的 Vector checkpoints 位于路径 /var/lib/vector/input*/checkpoints.json 中。将这些检查点移到路径 /var/lib/vector/<namespace>/<clusterlogforwarder cr name> firmware 中。以下示例使用 openshift-logging 作为命名空间和 收集器 作为 ClusterForwarder 自定义资源名称。

    $ ns="openshift-logging"
    $ cr="collector"
    $ for node in $(oc get nodes -o name); do oc debug $node -- chroot /host /bin/bash -c "mkdir -p /var/lib/vector/$ns/$cr" ; done
    $ for node in $(oc get nodes -o name); do oc debug $node -- chroot /host /bin/bash -c "chmod -R 755 /var/lib/vector/$ns" ; done
    $ for node in $(oc get nodes -o name); do echo "### $node ###"; oc debug $node -- chroot /host /bin/bash -c "cp -Ra /var/lib/vector/input* /var/lib/vector/$ns/$cr/"; done
    Copy to Clipboard Toggle word wrap
  4. 使用 OpenShift Container Platform Web 控制台更新 Red Hat OpenShift Logging Operator。

    1. 导航到 Operators Installed Operators
    2. 选择 openshift-logging 项目。
    3. Red Hat OpenShift Logging Operator。
    4. Subscription。在 Subscription details 部分,点 Update channel 链接。
    5. Change Subscription Update Channel 窗口中,选择更新频道、stable-6.x,然后点 Save。请注意 cluster-logging.v6.y.z 版本。

      重要

      仅更新至 N+2 版本,其中 N 是您的当前版本。例如,如果您要从 Logging 5.8 升级,请选择 stable-6.0 作为更新频道。不支持升级到早于两个版本的版本。

    6. 等待几秒钟,然后进入 Operators Installed Operators 来验证 Red Hat OpenShift Logging Operator 版本是否与最新的 cluster-logging.v6.y.z 版本匹配。
    7. Operators Installed Operators 页面中,等待 Status 字段报告 Succeeded

      现有 Logging v5 资源将继续运行,但不再由 Operator 管理。在创建新资源后,可以移除这些非受管资源。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat