1.37. OpenShift Logging 5.2.0

此发行版本包括 RHBA-2021:3393 OpenShift Logging 程序错误修复 5.2.0

1.37.1. 新功能及功能增强

  • 在这个版本中,您可以将日志数据转发到 Amazon CloudWatch,它提供应用程序和基础架构监控。如需更多信息,请参阅将日志转发到 Amazon CloudWatch。(LOG-1173)
  • 在这个版本中,您可以将日志数据转发到 Loki,这是一个可横向扩展、高度可用、多租户日志聚合系统。如需更多信息,请参阅将日志转发到 Loki。(LOG-684)
  • 在这个版本中,如果使用 Fluentd forward 协议通过 TLS 加密连接转发日志数据,现在可以使用密码加密的私钥文件并在 Cluster Log Forwarder 配置中指定密码短语。如需更多信息,请参阅使用 Fluentd 转发协议转发日志。(LOG-1525)
  • 在这个版本中,您可以使用用户名和密码来验证与外部 Elasticsearch 实例的日志转发连接。例如,如果无法使用 mutual TLS (mTLS),因为第三方运行 Elasticsearch 实例,您可以使用 HTTP 或 HTTPS 并设置包含用户名和密码的 secret。如需更多信息,请参阅将日志转发到外部 Elasticsearch 实例。(LOG-1022)
  • 在这个版本中,您可以收集 OVN 网络策略审计日志来转发到日志记录服务器。(LOG-1526)
  • 默认情况下,OpenShift Container Platform 4.5 中引入的数据模型为来自不同命名空间的日志提供一个通用索引。这个变化造成很难看到哪些命名空间生成的日志最多。

    当前发行版本在 OpenShift Container Platform 控制台中的 Logging 仪表板中添加命名空间指标。使用这些指标,您可以看到哪个命名空间生成日志,以及每个命名空间为给定时间戳生成的日志数量。

    要查看这些指标,请在 OpenShift Container Platform web 控制台中打开 Administrator 视角,再导航到 ObserveDashboardsLogging/Elasticsearch。(LOG-1680)

  • 当前发行版本 OpenShift Logging 5.2 启用两个新指标:对于给定的时间戳或持续时间,您可以查看各个容器生成或记录的日志总数,以及收集器收集的日志总数。这些指标由命名空间、pod 和容器名称标记,以便您可以查看每个命名空间和 pod 收集和生成的日志数量。(LOG-1213)

1.37.2. 程序错误修复

  • 在更新前,当 OpenShift Elasticsearch Operator 创建索引管理 cronjobs 时,它会添加 POLICY_MAPPING 环境变量两次,这会导致 apiserver 报告重复。在这个版本中解决了这个问题,使得 POLICY_MAPPING 环境变量只为每个 cronjob 设置一次,且 apiserver 报告没有重复。(LOG-1130)
  • 在以前的版本中,将 Elasticsearch 集群挂起到零个节点不会挂起 index-management cronjobs,这会使这些 cronjobs 造成大量 backoff。然后,在取消暂停 Elasticsearch 集群后,这些 cronjobs 会因为达到最大 backoff 而停止。在这个版本中,通过挂起 cronjobs 和集群解决了这个问题。(LOG-1268)
  • 在这个版本中,在 OpenShift Container Platform 控制台中的 Logging 仪表板中,前 10 种日志生成容器列表缺少 "chart namespace" 标签,并提供不正确的指标名称 fluentd_input_status_total_bytes_logged。在这个版本中,chart 显示命名空间标签和正确的指标名称 log_logged_bytes_total。(LOG-1271)
  • 在更新之前,如果索引管理 cronjob 终止并显示错误退出代码,则报告错误退出代码:相反,其作业状态为"complete"。 在这个版本中,报告使用错误终止的索引管理 cronjobs 的错误退出代码解决了这个问题。(LOG-1273)
  • priorityclasses.v1beta1.scheduling.k8s.io 已从 1.22 中删除,并被 priorityclasses.v1.scheduling.k8s.io 替代(v1beta1v1替代)。在更新之前,APIRemovedInNextReleaseInUse 警报是为 priorityclasses 生成的,因为 v1beta1 仍然存在。在这个版本中,将 v1beta1 替换为 v1,解决了这个问题。不再生成警报。(LOG-1385)
  • 在以前的版本中,OpenShift Elasticsearch Operator 和 Red Hat OpenShift Logging Operator 没有所需的注解,它们会显示在断开连接的环境中的 OpenShift Container Platform Web 控制台列表中。在这个版本中,将 operators.openshift.io/infrastructure-features: '["Disconnected"]' 注解添加到这两个 Operator 中,使它们出现在在断开连接的环境中运行的 Operator 列表中。(LOG-1420)
  • 在更新前,Red Hat OpenShift Logging Operator pod 被调度到在性能优化的单节点集群中为客户工作负载保留的 CPU 内核。在这个版本中,集群日志记录操作器 pod 调度到正确的 CPU 内核中。(LOG-1440)
  • 在更新前,一些日志条目没有被识别为 UTF-8 字节,这会导致 Elasticsearch 拒绝消息并阻塞整个缓冲的有效负载。在这个版本中,被拒绝的载荷会丢弃无效的日志条目并重新提交剩余的条目来解决这个问题。(LOG-1499)
  • 在此次更新之前,kibana-proxy pod 有时输入 CrashLoopBackoff 状态,并记录以下消息 Invalid configuration: cookie_secret must be 16, 24, or 32 bytes to create an AES cipher when pass_access_token == true or cookie_refresh != 0, but is 29 bytes.实际的字节数可能有所不同。在这个版本中,Kibana 会话 secret 的生成已被修正,kibana-proxy pod 不再会因为这个错误而进入 CrashLoopBackoff 状态。(LOG-1446)
  • 在这个版本中,AWS CloudWatch Fluentd 插件在所有日志级别记录了对 Fluentd 日志的 AWS API 调用,这会消耗额外的 OpenShift Container Platform 节点资源。在这个版本中,AWS CloudWatch Fluentd 插件仅在"debug"和"trace"日志级别记录 AWS API 调用。这样,在默认的"warn"日志级别中,Fluentd 不会消耗额外的节点资源。(LOG-1071)
  • 在更新前,Elasticsearch OpenDistro 安全插件会导致用户索引迁移失败。在这个版本中,通过提供新版本的插件解决了这个问题。现在,索引迁移可以正常进行。(LOG-1276)
  • 在更新前,在 OpenShift Container Platform 控制台中的 Logging 仪表板中,前 10 种生成日志的容器列表缺少数据点。此更新解决了这个问题,仪表板会显示所有数据点。(LOG-1353)
  • 在更新前,如果您要通过调整 chunkLimitSizetotalLimitSize 值来调整 Fluentd 日志转发器的性能,Setting queued_chunks_limit_size for each buffer to 消息报告值太低。当前更新解决了这个问题,此消息可以报告正确的值。(LOG-1411)
  • 在更新前,Kibana OpenDistro 安全插件会导致用户索引迁移失败。在这个版本中,通过提供新版本的插件解决了这个问题。现在,索引迁移可以正常进行。(LOG-1558)
  • 在这个版本中,使用命名空间输入过滤器会阻止该命名空间中的日志出现在其他输入中。在这个版本中,日志会发送到可以接受它们的所有输入。(LOG-1570)
  • 在以前的版本中, viaq/logerr 依赖项缺少许可证文件,这会导致许可证扫描程序在没有成功的情况下被中止。在这个版本中, viaq/logerr 依赖项使用 Apache 2.0 许可,许可证扫描程序可以成功运行。(LOG-1590)
  • 在更新前,elasticsearch-operator-bundle 构建管道中的 curator5 的不正确的 brew 标签会导致拉取镜像被固定到 dummy SHA1 中。在这个版本中,构建管道使用 logging-curator5-rhel8 来引用 curator5,索引管理 cronjobs 可以从 registry.redhat.io 中拉取正确的镜像。(LOG-1624)
  • 在更新前,ServiceAccount 有一个权限问题,这会导致错误,如 no permissions for [indices:admin/aliases/get]。在这个版本中,权限修复解决了这个问题。(LOG-1657)
  • 在更新前,Red Hat OpenShift Logging Operator 的自定义资源定义 (CRD) 缺少 Loki 输出类型,这会导致准入控制器拒绝 ClusterLogForwarder 自定义资源对象。在这个版本中,CRD 包含 Loki 作为输出类型,以便管理员可以配置 ClusterLogForwarder 以将日志发送到 Loki 服务器。(LOG-1683)
  • 在这个版本中,OpenShift Elasticsearch Operator 协调 ServiceAccounts 覆盖了包含 secret 的第三方拥有的字段。这会导致因为频繁重新创建 secret 而导致内存和 CPU 激增。这个版本解决了这个问题。现在,OpenShift Elasticsearch Operator 不会覆盖第三方拥有的字段。(LOG-1714)
  • 在更新前,在 ClusterLogging 自定义资源 (CR) 定义中,如果您指定了 flush_interval 值但没有将 flush_mode 设置为 interval,Red Hat OpenShift Logging Operator 会生成 Fluentd 配置。但是,Fluentd 收集器在运行时生成一个错误。在这个版本中,Red Hat OpenShift Logging Operator 会验证 ClusterLogging CR 定义,只有指定了这两个字段时才会生成 Fluentd 配置。(LOG-1723)

1.37.3. 已知问题

  • 如果您将日志转发到外部 Elasticsearch 服务器,然后在管道 secret 中更改配置的值,如用户名和密码,Fluentd forwarder 会加载新 secret,但使用旧值连接到外部 Elasticsearch 服务器。出现这个问题的原因是,Red Hat OpenShift Logging Operator 当前不会监控 secret 的内容更改。(LOG-1652)

    作为临时解决方案,如果更改了 secret,您可以强制重新部署 Fluentd Pod:

    $ oc delete pod -l component=collector

1.37.4. 弃用和删除的功能

之前版本中的一些功能已被弃用或删除。

弃用的功能仍然包含在 OpenShift Logging 中,并且仍然被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

1.37.5. 使用旧的 Fluentd 和旧 syslog 方法转发日志已被弃用

从 OpenShift Container Platform 4.6 升级到现在,使用以下传统方法转发日志已被弃用,并将在以后的发行版本中删除:

  • 使用旧的 Fluentd 方法转发日志
  • 使用旧的 syslog 方法转发日志

反之,使用以下非传统方法:

1.37.6. CVE