4.2. 语义约定
此解决方案中的日志收集器收集以下日志流:
- 容器日志
- 集群节点日志
- 集群节点 auditd 日志
- Kubernetes 和 OpenShift API 服务器日志
- OpenShift Virtual Network (OVN) 日志
您可以根据 OpenTelemetry 语义属性定义的语义约定来转发这些流。OpenTelemetry 中的语义惯例将资源定义为生成遥测的实体的不可变表示,由属性标识。例如,容器中运行的进程包括 container_name
、cluster_id
、pod_name
、namespace
以及可能的 deployment
或 app_name
等属性。这些属性在资源对象下分组,这有助于减少重复并优化日志传输作为遥测数据。
除了资源属性外,日志也可以包含特定于检测库的范围属性,以及特定于每个日志条目的日志属性。这些属性提供有关每个日志条目的详细信息,并在存储中查询日志时增强过滤功能。
以下部分定义通常转发的属性。
4.2.1. 日志条目结构 复制链接链接已复制到粘贴板!
所有日志流都包括以下日志数据字段:
Applicable Sources 列指示每个字段应用到哪些日志源:
-
all
: 此字段存在于所有日志中。 -
container
:此字段存在于 Kubernetes 容器日志中,包括应用程序和基础架构。 -
audit
: 此字段存在于 Kubernetes、OpenShift API 和 OVN 日志中。 -
auditd
:此字段存在于节点 auditd 日志中。 -
journal
: 此字段存在于节点日志中。
Name | 适用的源 | 注释 |
---|---|---|
| all | |
| all | |
| all | |
| container, journal | |
| all | (可选)转发流特定属性时演示 |
4.2.2. 属性 复制链接链接已复制到粘贴板!
日志条目根据其源包括一组资源、范围和日志属性,如下表中所述。
Location 列指定属性类型:
-
resource
:指示资源属性 -
scope
: 指示范围属性 -
log
:指示日志属性
Storage 列指示属性是否使用默认 openshift-logging
模式存储在 LokiStack 中,并指定属性存储的位置:
流标签
:- 针对特定标签启用有效的过滤和查询。
-
如果 Loki Operator 在配置中强制实施此属性,则可以被标记为
required
。
结构化元数据
:- 允许详细过滤和存储键值对。
- 允许用户在不需要 JSON 解析的情况下使用直接标签进行简化的查询。
使用 OTLP 时,用户可以通过标签直接过滤查询,而不是使用 JSON 解析,从而提高了查询的速度和效率。
Name | 位置 | 适用的源 | 存储 (LokiStack) | 注释 |
---|---|---|---|---|
| resource | all | 所需的流标签 |
(DEPRECATED) Compatibility attribute, contains same information as |
| resource | all | 所需的流标签 |
(DEPRECATED) Compatibility attribute, contains same information as |
| resource | container | 流标签 |
(DEPRECATED) Compatibility attribute, contains same information as |
| resource | all | 流标签 |
(DEPRECATED) Compatibility attribute, contains same information as |
| resource | container | 所需的流标签 |
(DEPRECATED) Compatibility attribute, contains same information as |
| resource | container | 流标签 |
(DEPRECATED) Compatibility attribute, contains same information as |
| resource | all |
(DEPRECATED) Compatibility attribute, contains same information as | |
| log | container, journal |
(DEPRECATED) Compatibility attribute, contains same information as | |
| resource | all | 所需的流标签 | |
| resource | all | 所需的流标签 | |
| resource | all | 所需的流标签 | |
| resource | all | 结构化元数据 | |
| resource | all | 流标签 | |
| 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 | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| log | audit | 结构化元数据 | |
| resource | journal | 结构化元数据 | |
| resource | journal | 结构化元数据 | |
| resource | journal | 结构化元数据 | |
| resource | journal | 结构化元数据 | |
| resource | journal | 流标签 | |
| log | journal | 结构化元数据 | |
| log | journal | 结构化元数据 |
标记为 Compatibility attribute 的属性支持最小的与 ViaQ 数据模型的兼容性。这些属性已弃用,作为兼容性层,以确保持续 UI 功能。这些属性将保持支持,直到日志记录 UI 在以后的版本中完全支持 OpenTelemetry 对应部分。
当将属性名称持久化到存储中时,Loki 会更改属性名称。该名称将被变为小写,并且集合中的字符 (.
,/
,-
) 将被替换为下划线(_
)。例如,k8s.namespace.name
将变为 k8s_namespace_name
。