第 3 章 Logging 5.6
3.1. 日志记录 5.6 发行注记
Red Hat OpenShift 的日志记录子系统作为一个可安装的组件提供,它与核心 OpenShift Container Platform 不同的发行周期不同。Red Hat OpenShift Container Platform 生命周期政策概述了发行版本兼容性。
stable
频道只为日志记录的最新版本提供更新。要继续获得之前版本的更新,您必须将订阅频道改为 stable-X
,其中 X
是您安装的日志记录版本。
3.1.1. Logging 5.6.11
此发行版本包括 OpenShift Logging 程序错误修复 5.6.11。
3.1.1.1. 程序错误修复
- 在此次更新之前,LokiStack 网关会广泛缓存授权请求。因此,这会导致错误的授权结果。在这个版本中,Loki 网关缓存以更精细的方式缓存来解决这个问题。(LOG-4435)
3.1.1.2. CVE
3.1.2. Logging 5.6.8
此发行版本包括 OpenShift Logging 程序错误修复 5.6.8。
3.1.2.1. 程序错误修复
-
在此次更新之前,当输入匹配标签值包含
ClusterLogForwarder
中的/
字符时,向量收集器意外终止。在这个版本中,通过引用 match 标签解决了这个问题,使收集器能够启动和收集日志。(LOG-4091) - 在此次更新之前,当在 OpenShift Container Platform Web 控制台中查看日志时,点更多数据可用选项仅在第一次点击时加载更多日志条目。在这个版本中,每次点击时会加载更多条目。(OU-187)
- 在此次更新之前,当在 OpenShift Container Platform Web 控制台中查看日志时,点 streaming 选项只显示 流传输 日志消息,而无需显示实际日志。在这个版本中,消息和日志流都会正确显示。(OU-189)
- 在此次更新之前,Loki Operator 会重置错误,导致识别配置问题很难排除故障。在这个版本中,错误会保留,直到配置错误解决为止。(LOG-4158)
-
在此次更新之前,具有超过 8,000 个命名空间的集群会导致 Elasticsearch 拒绝查询,因为命名空间列表大于
http.max_header_size
设置。在这个版本中,标头大小的默认值有所增加,从而解决了这个问题。(LOG-4278)
3.1.2.2. CVE
3.1.3. Logging 5.6.7
此发行版本包括 OpenShift Logging 程序错误修复 5.6.7。
3.1.3.1. 程序错误修复
- 在此次更新之前,LokiStack 网关返回命名空间的标签值,而无需应用用户的访问权限。在这个版本中,Loki 网关应用标签值请求的权限,从而解决了这个问题。(LOG-3728)
-
在此次更新之前,当消息包含时间戳时,日志消息的
time
字段不会默认解析为 Fluentd 中的structured.time
。在这个版本中,如果输出目的地支持,解析的日志消息将包含一个structured.time
字段。(LOG-4090) -
在此次更新之前,LokiStack 路由配置会导致查询运行时间超过 30 秒。在这个版本中,Loki global 和 per-tenant
queryTimeout
设置会影响路由超时设置,从而解决了这个问题。(LOG-4130) - 在此次更新之前,带有为租户限制定义的值的 LokiStack CR,但没有全局限制会导致 Loki Operator 崩溃。在这个版本中,Operator 可以处理仅定义租户限制的 LokiStack CR,从而解决了这个问题。(LOG-4199)
- 在此次更新之前,OpenShift Container Platform Web 控制台会在升级后生成错误,因为 web 浏览器保留了之前版本的缓存文件。在这个版本中,这些文件不再被缓存,从而解决了这个问题。(LOG-4099)
- 在此次更新之前,Vector 在转发到默认 Loki 实例时会生成证书错误。在这个版本中,可以使用 Vector 将日志在没有错误的情况下转发到 Loki。(LOG-4184)
在此次更新之前,当
tls.insecureSkipVerify
选项被设置为true
时,Cluster Logging Operator API 需要一个由 secret 提供的证书。在这个版本中,Cluster Logging Operator API 不再需要在这样的情形中由 secret 提供证书。以下配置已添加到 Operator 的 CR 中:tls.verify_certificate = false tls.verify_hostname = false
(LOG-4146)
3.1.3.2. CVE
- CVE-2021-26341
- CVE-2021-33655
- CVE-2021-33656
- CVE-2022-1462
- CVE-2022-1679
- CVE-2022-1789
- CVE-2022-2196
- CVE-2022-2663
- CVE-2022-3028
- CVE-2022-3239
- CVE-2022-3522
- CVE-2022-3524
- CVE-2022-3564
- CVE-2022-3566
- CVE-2022-3567
- CVE-2022-3619
- CVE-2022-3623
- CVE-2022-3625
- CVE-2022-3627
- CVE-2022-3628
- CVE-2022-3707
- CVE-2022-3970
- CVE-2022-4129
- CVE-2022-20141
- CVE-2022-25147
- CVE-2022-25265
- CVE-2022-30594
- CVE-2022-36227
- CVE-2022-39188
- CVE-2022-39189
- CVE-2022-41218
- CVE-2022-41674
- CVE-2022-42703
- CVE-2022-42720
- CVE-2022-42721
- CVE-2022-42722
- CVE-2022-43750
- CVE-2022-47929
- CVE-2023-0394
- CVE-2023-0461
- CVE-2023-1195
- CVE-2023-1582
- CVE-2023-2491
- CVE-2023-22490
- CVE-2023-23454
- CVE-2023-23946
- CVE-2023-25652
- CVE-2023-25815
- CVE-2023-27535
- CVE-2023-29007
3.1.4. Logging 5.6.6
此发行版本包括 OpenShift Logging 程序错误修复 5.6.6。
3.1.4.1. 程序错误修复
-
在此次更新之前,在将
ClusterLogForwarder
自定义资源配置为写入与有效负载中键匹配的 Kafka 输出主题时,会丢弃信息,因为出现错误。在这个版本中,这个问题已通过在 Fluentd 的缓冲名称前添加一个下划线前缀来解决。(LOG-3458) - 在此次更新之前,当内节点被重复使用并且有多个具有相同内节点的条目时,Fluentd 中会出现监控被提早关闭的问题。在这个版本中,在 Fluentd 位置文件中提早关闭监控的问题已解决。(LOG-3629)
- 在此次更新之前,Fluentd 的 JavaScript 客户端多行异常的检测会失败,从而导致它们以多行打印。在这个版本中,例外会以一行输出,从而解决了这个问题。(LOG-3761)
- 在此次更新之前,从 Red Hat Openshift Logging Operator 版本 4.6 直接升级到 5.6 版本,从而导致功能问题。在这个版本中,升级范围被限制在两个版本内,从而解决了这个问题。(LOG-3837)
- 在此次更新之前,Splun 或 Google Logging 输出不会显示指标。在这个版本中,这个问题已通过为 HTTP 端点发送指标来解决。(LOG-3932)
-
在此次更新之前,当
ClusterLogForwarder
自定义资源被删除时,收集器 Pod 会继续运行。在这个版本中,在不启用日志转发时,收集器 Pod 不会运行。(LOG-4030) - 在此次更新之前,无法通过点击并在日志直方图上拖动,在 OpenShift Container Platform Web 控制台中选择时间范围。在这个版本中,可以使用单击和拖动来成功选择时间范围。(LOG-4101)
- 在此次更新之前,监视文件的 Fluentd 哈希值是使用对日志文件的路径生成的,从而导致日志轮转时没有唯一的哈希值。在这个版本中,监视文件的哈希值使用内节点号创建,从而解决了这个问题。(LOG-3633)
- 在此次更新之前,点 OpenShift Container Platform Web 控制台中的 Show Resources 链接不会产生任何影响。在这个版本中,通过修复 Show Resources 链接的功能来解决这个问题,以切换每个日志条目的资源显示。(LOG-4118)
3.1.4.2. CVE
3.1.5. Logging 5.6.5
此发行版本包括 OpenShift Logging 程序错误修复 5.6.5。
3.1.5.1. 程序错误修复
- 在此次更新之前,模板定义会阻止 Elasticsearch 索引一些标签和 namespace_labels,从而导致数据 ingestion 出现问题。在这个版本中,修复替换了标签中的点和斜杠,以确保正确修正、有效地解决问题。(LOG-3419)
- 在此次更新之前,如果 OpenShift Web 控制台的 Logs 页面无法连接到 LokiStack,则会显示通用错误消息,从而不提供额外的上下文或故障排除建议。在这个版本中,错误消息已被改进,使其包含更具体的故障排除详情和建议。(LOG-3750)
- 在此次更新之前,时间范围格式不会被验证,从而导致选择自定义日期范围的错误。在这个版本中,时间格式会被验证,允许用户选择有效的范围。如果选择了无效的时间范围格式,则会向用户显示错误消息。(LOG-3583)
- 在此次更新之前,当在 Loki 中搜索日志时,即使表达式的长度不超过 5120 个字符,查询也会在很多情况下失败。在这个版本中,查询授权标签匹配程序已被优化,从而解决了这个问题。(LOG-3480)
- 在此次更新之前,Loki Operator 无法生成一个 memberlist 配置,该配置足以在使用 memberlist 进行私有 IP 时查找所有组件。在这个版本中,确保生成的配置包含公告的端口,从而成功查找所有组件。(LOG-4008)
3.1.5.2. CVE
3.1.6. Logging 5.6.4
此发行版本包括 OpenShift Logging 程序错误修复 5.6.4。
3.1.6.1. 程序错误修复
- 在此次更新之前,当 LokiStack 部署为日志存储时,Loki pod 生成的日志会被收集并发送到 LokiStack。在这个版本中,Loki 生成的日志不包括在集合中,不会存储。(LOG-3280)
- 在此次更新之前,当 OpenShift Web 控制台的 Logs 页面中的查询编辑器为空时,下拉菜单不会被填充。在这个版本中,如果尝试空查询,会显示错误消息,且下拉菜单现在会如预期填充。(LOG-3454)
-
在此次更新之前,当
tls.insecureSkipVerify
选项被设置为true
时,Cluster Logging Operator 会生成不正确的配置。因此,当尝试跳过证书验证时,Operator 无法将数据发送到 Elasticsearch。在这个版本中,Cluster Logging Operator 会生成正确的 TLS 配置,即使启用了tls.insecureSkipVerify
。因此,即使尝试跳过证书验证,数据也可以成功发送到 Elasticsearch。(LOG-3475) - 在此次更新之前,当启用结构化解析且消息转发到多个目的地时,它们不会被深度复制。这会导致一些接收的日志,包括结构化消息,而其他日志则没有。在这个版本中,在 JSON 解析前,配置生成已被修改为深度复制信息。因此,所有收到的消息现在都包含结构化消息,即使它们被转发到多个目的地。(LOG-3640)
-
在此次更新之前,如果
collection
字段包含{}
,可能会导致 Operator 崩溃。在这个版本中,Operator 将忽略这个值,允许 Operator 在不中断的情况下平稳运行。(LOG-3733) -
在此次更新之前,LokiiHost 的 Gateway 组件的
nodeSelector
属性没有任何效果。在这个版本中,nodeSelector
属性可以正常工作。(LOG-3783) - 在此次更新之前,静态 LokiStack memberlist 配置只依赖于私有 IP 网络。因此,当 OpenShift Container Platform 集群 pod 网络配置了公共 IP 范围时,Lokiition pod 会出现 crashloop。在这个版本中,Loki 管理员可以选择将 pod 网络用于 memberlist 配置。这解决了这个问题,并防止 LokiStack pod 在 OpenShift Container Platform 集群 pod 网络配置了公共 IP 范围时进入 crashloop 状态。(LOG-3814)
-
在此次更新之前,如果
tls.insecureSkipVerify
字段设置为true
,Cluster Logging Operator 会生成不正确的配置。因此,当尝试跳过证书验证时,Operator 无法将数据发送到 Elasticsearch。在这个版本中,即使启用了tls.insecureSkipVerify
,Operator 也会生成正确的 TLS 配置。因此,即使尝试跳过证书验证,数据也可以成功发送到 Elasticsearch。(LOG-3838) - 在此次更新之前,如果 Cluster Logging Operator (CLO) 安装没有 Elasticsearch Operator,则 CLO pod 会持续显示与删除 Elasticsearch 相关的错误消息。在这个版本中,CLO 在显示任何错误消息前执行额外的检查。因此,没有 Elasticsearch Operator 时不再显示与 Elasticsearch 删除相关的错误消息。(LOG-3763)
3.1.6.2. CVE
3.1.7. Logging 5.6.3
此发行版本包括 OpenShift Logging 程序错误修复 5.6.3。
3.1.7.1. 程序错误修复
3.1.7.2. CVE
3.1.8. 日志记录 5.6.2
此发行版本包括 OpenShift Logging 程序错误修复 5.6.2。
3.1.8.1. 程序错误修复
-
在此次更新之前,收集器没有根据 systemd 日志的优先级正确设置
level
字段。在这个版本中,level
字段会被正确设置。(LOG-3429) - 在此次更新之前,Operator 会错误地在 OpenShift Container Platform 4.12 或更高版本上生成不兼容警告。在这个版本中,Operator 最大 OpenShift Container Platform 版本值已被修正,从而解决了这个问题。(LOG-3584)
-
在此次更新之前,创建一个带有
default
值的ClusterLogForwarder
自定义资源(CR)不会生成任何错误。在这个版本中,这个值无效生成的错误警告。(LOG-3437) -
在此次更新之前,当
ClusterLogForwarder
自定义资源 (CR) 配置了多个管道时,会将一个输出设置为默认
,收集器 Pod 会重启。在这个版本中,输出验证的逻辑已被修正,从而解决了这个问题。(LOG-3559) - 在此次更新之前,收集器 Pod 在创建后会重启。在这个版本中,部署的收集器不会自行重启。(LOG-3608)
- 在此次更新之前,补丁版本会从目录中删除了 Operator 的早期版本。这使得无法安装旧版本。这个版本更改了捆绑包配置,以便以前的同一次版本的发行版本保留在目录中。(LOG-3635)
3.1.8.2. CVE
3.1.9. Logging 5.6.1
此发行版本包括 OpenShift Logging 程序错误修复 5.6.1。
3.1.9.1. 程序错误修复
- 在此次更新之前,紧凑器会在保留活跃时报告 TLS 证书错误与 querier 通信。在这个版本中,紧凑器和 querier 不再通过 HTTP 进行通信。(LOG-3494)
-
在此次更新之前,Loki Operator 不会重试设置
LokiStack
CR 的状态,这会导致过时的状态信息。在这个版本中,Operator 会重试冲突的状态信息更新。(LOG-3496) -
在此次更新之前,当
kube-apiserver-operator
Operator 检查 Webhook 的有效性时,Loki Operator Webhook 服务器会导致 TLS 错误。在这个版本中,Loki Operator Webhook PKI 由 Operator Lifecycle Manager (OLM) 管理,从而解决了这个问题。(LOG-3510) - 在此次更新之前,LokiStack Gateway Labels Enforcer 会在使用带有布尔值表达式的组合标签过滤器时为有效的 LogQL 查询生成解析错误。在这个版本中,LokiStack LogQL 实现支持带有布尔值表达式的标签过滤器,并解决这个问题。(LOG-3441),(LOG-3397)
- 在此次更新之前,如果多个标签键具有相同的前缀,一些键包含点,则写入 Elasticsearch 的记录将失败。在这个版本中,下划线替换标签键中的点,从而解决了这个问题。(LOG-3463)
-
在此次更新之前,因为 OpenShift Container Platform 控制台和 logging-view-plugin 之间的不兼容,
Red Hat OpenShift Logging
Operator 不适用于 OpenShift Container Platform 4.10 集群。在这个版本中,插件可以与 OpenShift Container Platform 4.10 管理控制台正确集成。(LOG-3447) -
在此次更新之前,
ClusterLogForwarder
自定义资源的协调会错误地报告引用默认日志存储的管道的降级状态。在这个版本中,管道会正确验证。(LOG-3477)
3.1.9.2. CVE
3.1.10. Logging 5.6.0
此版本包括 OpenShift Logging Release 5.6。
3.1.10.1. 弃用通知
在日志记录版本 5.6 中,Fluentd 已被弃用,计划在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。作为 Fluentd 的替代选择,您可以使用 Vector。
3.1.10.2. 功能增强
- 在这个版本中,日志记录与 OpenShift Container Platform 集群范围的加密策略兼容。(LOG-895)
- 在这个版本中,您可以通过 LokiStack 自定义资源(按优先级排序)来为每个租户、每个流和全局策略保留策略声明。(LOG-2695)
- 在这个版本中,Splun 是日志转发的可用输出选项。(LOG-2913)
- 在这个版本中,Vector 替换了 Fluentd 作为默认的 Collector。(LOG-2222)
- 在这个版本中,Developer 角色可以访问在运行 OpenShift Container Platform 4.11 及更高版本的集群中将其分配到的 Log Console Plugin 中的每个项目工作负载日志。(LOG-3388)
-
在这个版本中,任何源的日志包含一个字段
openshift.cluster_id
,它是部署 Operator 的集群的唯一标识符。您可以使用以下命令查看clusterID
值。(LOG-2715)
$ oc get clusterversion/version -o jsonpath='{.spec.clusterID}{"\n"}'
3.1.10.3. 已知问题
-
在此次更新之前,如果多个标签键具有相同的前缀,并且一些键包含
.
字符,则 Elasticsearch 将拒绝日志。这通过将标签键中的.
替换为_
来解决 Elasticsearch 的限制。这个问题的一个临时解决方案是删除导致错误的标签,或向标签添加一个命名空间。(LOG-3463)
3.1.10.4. 程序错误修复
- 在此次更新之前,如果您删除了 Kibana 自定义资源,OpenShift Container Platform Web 控制台将继续显示到 Kibana 的链接。在这个版本中,删除 Kibana 自定义资源也会删除该链接。(LOG-2993)
- 在此次更新之前,用户无法查看其有权访问的命名空间的应用程序日志。在这个版本中,Loki Operator 会自动创建一个集群角色和集群角色绑定,允许用户读取应用程序日志。(LOG-3072)
-
在此次更新之前,Operator 在使用 LokiStack 作为默认日志存储时删除了
ClusterLogForwarder
自定义资源中定义的任何自定义输出。在这个版本中,Operator 会在处理ClusterLogForwarder
自定义资源时将自定义输出与默认输出合并。(LOG-3090) - 在此次更新之前,CA 密钥用作将 CA 挂载到 Loki 的卷名称,从而导致 CA Key 包含非格式字符(如点)时出现错误状态。在这个版本中,卷名称标准化为一个内部字符串,用于解决这个问题。(LOG-3331)
-
在此次更新之前,在 LokiStack 自定义资源定义中设置的默认值,会导致无法创建 LokiStack 实例,而无需
ReplicationFactor
为1
。在这个版本中,Operator 为使用的大小设置实际值。(LOG-3296) -
在此次更新之前,当启用 JSON 解析时向量解析消息字段,而不定义
structuredTypeKey
或structuredTypeName
值。在这个版本中,在将结构化日志写入 Elasticsearch 时,structuredTypeKey
或structuredTypeName
所需的值。(LOG-3195) - 在此次更新之前,Elasticsearch Operator 的 secret 创建组件会持续修改的内部 secret。在这个版本中,现有 secret 会被正确处理。(LOG-3161)
- 在此次更新之前,Operator 可以在 Elasticsearch 或 Kibana 部署改变状态时,输入删除和重新创建收集器 daemonset 的循环。在这个版本中,Operator 状态处理中会解决这个问题。(LOG-3157)
-
在此次更新之前,Kibana 有一个固定的
24h
OAuth cookie 过期时间,当accessTokenInactivityTimeout
字段被设置为小于24h
的值时,会导致 Kibana 中的 401 错误。在这个版本中,Kibana 的 OAuth cookie 过期时间与accessTokenInactivityTimeout
同步,默认值为24h
。(LOG-3129) - 在此次更新之前,协调资源的 Operator 常规模式是在尝试获取或更新前尝试和创建,这会导致创建后持续的 HTTP 409 响应。在这个版本中,Operator 会首先尝试检索对象,仅在缺少或未指定对象时创建或更新它。(LOG-2919)
-
在此次更新之前,Fluentd 中的
.level
和'.structure.level 字段可能包含不同的值。在这个版本中,每个字段的值都相同。(LOG-2819) - 在此次更新之前,Operator 不会等待可信 CA 捆绑包填充,并在更新捆绑包后再次部署收集器。在这个版本中,Operator 会在继续收集器部署前,等待简要查看捆绑包是否已填充。(LOG-2789)
- 在此次更新之前,日志记录遥测信息在检查指标时会出现两次。在这个版本中,日志记录遥测信息会如预期显示。(LOG-2315)
- 在此次更新之前,Fluentd pod 日志会在启用 JSON 解析添加后包含警告信息。在这个版本中,不会显示警告信息。(LOG-1806)
-
在此次更新之前,
must-gather
脚本无法完成,因为oc
需要具有写入权限的文件夹来构建其缓存。在这个版本中,oc
对文件夹有写入权限,must-gather
脚本可以成功完成。(LOG-3446) - 在此次更新之前,日志收集器 SCC 可以替换为集群上的其他 SCC,从而导致收集器不可用。在这个版本中,设置日志收集器 SCC 的优先级,使其优先于其他 SCC。(LOG-3235)
-
在此次更新之前,向量缺少字段
sequence
,它被添加到 fluentd 中,作为处理缺少实际纳秒精度的方法。在这个版本中,字段openshift.sequence
已添加到事件日志中。(LOG-3106)