This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第 9 章 日志收集和转发
9.1. 关于日志收集和转发 复制链接链接已复制到粘贴板!
Red Hat OpenShift Logging Operator 根据 ClusterLogForwarder 资源规格部署一个收集器。此 Operator 支持两个收集器选项:旧的 Fluentd 收集器和 Vector 收集器。
Fluentd 已被弃用,计划在以后的发行版本中删除。红帽将在当前发行生命周期中将提供对这个功能的 bug 修复和支持,但此功能将不再获得改进。作为 Fluentd 的替代选择,您可以使用 Vector。
9.1.1. 日志集合 复制链接链接已复制到粘贴板!
日志收集器是一个守护进程集,它将 Pod 部署到每个 OpenShift Container Platform 节点,以收集容器和节点日志。
默认情况下,日志收集器使用以下源:
- 由来自操作系统、容器运行时和 OpenShift Container Platform 的 journald 日志消息生成的系统和基础架构日志。
-
/var/log/containers/*.log用于所有容器日志
如果您将日志收集器配置为收集审计日志,它会从 /var/log/audit/audit.log 收集它们。
日志收集器从这些源收集日志,并根据日志记录配置在内部或外部转发它们。
9.1.1.1. 日志收集器类型 复制链接链接已复制到粘贴板!
Vector 是一个日志收集器,作为日志记录的 Fluentd 的一个替代方案。
您可以通过修改 ClusterLogging 自定义资源(CR) collection 规格来配置集群使用的日志记录收集器类型:
将 Vector 配置为收集器的 ClusterLogging CR 示例
9.1.1.2. 日志收集限制 复制链接链接已复制到粘贴板!
容器运行时提供少许信息来标识日志消息的来源,如项目、容器名称和容器 ID。这些信息不足以区分日志的来源。如果在日志收集器开始处理日志之前删除了具有指定名称和项目的 Pod,则来自 API 服务器的信息(如标签和注解)可能会不可用。可能没有办法区分来自名称相似的 Pod 和项目的日志消息,也无法追溯日志的来源。这种限制意味着日志收集和规范化被视为 最佳工作。
可用的容器运行时提供少许信息来标识日志消息来源,无法确保唯一的个别日志消息,也不能保证可以追溯这些消息的来源。
9.1.1.3. 按类型划分的日志收集器功能 复制链接链接已复制到粘贴板!
| 功能 | Fluentd | Vector |
|---|---|---|
| 应用程序容器日志 | ✓ | ✓ |
| 特定于应用程序的路由 | ✓ | ✓ |
| 命名空间划分应用程序特定路由 | ✓ | ✓ |
| Infra 容器日志 | ✓ | ✓ |
| Infra 日志 | ✓ | ✓ |
| kube API 审计日志 | ✓ | ✓ |
| OpenShift API 审计日志 | ✓ | ✓ |
| 打开虚拟网络 (OVN) 审计日志 | ✓ | ✓ |
| 功能 | Fluentd | Vector |
|---|---|---|
| Elasticsearch 证书 | ✓ | ✓ |
| Elasticsearch 用户名/密码 | ✓ | ✓ |
| Cloudwatch keys | ✓ | ✓ |
| Cloudwatch STS | ✓ | ✓ |
| Kafka 证书 | ✓ | ✓ |
| Kafka 用户名/密码 | ✓ | ✓ |
| Kafka SASL | ✓ | ✓ |
| Loki bearer 令牌 | ✓ | ✓ |
| 功能 | Fluentd | Vector |
|---|---|---|
| ViaQ 数据模型 - 应用程序 | ✓ | ✓ |
| ViaQ 数据模型 - infra | ✓ | ✓ |
| ViaQ 数据模型 - infra(journal) | ✓ | ✓ |
| ViaQ 数据模型 - Linux 审计 | ✓ | ✓ |
| ViaQ 数据模型 - kube-apiserver 审计 | ✓ | ✓ |
| ViaQ 数据模型 - OpenShift API 审计 | ✓ | ✓ |
| ViaQ 数据模型 - OVN | ✓ | ✓ |
| loglevel Normalization | ✓ | ✓ |
| JSON 解析 | ✓ | ✓ |
| 结构化索引 | ✓ | ✓ |
| 多行错误检测 | ✓ | ✓ |
| multicontainer/ split 索引 | ✓ | ✓ |
| Flatten 标签 | ✓ | ✓ |
| CLF 静态标签 | ✓ | ✓ |
| 功能 | Fluentd | Vector |
|---|---|---|
| Fluentd readlinelimit | ✓ | |
| Fluentd 缓冲 | ✓ | |
| - chunklimitsize | ✓ | |
| - totallimitsize | ✓ | |
| - overflowaction | ✓ | |
| - flushthreadcount | ✓ | |
| - flushmode | ✓ | |
| - flushinterval | ✓ | |
| - retrywait | ✓ | |
| - retrytype | ✓ | |
| - retrymaxinterval | ✓ | |
| - retrytimeout | ✓ |
| 功能 | Fluentd | Vector |
|---|---|---|
| 指标 | ✓ | ✓ |
| Dashboard | ✓ | ✓ |
| 警报 | ✓ | ✓ |
| 功能 | Fluentd | Vector |
|---|---|---|
| 全局代理支持 | ✓ | ✓ |
| x86 支持 | ✓ | ✓ |
| ARM 支持 | ✓ | ✓ |
| PowerPC 支持 | ✓ | ✓ |
| IBM Z 支持 | ✓ | ✓ |
| IPv6 支持 | ✓ | ✓ |
| 日志事件缓冲 | ✓ | |
| 断开连接的集群 | ✓ | ✓ |
9.1.1.4. 收集器输出 复制链接链接已复制到粘贴板!
支持以下收集器输出:
| 功能 | Fluentd | Vector |
|---|---|---|
| Elasticsearch v6-v8 | ✓ | ✓ |
| Fluent 转发 | ✓ | |
| Syslog RFC3164 | ✓ | ✓ (Logging 5.7+) |
| Syslog RFC5424 | ✓ | ✓ (Logging 5.7+) |
| Kafka | ✓ | ✓ |
| Cloudwatch | ✓ | ✓ |
| Cloudwatch STS | ✓ | ✓ |
| Loki | ✓ | ✓ |
| HTTP | ✓ | ✓ (Logging 5.7+) |
| Google Cloud Logging | ✓ | ✓ |
| Splunk | ✓ (Logging 5.6+) |
9.1.2. 日志转发 复制链接链接已复制到粘贴板!
管理员可以创建 ClusterLogForwarder 资源,以指定要收集哪些日志、它们的转换方式以及它们被转发到的位置。
ClusterLogForwarder 资源可用于将容器、基础架构和审计日志转发到集群内部或外部的特定端点。支持传输层安全性(TLS),以便可以配置日志转发来安全地发送日志。
管理员也可以授权 RBAC 权限来定义哪些服务帐户和用户可以访问和转发哪些日志类型。