About Red Hat OpenShift Cluster Observability Operator
Cluster Observability Operator 简介。
摘要
第 1 章 Cluster Observability Operator 概述 复制链接链接已复制到粘贴板!
Cluster Observability Operator (COO)是 OpenShift Container Platform 的可选组件,旨在创建和管理高度可自定义的监控堆栈。它使集群管理员能够广泛地自动配置和管理监控需求,与默认的 OpenShift Container Platform 监控系统相比,为每个命名空间提供更定制和详细视图。
COO 部署以下监控组件:
1.1. COO 与默认监控堆栈相比 复制链接链接已复制到粘贴板!
COO 组件独立于默认的集群内监控堆栈(由 Cluster Monitoring Operator (CMO) 部署和管理)。两个 Operator 部署的监控堆栈不会冲突。除了 CMO 部署的默认平台监控组件外,您还可以使用 COO 监控堆栈。
COO 和默认集群监控堆栈之间的主要区别显示在下表中:
| 功能 | COO | 默认监控堆栈 |
|---|---|---|
| 范围和集成 | 提供全面的监控和分析,满足企业级需求,涵盖集群和工作负载性能。 但是,它缺少与 OpenShift Container Platform 的直接集成,通常需要外部 Grafana 实例进行仪表板。 | 仅限于集群中的核心组件,如 API 服务器和 etcd,以及特定于 OpenShift 的命名空间。 在控制台中有与 OpenShift Container Platform 的深度集成,包括控制台仪表板和警报管理。 |
| 配置和自定义 | 更广泛的配置选项,包括数据保留周期、存储方法和收集的数据类型。 COO 可以使用 Server-Side Apply (SSA) 将自定义资源中单个可配置字段的所有权委派给用户,从而增强自定义。 | 带有有限自定义选项的内置配置。 |
| 数据保留和存储 | 长期数据保留,支持历史分析和容量规划 | 数据保留时间短,专注于短期监控和实时检测。 |
1.2. 使用 COO 的主要优点 复制链接链接已复制到粘贴板!
部署 COO 可帮助您解决难以使用默认监控堆栈实现的监控要求。
1.2.1. 可扩展性 复制链接链接已复制到粘贴板!
- 用户可以在 COO 部署的监控堆栈中添加更多指标,该堆栈无法在没有丢失支持的情况下进行核心平台监控。
- 您可以通过联邦从核心平台监控接收特定于集群的指标。
- COO 支持高级监控场景,如趋势预测和异常检测。
1.2.2. 多租户支持 复制链接链接已复制到粘贴板!
- 您可以为每个用户命名空间创建监控堆栈。
- 您可以为每个命名空间部署多个堆栈,或为多个命名空间部署单个堆栈。
- COO 为不同团队启用独立的警报和接收器配置。
1.2.3. 可扩展性 复制链接链接已复制到粘贴板!
- 在单个集群中支持多个监控堆栈。
- 通过手动分片启用对大型集群的监控。
- 解决指标超过单个 Prometheus 实例功能的情况。
1.2.4. 灵活性 复制链接链接已复制到粘贴板!
- 与 OpenShift Container Platform 发行周期分离。
- 更快的发行迭代,并对更改要求进行快速响应。
- 独立管理警报规则。
1.3. COO 的目标用户 复制链接链接已复制到粘贴板!
COO 非常适合需要高定制性、可扩展性和长期数据保留的用户,特别是在复杂的多租户企业环境中。
1.3.1. 企业级用户和管理员 复制链接链接已复制到粘贴板!
企业用户需要深入的 OpenShift Container Platform 集群监控功能,包括高级性能分析、长期数据保留、趋势预测和历史分析。这些功能可帮助企业更好地理解资源使用、防止性能问题并优化资源分配。
1.3.2. 多租户环境中的操作团队 复制链接链接已复制到粘贴板!
通过多租户支持,COO 允许不同的团队为其项目和应用程序配置监控视图,使其适合具有灵活的监控需求的团队。
1.3.3. 开发和运维团队 复制链接链接已复制到粘贴板!
COO 提供精细的监控和可自定义的观察视图,以便在开发和操作期间进行深入故障排除、异常检测和性能调节。
1.4. 使用 Server-ide Apply 自定义 Prometheus 资源 复制链接链接已复制到粘贴板!
服务器端应用是一种支持协作管理 Kubernetes 资源的功能。control plane 跟踪不同的用户和控制器如何管理 Kubernetes 对象中的字段。它引入了字段管理器的概念并跟踪字段的所有权。这种集中控制提供了冲突检测和解决方案,并降低意外覆盖的风险。
与 Client-Side Apply 相比,它更具声明性,并跟踪字段管理,而不是最后应用的状态。
- 服务器端应用
- 通过更新资源的状态来声明配置管理,而无需删除并重新创建它。
- 字段管理
- 用户可以指定要更新的资源哪些字段,而不影响其他字段。
- 受管字段
-
Kubernetes 存储元数据,提供有关在 metadata 中的
managedFields字段中管理对象的每个字段的元数据。 - Conflicts
- 如果多个管理器尝试修改同一字段,则会出现冲突。申请者可以选择覆盖、恢复控制或共享管理。
- 合并策略
- 基于管理它们的参与者,server-ide Apply merges 字段。
流程
使用以下配置添加
MonitoringStack资源:MonitoringStack对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow coo-demo命名空间中生成了一个名为sample-monitoring-stack的 Prometheus 资源。运行以下命令,检索生成的 Prometheus 资源的受管字段:oc -n coo-demo get Prometheus.monitoring.rhobs -oyaml --show-managed-fields
$ oc -n coo-demo get Prometheus.monitoring.rhobs -oyaml --show-managed-fieldsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查
metadata.managedFields值,并观察metadata和spec中的一些字段是否由MonitoringStack资源管理。 修改不是由
MonitoringStack资源控制的字段:更改
spec.enforcedSampleLimit,这是MonitoringStack资源未设置的字段。创建prom-spec-edited.yaml文件:prom-spec-edited.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML:
oc apply -f ./prom-spec-edited.yaml --server-side
$ oc apply -f ./prom-spec-edited.yaml --server-sideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须使用
--server-side标志。获取更改的 Prometheus 对象,并注意,
managedFields中有多个部分,其spec.enforcedSampleLimit:oc get prometheus -n coo-demo
$ oc get prometheus -n coo-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
修改由
MonitoringStack资源管理的字段:使用以下 YAML 配置更改
spec.LogLevel,它是由MonitoringStack资源管理的字段:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加了
spec.logLevel
运行以下命令来应用 YAML:
oc apply -f ./prom-spec-edited.yaml --server-side
$ oc apply -f ./prom-spec-edited.yaml --server-sideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
请注意,无法使用 Server-Side Apply 更改字段
spec.logLevel,因为它已经由observability-operator管理。 使用
--force-conflicts标志来强制更改。oc apply -f ./prom-spec-edited.yaml --server-side --force-conflicts
$ oc apply -f ./prom-spec-edited.yaml --server-side --force-conflictsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
prometheus.monitoring.rhobs/sample-monitoring-stack serverside-applied
prometheus.monitoring.rhobs/sample-monitoring-stack serverside-appliedCopy to Clipboard Copied! Toggle word wrap Toggle overflow with-force-conflicts标志,字段可以被强制更改,但因为同一字段也由MonitoringStack资源管理,所以 Observability Operator 会检测到更改,并将其恢复到MonitoringStack资源设置的值。注意MonitoringStack资源生成的一些 Prometheus 字段受到MonitoringStackspec小节中的字段的影响,如logLevel。可以通过更改MonitoringStackspec来更改它们。要更改 Prometheus 对象中的
logLevel,请应用以下 YAML 以更改MonitoringStack资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认已进行了更改,请运行以下命令来查询日志级别:
oc -n coo-demo get Prometheus.monitoring.rhobs -o=jsonpath='{.items[0].spec.logLevel}'$ oc -n coo-demo get Prometheus.monitoring.rhobs -o=jsonpath='{.items[0].spec.logLevel}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
info
infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果 Operator 的新版本生成了一个之前由参与者生成和控制的字段,则行动者设置的值将被覆盖。
例如,您正管理一个由
MonitoringStack资源生成的enforcedSampleLimit字段。如果升级了 Observability Operator,Operator 的新版本会为enforcedSampleLimit生成值,这会覆盖之前设置的值。-
MonitoringStack资源生成的Prometheus对象可能包含一些由监控堆栈未明确设置的字段。此时会出现这些字段,因为它们有默认值。