2.6. OpenTelemetry 数据模型


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

重要

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

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

2.6.1. 转发和ingestion 协议

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

2.6.2. 语义约定

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

  • 容器日志
  • 集群节点日志
  • 集群节点 auditd 日志
  • Kubernetes 和 OpenShift API 服务器日志
  • OpenShift Virtual Network (OVN)日志

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

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

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

2.6.2.1. 日志条目结构

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

Applicable Sources 列指示每个字段应用到哪些日志源:

  • All: 此字段存在于所有日志中。
  • 容器 :此字段存在于 Kubernetes 容器日志中,包括应用程序和基础架构。
  • audit: 此字段存在于 Kubernetes、OpenShift API 和 OVN 日志中。
  • auditd :此字段存在于节点 auditd 日志中。
  • journal: 此字段存在于节点日志中。
Name适用的源注释

正文(body)

all

 

observedTimeUnixNano

all

 

timeUnixNano

all

 

severityText

容器, journal

 

属性

all

(可选)转发流特定属性时演示

2.6.2.2. 属性

日志条目根据其源包括一组资源、范围和日志属性,如下表中所述。

Location 列指定属性类型:

  • resource :指示资源属性
  • Scope :指示范围属性
  • log :指示日志属性

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

  • 流标签

    • 针对特定标签启用有效的过滤和查询。
    • 如果 Loki Operator 在配置中强制实施此属性,则可以被标记为 required
  • 结构化元数据

    • 允许详细过滤和存储键值对。
    • 允许用户在不需要 JSON 解析的情况下使用直接标签进行简化的查询。

使用 OTLP 时,用户可以通过标签直接过滤查询,而不是使用 JSON 解析,从而提高了查询的速度和效率。

Name位置适用的源存储(LokiStack)注释

log_source

resource

all

所需的流标签

(DEPRECATED) Compatibility 属性,包含与 openshift.log.source相同的信息

log_type

resource

all

所需的流标签

(DEPRECATED) Compatibility 属性,包含与 openshift.log.type相同的信息

kubernetes.container_name

resource

container

流标签

(DEPRECATED) Compatibility 属性,包含与 k8s.container.name相同的信息

kubernetes.host

resource

all

流标签

(DEPRECATED) Compatibility 属性,包含与 k8s.node.name相同的信息

kubernetes.namespace_name

resource

container

所需的流标签

(DEPRECATED) Compatibility 属性,包含与 k8s.namespace.name相同的信息

kubernetes.pod_name

resource

container

流标签

(DEPRECATED) Compatibility 属性,包含与 k8s.pod.name相同的信息

openshift.cluster_id

resource

all

 

(DEPRECATED) Compatibility 属性,包含与 openshift.cluster.uid相同的信息

level

log

容器, journal

 

(DEPRECATED) Compatibility 属性,包含与 severityText相同的信息

openshift.cluster.uid

resource

all

所需的流标签

 

openshift.log.source

resource

all

所需的流标签

 

openshift.log.type

resource

all

所需的流标签

 

openshift.labels.*

resource

all

结构化元数据

 

k8s.node.name

resource

all

流标签

 

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

audit

结构化元数据

 

k8s.audit.event.stage

log

audit

结构化元数据

 

k8s.audit.event.user_agent

log

audit

结构化元数据

 

k8s.audit.event.request.uri

log

audit

结构化元数据

 

k8s.audit.event.response.code

log

audit

结构化元数据

 

k8s.audit.event.annotation.*

log

audit

结构化元数据

 

k8s.audit.event.object_ref.resource

log

audit

结构化元数据

 

k8s.audit.event.object_ref.name

log

audit

结构化元数据

 

k8s.audit.event.object_ref.namespace

log

audit

结构化元数据

 

k8s.audit.event.object_ref.api_group

log

audit

结构化元数据

 

k8s.audit.event.object_ref.api_version

log

audit

结构化元数据

 

k8s.user.username

log

audit

结构化元数据

 

k8s.user.groups

log

audit

结构化元数据

 

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

结构化元数据

 
注意

标记为 Compatibility 属性 的属性支持最小的与 ViaQ 数据模型的兼容性。这些属性已弃用,作为兼容性层,以确保持续 UI 功能。这些属性将保持支持,直到日志记录 UI 在以后的版本中完全支持 OpenTelemetry 对应部分。

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

2.6.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.