apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
name: instance
namespace: openshift-logging
spec:
collection:
logs:
type: vector
vector: {}
# ...
Red Hat OpenShift Logging Operator 部署基于ClusterLogForwarder
资源规范的收集器。此 Operator 支持两种收集器选项:旧版 Fluentd 收集器和 Vector 收集器。
Fluentd 已弃用,并计划在未来的版本中移除。Red Hat 在当前的发布生命周期中为此功能提供错误修复和支持,但此功能不再接收增强功能。作为 Fluentd 的替代方案,您可以改用 Vector。 |
日志收集器是一个守护程序集,它将 Pod 部署到每个 Red Hat OpenShift Service on AWS 节点以收集容器和节点日志。
默认情况下,日志收集器使用以下来源:
操作系统、容器运行时和 Red Hat OpenShift Service on AWS 生成的系统和基础设施日志(来自 journald 的日志消息)。
/var/log/containers/*.log
用于所有容器日志。
如果将日志收集器配置为收集审计日志,则会从/var/log/audit/audit.log
收集它们。
日志收集器从这些来源收集日志,并根据您的日志记录配置将其内部或外部转发。
Vector 是一种日志收集器,作为 Fluentd 的日志记录替代方案提供。
您可以通过修改ClusterLogging
自定义资源 (CR) 的collection
规范来配置集群使用的日志收集器类型。
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
name: instance
namespace: openshift-logging
spec:
collection:
logs:
type: vector
vector: {}
# ...
容器运行时提供最少的信息来识别日志消息的来源:项目、Pod 名称和容器 ID。这些信息不足以唯一地识别日志的来源。如果在日志收集器开始处理其日志之前删除了具有给定名称和项目的 Pod,则来自 API 服务器的信息(例如标签和注释)可能不可用。可能无法区分来自名称和项目相似的 Pod 的日志消息,也无法追踪日志到其来源。此限制意味着日志收集和规范化被认为是*尽力而为*。
可用的容器运行时提供最少的信息来识别日志消息的来源,并且不保证唯一标识单个日志消息,也不保证可以追踪这些消息到其来源。 |
功能 | Fluentd | Vector |
---|---|---|
应用程序容器日志 |
✓ |
✓ |
特定于应用程序的路由 |
✓ |
✓ |
按命名空间划分的特定于应用程序的路由 |
✓ |
✓ |
基础设施容器日志 |
✓ |
✓ |
基础设施 journal 日志 |
✓ |
✓ |
Kube API 审计日志 |
✓ |
✓ |
OpenShift API 审计日志 |
✓ |
✓ |
Open Virtual Network (OVN) 审计日志 |
✓ |
✓ |
功能 | Fluentd | Vector |
---|---|---|
Elasticsearch 证书 |
✓ |
✓ |
Elasticsearch 用户名/密码 |
✓ |
✓ |
Amazon Cloudwatch 密钥 |
✓ |
✓ |
Amazon Cloudwatch STS |
✓ |
✓ |
Kafka 证书 |
✓ |
✓ |
Kafka 用户名/密码 |
✓ |
✓ |
Kafka SASL |
✓ |
✓ |
Loki Bearer 令牌 |
✓ |
✓ |
功能 | Fluentd | Vector |
---|---|---|
Viaq 数据模型 - 应用 |
✓ |
✓ |
Viaq 数据模型 - 基础设施 |
✓ |
✓ |
Viaq 数据模型 - 基础设施(journal) |
✓ |
✓ |
Viaq 数据模型 - Linux 审计 |
✓ |
✓ |
Viaq 数据模型 - kube-apiserver 审计 |
✓ |
✓ |
Viaq 数据模型 - OpenShift API 审计 |
✓ |
✓ |
Viaq 数据模型 - OVN |
✓ |
✓ |
日志级别规范化 |
✓ |
✓ |
JSON 解析 |
✓ |
✓ |
结构化索引 |
✓ |
✓ |
多行错误检测 |
✓ |
✓ |
多容器/分割索引 |
✓ |
✓ |
扁平化标签 |
✓ |
✓ |
CLF 静态标签 |
✓ |
✓ |
功能 | Fluentd | Vector |
---|---|---|
Fluentd readlinelimit |
✓ |
|
Fluentd 缓冲区 |
✓ |
|
- chunklimitsize |
✓ |
|
- totallimitsize |
✓ |
|
- overflowaction |
✓ |
|
- flushthreadcount |
✓ |
|
- flushmode |
✓ |
|
- flushinterval |
✓ |
|
- retrywait |
✓ |
|
- retrytype |
✓ |
|
- retrymaxinterval |
✓ |
|
- retrytimeout |
✓ |
功能 | Fluentd | Vector |
---|---|---|
指标 |
✓ |
✓ |
仪表盘 |
✓ |
✓ |
警报 |
✓ |
✓ |
功能 | Fluentd | Vector |
---|---|---|
全局代理支持 |
✓ |
✓ |
x86 支持 |
✓ |
✓ |
ARM 支持 |
✓ |
✓ |
IBM Power® 支持 |
✓ |
✓ |
IBM Z® 支持 |
✓ |
✓ |
IPv6 支持 |
✓ |
✓ |
日志事件缓冲 |
✓ |
|
断开连接的集群 |
✓ |
✓ |
管理员可以创建ClusterLogForwarder
资源,这些资源指定要收集哪些日志、如何转换日志以及将日志转发到何处。
ClusterLogForwarder
资源可用于将容器、基础设施和审计日志转发到集群内或集群外的特定端点。支持传输层安全性 (TLS),以便可以将日志转发器配置为安全地发送日志。
管理员还可以授权 RBAC 权限,这些权限定义哪些服务帐户和用户可以访问和转发哪些类型的日志。
有两种日志转发实现可用:旧版实现和多日志转发器功能。
只有 Vector 收集器支持与多日志转发器功能一起使用。Fluentd 收集器只能与旧版实现一起使用。 |
在旧版实现中,您只能在集群中使用一个日志转发器。此模式下的ClusterLogForwarder
资源必须命名为instance
,并且必须在openshift-logging
命名空间中创建。ClusterLogForwarder
资源还需要在openshift-logging
命名空间中创建一个名为instance
的相应ClusterLogging
资源。
多日志转发器功能在 Logging 5.8 及更高版本中可用,并提供以下功能:
管理员可以控制哪些用户可以定义日志收集以及他们可以收集哪些日志。
拥有所需权限的用户可以指定额外的日志收集配置。
从已弃用的 Fluentd 收集器迁移到 Vector 收集器的管理员可以独立于现有部署部署新的日志转发器。在迁移工作负载期间,现有和新的日志转发器可以同时运行。
在多日志转发器实现中,您不需要为您的 `ClusterLogForwarder` 资源创建相应的 `ClusterLogging` 资源。您可以使用任何名称在任何命名空间中创建多个 `ClusterLogForwarder` 资源,但以下情况除外:
您不能在 `openshift-logging` 命名空间中创建名为 `instance` 的 `ClusterLogForwarder` 资源,因为这是为使用 Fluentd 收集器的旧工作流提供支持的日志转发器保留的。
您不能在 `openshift-logging` 命名空间中创建名为 `collector` 的 `ClusterLogForwarder` 资源,因为这是为收集器保留的。
要使用多日志转发器功能,必须为该服务帐户创建服务帐户和集群角色绑定。然后,您可以在 `ClusterLogForwarder` 资源中引用服务帐户以控制访问权限。
为了支持在 `openshift-logging` 命名空间以外的其他命名空间中的多日志转发,必须更新 Red Hat OpenShift Logging Operator 以监视所有命名空间。此功能在新的 Red Hat OpenShift Logging Operator 5.8 版本安装中默认支持。 |
在 Logging 5.8 及更高版本中,Red Hat OpenShift Logging Operator 提供了 `collect-audit-logs`、`collect-application-logs` 和 `collect-infrastructure-logs` 集群角色,这些角色分别使收集器能够收集审核日志、应用程序日志和基础设施日志。
您可以通过将所需的集群角色绑定到服务帐户来授权日志收集的 RBAC 权限。
Red Hat OpenShift Logging Operator 安装在 `openshift-logging` 命名空间中。
您拥有管理员权限。
为收集器创建一个服务帐户。如果要将日志写入需要令牌进行身份验证的存储,则必须在服务帐户中包含令牌。
将相应的集群角色绑定到服务帐户
$ oc adm policy add-cluster-role-to-user <cluster_role_name> system:serviceaccount:<namespace_name>:<service_account_name>