Red Hat OpenShift Logging 使用 OTLP 规范 将日志收集并转发到 OpenTelemetry 端点。OTLP 对遥测数据进行编码、传输和交付。您还可以部署 Loki 存储,它提供一个 OTLP 端点来摄取日志流。本文档定义了从各种 OpenShift 集群源收集的日志的语义约定。
此解决方案中的日志收集器收集以下日志流:
容器日志
集群节点日志
集群节点 auditd 日志
Kubernetes 和 OpenShift API 服务器日志
OpenShift 虚拟网络 (OVN) 日志
您可以根据 OpenTelemetry 语义属性定义的语义约定转发这些流。OpenTelemetry 中的语义约定将资源定义为生成遥测的实体的不可变表示,由属性标识。例如,在容器中运行的进程包含诸如container_name
、cluster_id
、pod_name
、namespace
以及可能deployment
或app_name
之类的属性。这些属性分组在资源对象下,有助于减少重复并优化日志作为遥测数据的传输。
除了资源属性外,日志还可能包含特定于检测库的范围属性和特定于每个日志条目的日志属性。这些属性提供了有关每个日志条目的更多详细信息,并在查询存储中的日志时增强了过滤功能。
以下部分定义了通常转发的属性。
所有日志流都包含以下 日志数据 字段
“适用来源”列指明每个字段适用的日志来源。
all
:此字段存在于所有日志中。
container
:此字段存在于 Kubernetes 容器日志中,包括应用程序和基础设施。
audit
:此字段存在于 Kubernetes、OpenShift API 和 OVN 日志中。
auditd
:此字段存在于节点 auditd 日志中。
journal
:此字段存在于节点日志中。
名称 | 适用来源 | 注释 |
---|---|---|
|
全部 |
|
|
全部 |
|
|
全部 |
|
|
容器,日志 |
|
|
全部 |
(可选)转发流特定属性时出现。 |
日志条目包含一组基于其来源的资源、范围和日志属性,如下表所述。
“**位置**”列指定属性的类型
resource
:表示资源属性
scope
:表示范围属性
log
:表示日志属性
“**存储**”列指示属性是否使用默认的openshift-logging
模式存储在 LokiStack 中,并指定属性的存储位置。
流标签
:
支持基于特定标签的高效过滤和查询。
如果 Loki Operator 在配置中强制执行此属性,则可以将其标记为required
。
结构化元数据
:
允许对键值对进行详细过滤和存储。
使用户能够使用直接标签进行简化的查询,而无需进行 JSON 解析。
使用 OTLP,用户可以直接按标签过滤查询,而无需使用 JSON 解析,从而提高查询速度和效率。
名称 | 位置 | 适用来源 | 存储(LokiStack) | 注释 |
---|---|---|---|---|
|
resource |
全部 |
必需的流标签 |
**(已弃用)** 兼容性属性,包含与 |
|
resource |
全部 |
必需的流标签 |
**(已弃用)** 兼容性属性,包含与 |
|
resource |
container |
流标签 |
**(已弃用)** 兼容性属性,包含与 |
|
resource |
全部 |
流标签 |
**(已弃用)** 兼容性属性,包含与 |
|
resource |
container |
必需的流标签 |
**(已弃用)** 兼容性属性,包含与 |
|
resource |
container |
流标签 |
**(已弃用)** 兼容性属性,包含与 |
|
resource |
全部 |
**(已弃用)** 兼容性属性,包含与 |
|
|
log |
容器,日志 |
**(已弃用)** 兼容性属性,包含与 |
|
|
resource |
全部 |
必需的流标签 |
|
|
resource |
全部 |
必需的流标签 |
|
|
resource |
全部 |
必需的流标签 |
|
|
resource |
全部 |
结构化元数据 |
|
|
resource |
全部 |
流标签 |
|
|
resource |
container |
必需的流标签 |
|
|
resource |
container |
流标签 |
|
|
resource |
container |
结构化元数据 |
|
|
resource |
container |
流标签 |
|
|
resource |
container |
结构化元数据 |
|
|
resource |
container |
流标签 |
根据 Pod 的创建者有条件地转发 |
|
resource |
container |
流标签 |
根据 Pod 的创建者有条件地转发 |
|
resource |
container |
流标签 |
根据 Pod 的创建者有条件地转发 |
|
resource |
container |
流标签 |
根据 Pod 的创建者有条件地转发 |
|
resource |
container |
结构化元数据 |
根据 Pod 的创建者有条件地转发 |
|
resource |
container |
流标签 |
根据 Pod 的创建者有条件地转发 |
|
log |
container |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
log |
审计 |
结构化元数据 |
|
|
resource |
journal |
结构化元数据 |
|
|
resource |
journal |
结构化元数据 |
|
|
resource |
journal |
结构化元数据 |
|
|
resource |
journal |
结构化元数据 |
|
|
resource |
journal |
流标签 |
|
|
log |
journal |
结构化元数据 |
|
|
log |
journal |
结构化元数据 |
标记为“**兼容性属性**”的属性支持与 ViaQ 数据模型的最低限度的向后兼容性。这些属性已弃用,并作为兼容性层以确保 UI 功能的持续性。这些属性将继续受支持,直到日志记录 UI 在将来的版本中完全支持 OpenTelemetry 对应项。 |
Loki 在将属性持久化到存储时会更改属性名称。名称将转换为小写,并且集合中所有字符:(.
,/
,-
)将替换为下划线(_
)。例如,k8s.namespace.name
将变为 k8s_namespace_name
。