×

输入和输出

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

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

接收器输入类型

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

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

管道和过滤器

管道确定日志从输入到输出的流程。管道由一个或多个输入引用、输出引用和可选过滤器引用组成。过滤器可用于转换或丢弃管道中的日志消息。过滤器的顺序很重要,因为它们是按顺序应用的,较早的过滤器可以阻止日志消息到达后期的阶段。

运算符行为

集群日志记录运算符根据ClusterLogForwarder资源的managementState字段管理收集器的部署和配置。

  • 设置为Managed(默认值)时,运算符会主动管理日志记录资源以匹配规范中定义的配置。

  • 设置为Unmanaged时,运算符不采取任何操作,允许您手动管理日志记录组件。

验证

日志记录包含广泛的验证规则和默认值,以确保流畅且无错误的配置体验。ClusterLogForwarder资源对必需字段、字段之间的依赖关系以及输入值的格式执行验证检查。为某些字段提供默认值,减少了在常见情况下需要显式配置的需要。

快速入门

OpenShift 日志记录支持两种数据模型

  • ViaQ(正式版)

  • OpenTelemetry(技术预览)

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

在未来的 OpenShift 日志记录版本中,默认数据模型将从 ViaQ 更改为 OpenTelemetry。

使用 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密钥。此密钥的内容因使用的对象存储而异。有关更多信息,请参阅密钥和 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资源在集群日志记录运算符安装期间自动创建,无需手动创建。

  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 以启用**观察**选项卡中的**日志**部分

    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: "")。这允许集群日志操作员 (CLO) 自动选择数据模型。目前,当该字段未设置时,CLO 默认使用 ViaQ 模型,但这在将来的版本中将会更改。指定dataModel: ViaQ可以确保如果默认值更改,配置仍然兼容。

验证
  • 验证在 OpenShift Web 控制台中**观察**选项卡的**日志**部分是否可见日志。

OpenTelemetry 快速入门

OpenTelemetry 协议 (OTLP) 输出日志转发器只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围

要配置 OTLP 摄取并启用 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密钥。此密钥的内容因所使用的对象存储而异。有关更多信息,请参见“密钥和 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资源在集群日志记录运算符安装期间自动创建,无需手动创建。

  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 以启用**观察**选项卡中的**日志**部分

    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 控制台中的**观察** → **OpenShift 日志记录** → **LokiStack** → **写入**并检查**分发器 - 结构化元数据**来验证 OTLP 是否正常运行。