3.2. Logging 6.1


上下文: logging-6x-6.1

ClusterLogForwarder 自定义资源(CR)是日志收集和转发的核心配置点。

3.2.1. 输入和输出

输入指定要转发的日志源。日志记录提供内置输入类型:application, receiver, infrastructure, 和 audit,它们从集群的不同部分选择日志。您还可以根据命名空间或 pod 标签定义自定义输入,以微调日志选择。

输出定义发送日志的目的地。每个输出类型都有自己的一组配置选项,允许您自定义行为和身份验证设置。

3.2.2. 接收器输入类型

接收器输入类型可让日志记录系统接受来自外部源的日志。它支持两种接收日志的格式:httpsyslog

ReceiverSpec 定义接收器输入的配置。

3.2.3. 管道和过滤器

Pipelines 决定从输入到输出的日志流。管道由一个或多个输入 refs、输出 refs 和可选过滤器 refs 组成。过滤器可用于在管道中转换或丢弃日志消息。过滤器顺序很重要,随着顺序应用,较早的过滤器可能会阻止日志消息到达后续阶段。

3.2.4. Operator 行为

Cluster Logging Operator 根据 ClusterLogForwarder 资源的 managementState 字段管理收集器的部署和配置:

  • 当设置为 Managed (默认)时,Operator 会主动管理日志记录资源以匹配 spec 中定义的配置。
  • 当设置为 Unmanaged 时,Operator 不执行任何操作,供您手动管理日志记录组件。

3.2.5. 验证

日志记录包括广泛的验证规则和默认值,以确保平稳配置体验。ClusterLogForwarder 资源对必填字段、字段之间的依赖关系和输入值格式强制验证检查。为某些字段提供默认值,从而减少了常见场景中明确配置的需求。

3.2.6. 快速启动

OpenShift Logging 支持两种数据模型:

  • ViaQ (正式发布)
  • OpenTelemetry (技术预览)

您可以通过在 ClusterLogForwarder 中配置 lokiStack.dataModel 字段来根据要求选择其中任何一种数据模型。在将日志转发到 LokiStack 时,viaq 是默认的数据模型。

注意

在以后的 OpenShift Logging 版本中,默认的数据模型将从 ViaQ 改为 OpenTelemetry。

3.2.6.1. ViaQ 快速开始使用

要使用默认的 ViaQ 数据模型,请按照以下步骤执行:

先决条件

  • 集群管理员权限

流程

  1. 从 OperatorHub 安装 Red Hat OpenShift Logging Operator、Loki Operator 和 Cluster Observability Operator (COO)。
  2. openshift-logging 命名空间中创建 LokiStack 自定义资源(CR):

    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: logging-loki
      namespace: openshift-logging
    spec:
      managementState: Managed
      size: 1x.extra-small
      storage:
        schemas:
        - effectiveDate: '2024-10-01'
          version: v13
        secret:
          name: logging-loki-s3
          type: s3
      storageClassName: gp3-csi
      tenants:
        mode: openshift-logging
    注意

    确保事先创建 logging-loki-s3 secret。此 secret 的内容因使用的对象存储而异。如需更多信息,请参阅 Secret 和 TLS 配置。

  3. 为收集器创建服务帐户:

    $ oc create sa collector -n openshift-logging
  4. 允许收集器的服务帐户将数据写入 LokiStack CR:

    $ oc adm policy add-cluster-role-to-user logging-collector-logs-writer -z collector
    注意

    ClusterRole 资源是在 Cluster Logging Operator 安装过程中自动创建的,不需要手动创建。

  5. 允许收集器的服务帐户收集日志:

    $ oc project openshift-logging
    $ oc adm policy add-cluster-role-to-user collect-application-logs -z collector
    $ oc adm policy add-cluster-role-to-user collect-audit-logs -z collector
    $ oc adm policy add-cluster-role-to-user collect-infrastructure-logs -z collector
    注意

    示例将收集器绑定到所有三个角色(应用程序、基础架构和审计),但默认情况下,仅收集应用和基础架构日志。要收集审计日志,请更新 ClusterLogForwarder 配置使其包含它们。根据您的环境所需的特定日志类型,分配角色。

  6. 创建一个 UIPlugin CR,以启用 Observe 选项卡中的 Log 部分:

    apiVersion: observability.openshift.io/v1alpha1
    kind: UIPlugin
    metadata:
      name: logging
    spec:
      type: Logging
      logging:
        lokiStack:
          name: logging-loki
  7. 创建一个 ClusterLogForwarder CR 来配置日志转发:

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: collector
      namespace: openshift-logging
    spec:
      serviceAccount:
        name: collector
      outputs:
      - name: default-lokistack
        type: lokiStack
        lokiStack:
          authentication:
            token:
              from: serviceAccount
          target:
            name: logging-loki
            namespace: openshift-logging
        tls:
          ca:
            key: service-ca.crt
            configMapName: openshift-service-ca.crt
      pipelines:
      - name: default-logstore
        inputRefs:
        - application
        - infrastructure
        outputRefs:
        - default-lokistack
    注意

    dataModel 字段是可选的,默认保留未设置(dataModel: "")。这允许 Cluster Logging Operator (CLO) 自动选择数据模型。目前,当字段未设置时,CLO 会默认使用 ViaQ 模型,但这将在以后的版本中有所变化。指定 dataModel: ViaQ 可确保在默认设置有变化时配置仍然可以保持兼容。

验证

  • 验证日志是否在 OpenShift Web 控制台的 Observe 选项卡的 Log 部分可见。

3.2.6.2. 使用 OpenTelemetry 快速开始

重要

OpenTelemetry 协议(OTLP)输出日志转发器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

要配置 OTLP ingestion 并启用 OpenTelemetry 数据模型,请按照以下步骤执行:

先决条件

  • 集群管理员权限

流程

  1. 从 OperatorHub 安装 Red Hat OpenShift Logging Operator、Loki Operator 和 Cluster Observability Operator (COO)。
  2. openshift-logging 命名空间中创建 LokiStack 自定义资源(CR):

    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: logging-loki
      namespace: openshift-logging
    spec:
      managementState: Managed
      size: 1x.extra-small
      storage:
        schemas:
        - effectiveDate: '2024-10-01'
          version: v13
        secret:
          name: logging-loki-s3
          type: s3
      storageClassName: gp3-csi
      tenants:
        mode: openshift-logging
    注意

    确保事先创建 logging-loki-s3 secret。此 secret 的内容因使用的对象存储而异。如需更多信息,请参阅"Secrets 和 TLS 配置"。

  3. 为收集器创建服务帐户:

    $ oc create sa collector -n openshift-logging
  4. 允许收集器的服务帐户将数据写入 LokiStack CR:

    $ oc adm policy add-cluster-role-to-user logging-collector-logs-writer -z collector
    注意

    ClusterRole 资源是在 Cluster Logging Operator 安装过程中自动创建的,不需要手动创建。

  5. 允许收集器的服务帐户收集日志:

    $ oc project openshift-logging
    $ oc adm policy add-cluster-role-to-user collect-application-logs -z collector
    $ oc adm policy add-cluster-role-to-user collect-audit-logs -z collector
    $ oc adm policy add-cluster-role-to-user collect-infrastructure-logs -z collector
    注意

    示例将收集器绑定到所有三个角色(应用程序、基础架构和审计)。默认情况下,只收集应用程序和基础架构日志。要收集审计日志,请更新 ClusterLogForwarder 配置使其包含它们。根据您的环境所需的特定日志类型,分配角色。

  6. 创建一个 UIPlugin CR,以启用 Observe 选项卡中的 Log 部分:

    apiVersion: observability.openshift.io/v1alpha1
    kind: UIPlugin
    metadata:
      name: logging
    spec:
      type: Logging
      logging:
        lokiStack:
          name: logging-loki
  7. 创建一个 ClusterLogForwarder CR 来配置日志转发:

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: collector
      namespace: openshift-logging
      annotations:
        observability.openshift.io/tech-preview-otlp-output: "enabled" 1
    spec:
      serviceAccount:
        name: collector
      outputs:
      - name: loki-otlp
        type: lokiStack 2
        lokiStack:
          target:
            name: logging-loki
            namespace: openshift-logging
          dataModel: Otel 3
          authentication:
            token:
              from: serviceAccount
        tls:
          ca:
            key: service-ca.crt
            configMapName: openshift-service-ca.crt
      pipelines:
      - name: my-pipeline
        inputRefs:
        - application
        - infrastructure
        outputRefs:
        - loki-otlp
    1
    使用注解启用 Otel 数据模型,它是一个技术预览功能。
    2
    将输出类型定义为 lokiStack
    3
    指定 OpenTelemetry 数据模型。
    注意

    dataModelOtel 时,您无法使用 lokiStack.labelKeys。要在 dataModelOtel 时实现类似的功能,请参阅"为 OTLP 数据生成"配置 LokiStack。

验证

  • 进入 OpenShift web 控制台中的 Observe OpenShift Logging LokiStack Writes 来验证 OTLP 是否正常工作,并检查 Distributor - Structured Metadata
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.