×

本文档概述了 Red Hat OpenShift Logging 与 Logging 6.1 的 OpenTelemetry 支持的协议和语义约定。

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

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

转发和摄取协议

Red Hat OpenShift Logging 使用 OTLP 规范 将日志收集并转发到 OpenTelemetry 端点。OTLP 对遥测数据进行编码、传输和交付。您还可以部署 Loki 存储,它提供一个 OTLP 端点来摄取日志流。本文档定义了从各种 OpenShift 集群源收集的日志的语义约定。

语义约定

此解决方案中的日志收集器收集以下日志流:

  • 容器日志

  • 集群节点日志

  • 集群节点 auditd 日志

  • Kubernetes 和 OpenShift API 服务器日志

  • OpenShift 虚拟网络 (OVN) 日志

您可以根据 OpenTelemetry 语义属性定义的语义约定转发这些流。OpenTelemetry 中的语义约定将资源定义为生成遥测的实体的不可变表示,由属性标识。例如,在容器中运行的进程包含诸如container_namecluster_idpod_namenamespace以及可能deploymentapp_name之类的属性。这些属性分组在资源对象下,有助于减少重复并优化日志作为遥测数据的传输。

除了资源属性外,日志还可能包含特定于检测库的范围属性和特定于每个日志条目的日志属性。这些属性提供了有关每个日志条目的更多详细信息,并在查询存储中的日志时增强了过滤功能。

以下部分定义了通常转发的属性。

日志条目结构

所有日志流都包含以下 日志数据 字段

“适用来源”列指明每个字段适用的日志来源。

  • all:此字段存在于所有日志中。

  • container:此字段存在于 Kubernetes 容器日志中,包括应用程序和基础设施。

  • audit:此字段存在于 Kubernetes、OpenShift API 和 OVN 日志中。

  • auditd:此字段存在于节点 auditd 日志中。

  • journal:此字段存在于节点日志中。

名称 适用来源 注释

主体

全部

观察时间(Unix 纳秒)

全部

时间(Unix 纳秒)

全部

严重性文本

容器,日志

属性

全部

(可选)转发流特定属性时出现。

属性

日志条目包含一组基于其来源的资源、范围和日志属性,如下表所述。

“**位置**”列指定属性的类型

  • resource:表示资源属性

  • scope:表示范围属性

  • log:表示日志属性

“**存储**”列指示属性是否使用默认的openshift-logging模式存储在 LokiStack 中,并指定属性的存储位置。

  • 流标签:

    • 支持基于特定标签的高效过滤和查询。

    • 如果 Loki Operator 在配置中强制执行此属性,则可以将其标记为required

  • 结构化元数据:

    • 允许对键值对进行详细过滤和存储。

    • 使用户能够使用直接标签进行简化的查询,而无需进行 JSON 解析。

使用 OTLP,用户可以直接按标签过滤查询,而无需使用 JSON 解析,从而提高查询速度和效率。

名称 位置 适用来源 存储(LokiStack) 注释

log_source

resource

全部

必需的流标签

**(已弃用)** 兼容性属性,包含与openshift.log.source相同的信息

log_type

resource

全部

必需的流标签

**(已弃用)** 兼容性属性,包含与openshift.log.type相同的信息

kubernetes.container_name

resource

container

流标签

**(已弃用)** 兼容性属性,包含与k8s.container.name相同的信息

kubernetes.host

resource

全部

流标签

**(已弃用)** 兼容性属性,包含与k8s.node.name相同的信息

kubernetes.namespace_name

resource

container

必需的流标签

**(已弃用)** 兼容性属性,包含与k8s.namespace.name相同的信息

kubernetes.pod_name

resource

container

流标签

**(已弃用)** 兼容性属性,包含与k8s.pod.name相同的信息

openshift.cluster_id

resource

全部

**(已弃用)** 兼容性属性,包含与openshift.cluster.uid相同的信息

级别

log

容器,日志

**(已弃用)** 兼容性属性,包含与severityText相同的信息

openshift.cluster.uid

resource

全部

必需的流标签

openshift.log.source

resource

全部

必需的流标签

openshift.log.type

resource

全部

必需的流标签

openshift.labels.*

resource

全部

结构化元数据

k8s.node.name

resource

全部

流标签

k8s.namespace.name

resource

container

必需的流标签

k8s.container.name

resource

container

流标签

k8s.pod.labels.*

resource

container

结构化元数据

k8s.pod.name

resource

container

流标签

k8s.pod.uid

resource

container

结构化元数据

k8s.cronjob.name

resource

container

流标签

根据 Pod 的创建者有条件地转发

k8s.daemonset.name

resource

container

流标签

根据 Pod 的创建者有条件地转发

k8s.deployment.name

resource

container

流标签

根据 Pod 的创建者有条件地转发

k8s.job.name

resource

container

流标签

根据 Pod 的创建者有条件地转发

k8s.replicaset.name

resource

container

结构化元数据

根据 Pod 的创建者有条件地转发

k8s.statefulset.name

resource

container

流标签

根据 Pod 的创建者有条件地转发

log.iostream

log

container

结构化元数据

k8s.audit.event.level

log

审计

结构化元数据

k8s.audit.event.stage

log

审计

结构化元数据

k8s.audit.event.user_agent

log

审计

结构化元数据

k8s.audit.event.request.uri

log

审计

结构化元数据

k8s.audit.event.response.code

log

审计

结构化元数据

k8s.audit.event.annotation.*

log

审计

结构化元数据

k8s.audit.event.object_ref.resource

log

审计

结构化元数据

k8s.audit.event.object_ref.name

log

审计

结构化元数据

k8s.audit.event.object_ref.namespace

log

审计

结构化元数据

k8s.audit.event.object_ref.api_group

log

审计

结构化元数据

k8s.audit.event.object_ref.api_version

log

审计

结构化元数据

k8s.user.username

log

审计

结构化元数据

k8s.user.groups

log

审计

结构化元数据

process.executable.name

resource

journal

结构化元数据

process.executable.path

resource

journal

结构化元数据

process.command_line

resource

journal

结构化元数据

process.pid

resource

journal

结构化元数据

service.name

resource

journal

流标签

systemd.t.*

log

journal

结构化元数据

systemd.u.*

log

journal

结构化元数据

标记为“**兼容性属性**”的属性支持与 ViaQ 数据模型的最低限度的向后兼容性。这些属性已弃用,并作为兼容性层以确保 UI 功能的持续性。这些属性将继续受支持,直到日志记录 UI 在将来的版本中完全支持 OpenTelemetry 对应项。

Loki 在将属性持久化到存储时会更改属性名称。名称将转换为小写,并且集合中所有字符:(./-)将替换为下划线(_)。例如,k8s.namespace.name 将变为 k8s_namespace_name