Cluster Observability Operator
在 OpenShift Container Platform 中配置和使用 Cluster Observability Operator
摘要
第 1 章 Cluster Observability Operator 发行注记
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Cluster Observability Operator (COO) 是一个可选的 OpenShift Container Platform Operator,它可让管理员创建独立监控堆栈,供不同的服务和用户使用。
COO 补充 OpenShift Container Platform 的内置监控功能。您可以使用由 Cluster Monitoring Operator (CMO) 管理的默认平台和用户工作负载监控堆栈并行部署它。
本发行注记介绍了 OpenShift Container Platform 中 Cluster Observability Operator 的开发。
下表提供了有关根据 Cluster Observability Operator 和 OpenShift Container Platform 版本提供哪些功能的信息:
COO 版本 | OCP 版本 | 仪表板 | 分布式追踪 | 日志记录 | 平面故障排除 |
---|---|---|---|---|---|
0.2.0 | 4.11 | ✔ | ✘ | ✘ | ✘ |
0.3.0+ | 4.11 - 4.15 | ✔ | ✔ | ✔ | ✘ |
0.3.0+ | 4.16+ | ✔ | ✔ | ✔ | ✔ |
1.1. Cluster Observability Operator 0.4.1
以下公告可用于 Cluster Observability Operator 0.4.1:
1.1.1. 新功能及功能增强
- 现在,您可以为 Prometheus 和 Alertmanager 配置 WebTLS。
1.1.2. CVE
1.1.3. 程序错误修复
-
在以前的版本中,当您删除仪表板 UI 插件时,
consoles.operator.openshift.io
资源仍然会包含console-dashboards-plugin
。此发行版本解决了这个问题。(COO-152) - 在以前的版本中,Web 控制台没有显示 Red Hat COO 的正确图标。此发行版本解决了这个问题。(COO-353)
- 在以前的版本中,当您从 web 控制台安装 COO 时,support 部分会包含无效的链接。此发行版本解决了这个问题。(COO-354)
- 在以前的版本中,用于 COO 的集群服务版本 (CSV)链接到文档的非官方版本。此发行版本解决了这个问题。(COO-356)
1.2. Cluster Observability Operator 0.4.0
以下公告可用于 Cluster Observability Operator 0.4.0:
1.2.1. 新功能及功能增强
1.2.1.1. UI 插件故障排除
- UI 面板的故障排除已被改进,您现在可以选择并专注于特定的启动信号。
- 通过选择深度选项,可以对 Korrel8r 查询有更多了解。
- OpenShift Container Platform 版本 4.17+ 的用户可从 Application Launcher 访问故障排除 UI 面板。另外,在 4.16+ 版本中,您可以点 Observe → Alerting 在 web 控制台中访问它。
如需更多信息,请参阅 UI 插件故障排除。
1.2.1.2. 分布式追踪 UI 插件
- 分布式追踪 UI 插件已被改进,现在可以使用 Gantt chart 探索 trace。
如需更多信息,请参阅分布式追踪 UI 插件。
1.2.2. 程序错误修复
- 在以前的版本中,普通用户无法通过点 Observe → Logs 在 web 控制台的 Developer 视角中访问指标。此发行版本解决了这个问题。(COO-288)
- 在以前的版本中,故障排除 UI 插件使用了错误的过滤用于网络观察性。此发行版本解决了这个问题。(COO-299)
- 在以前的版本中,故障排除 UI 插件生成一个不正确的 URL 用于 pod 标签搜索。此发行版本解决了这个问题。(COO-298)
-
在以前的版本中,分布式追踪 UI 插件中有一个授权漏洞。此发行版本解决了这个问题,并且仅使用多租户
TempoStack
和TempoMonolithic
实例进一步强化分布式追踪 UI 插件。
1.3. Cluster Observability Operator 0.3.2
以下公告可用于 Cluster Observability Operator 0.3.2:
1.3.1. 新功能及功能增强
-
在这个版本中,您可以使用带有
MonitoringStack
组件的容限和节点选择器。
1.3.2. 程序错误修复
-
在以前的版本中,日志记录 UIPlugin 没有处于
Available
状态,当在一个特定版本的 OpenShift Container Platform 上安装时,日志记录 pod 不会被创建。此发行版本解决了这个问题。(COO-260)
1.4. Cluster Observability Operator 0.3.0
以下公告可用于 Cluster Observability Operator 0.3.0:
1.4.1. 新功能及功能增强
- 在这个版本中,Cluster Observability Operator 添加了对将来的 OpenShift Container Platform observability Web 控制台 UI 插件和可观察性组件的后端支持。
1.5. Cluster Observability Operator 0.2.0
以下公告可用于 Cluster Observability Operator 0.2.0 :
1.5.1. 新功能及功能增强
- 在这个版本中,Cluster Observability Operator 支持为 OpenShift Container Platform Web 控制台界面(UI)安装和管理与可观察性相关的插件。(COO-58)
1.6. Cluster Observability Operator 0.1.3
以下公告可用于 Cluster Observability Operator 0.1.3:
1.6.1. 程序错误修复
-
在以前的版本中,如果您试图访问
http://<prometheus_url>:9090/graph
的 Prometheus web 用户界面(UI),会显示以下出错信息:Error open React index.html: open web/ui/static/react/index.html: no such file or directory
。此发行版本解决了这个问题,Prometheus Web UI 现在可以正确显示。(COO-34)
1.7. Cluster Observability Operator 0.1.2
以下公告可用于 Cluster Observability Operator 0.1.2:
1.7.1. CVE
1.7.2. 程序错误修复
- 在以前的版本中,某些集群服务版本 (CSV) 注解没有包括在 COO 的元数据中。由于这些缺少的注解,某些 COO 功能没有出现在软件包清单或 OperatorHub 用户界面中。此发行版本添加了缺少的注解,从而解决了这个问题。(COO-11)
- 在以前的版本中,COO 的自动更新无法正常工作,Operator 的较新版本不会自动替换旧版本,即使 OperatorHub 中提供了更新的版本。此发行版本解决了这个问题。(COO-12)
-
在以前的版本中,Thanos Querier 只侦听 127.0.0.1 的端口 9090 (
localhos
)上的网络流量,如果您试图访问 Thanos Querier 服务,这会导致502 Bad Gateway
错误。在这个版本中,Thanos Querier 配置已被更新,因此组件现在侦听默认端口(10902),从而解决了这个问题。现在,您还可以通过服务器端应用(SSA)修改端口,并在需要时添加代理链。(COO-14)
1.8. Cluster Observability Operator 0.1.1
以下公告可用于 Cluster Observability Operator 0.1.1:
1.8.1. 新功能及功能增强
此发行版本更新了 Cluster Observability Operator,以支持在受限网络中或断开连接的环境中安装 Operator。
1.9. Cluster Observability Operator 0.1
此发行版本在 OperatorHub 上提供了 Cluster Observability Operator 的技术预览版本。
第 2 章 Cluster Observability Operator 概述
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Cluster Observability Operator (COO) 是 OpenShift Container Platform 的一个可选组件。您可以进行部署,以创建独立可配置供不同服务和用户使用的独立监控堆栈。
COO 部署以下监控组件:
- Prometheus
- Thanos Querier (可选)
- Alertmanager (可选)
COO 组件独立于默认的集群内监控堆栈(由 Cluster Monitoring Operator (CMO) 部署和管理)。两个 Operator 部署的监控堆栈不会冲突。除了 CMO 部署的默认平台监控组件外,您还可以使用 COO 监控堆栈。
2.1. 了解 Cluster Observability Operator
Cluster Observability Operator (COO) 创建的默认监控堆栈包括可使用远程写入将指标发送到外部端点的高可用性 Prometheus 实例。
每个 COO 堆栈还包括一个可选的 Thanos Querier 组件,可用于从中央位置查询高度可用的 Prometheus 实例,以及可选的 Alertmanager 组件,您可以使用它来为不同的服务设置警报配置。
2.1.1. 使用 Cluster Observability Operator 的优点
COO 使用的 MonitoringStack
CRD 为 COO 部署的监控组件提供了建议的默认监控配置,但您可以自定义它来满足更复杂的要求。
部署 COO 管理的监控堆栈可帮助满足监控需求,使用 Cluster Monitoring Operator (CMO) 部署的核心平台监控堆栈来解决。使用 COO 部署的监控堆栈与核心平台和用户工作负载监控相比有以下优点:
- 扩展性
- 用户可以在 COO 部署的监控堆栈中添加更多指标,该堆栈无法在没有丢失支持的情况下进行核心平台监控。另外,COO 管理的堆栈可以使用联邦从核心平台监控接收特定集群特定指标。
- 多租户支持
- COO 可以为每个用户命名空间创建一个监控堆栈。您还可以为每个命名空间部署多个堆栈,或为多个命名空间部署单个堆栈。例如,集群管理员、SRE 团队和开发团队都可以在单个集群中部署自己的监控堆栈,而不必使用单一的监控组件的共享堆栈。然后,不同团队上的用户可以独立配置其应用程序和服务的警报、警报路由和警报接收器等功能。
- 可扩展性
- 您可以根据需要创建 COO 管理的监控堆栈。多个监控堆栈可以在单个集群中运行,这有助于使用手动分片监控非常大的集群。此功能解决了指标数量超过单个 Prometheus 实例的监控功能的情况。
- 灵活性
- 使用 Operator Lifecycle Manager (OLM) 部署 COO 与 OpenShift Container Platform 发行周期分离 COO 版本。这种部署方法可以更快地进行发布迭代,并能够快速响应变化的要求和问题。另外,通过部署 COO 管理的监控堆栈,用户可以独立于 OpenShift Container Platform 发行周期管理警报规则。
- 高度自定义
- COO 可以使用 Server-Side Apply (SSA) 将自定义资源中单个可配置字段的所有权委派给用户,从而增强自定义。
第 3 章 安装 Cluster Observability Operator
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
作为集群管理员,您可以使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装或删除 Cluster Observability Operator (COO)。OperatorHub 是一个用户界面,可与 Operator Lifecycle Manager (OLM) 结合使用,它在集群中安装和管理 Operator。
3.1. 在 web 控制台中安装 Cluster Observability Operator
使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装 Cluster Observability Operator (COO)。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
流程
- 在 OpenShift Container Platform Web 控制台中,点击 Operators → OperatorHub。
-
在 Filter by keyword 框中键入
cluster observability operator
。 - 在结果列表中点 Cluster Observability Operator。
阅读 Operator 的信息,并查看以下默认安装设置:
- Update channel → development
- Version → <most_recent_version>
- Installation mode → All namespaces on the cluster (default)
- Installed Namespace → openshift-operators
- Update approval → Automatic
- 可选:更改默认安装设置以满足您的要求。例如,您可以选择订阅不同的更新频道,安装一个旧的 Operator 发行版本,或者需要手动批准对 Operator 的新版本进行更新。
- 点 Install。
验证
- 进入 Operators → Installed Operators,并验证 Cluster Observability Operator 条目是否出现在列表中。
其他资源
3.2. 使用 Web 控制台卸载 Cluster Observability Operator
如果使用 OperatorHub 安装 Cluster Observability Operator (COO),您可以在 OpenShift Container Platform Web 控制台中卸载它。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
流程
- 进入 Operators → Installed Operators。
- 在列表中找到 Cluster Observability Operator 条目。
- 在这个条目中点 并选择 Uninstall Operator。
验证
- 进入 Operators → Installed Operators,验证 Cluster Observability Operator 条目是否不再出现在列表中。
第 4 章 配置 Cluster Observability Operator 以监控服务
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以通过配置由 Cluster Observability Operator (COO) 管理的监控堆栈来监控服务的指标。
要测试监控服务,请按照以下步骤执行:
- 部署定义服务端点的示例服务。
-
创建一个
ServiceMonitor
对象,用于指定服务如何被 COO 监控。 -
创建
MonitoringStack
对象来发现ServiceMonitor
对象。
4.1. 为 Cluster Observability Operator 部署示例服务
此配置会在用户定义的 ns1-coo
项目中部署一个名为 prometheus-coo-example-app
的示例服务。该服务会公开自定义 version
指标。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。
流程
创建名为
prometheus-coo-example-app.yaml
的 YAML 文件,其中包含命名空间、部署和服务的以下配置详情:apiVersion: v1 kind: Namespace metadata: name: ns1-coo --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: replicas: 1 selector: matchLabels: app: prometheus-coo-example-app template: metadata: labels: app: prometheus-coo-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.2 imagePullPolicy: IfNotPresent name: prometheus-coo-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-coo-example-app type: ClusterIP
- 保存该文件。
运行以下命令,将配置应用到集群:
$ oc apply -f prometheus-coo-example-app.yaml
运行以下命令验证 pod 是否正在运行,并观察输出:
$ oc -n ns1-coo get pod
输出示例
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
4.2. 指定 Cluster Observability Operator 如何监控服务
要使用您在 "Deploying a sample service for Cluster Observability Operator" 部分创建的样本服务公开的指标,您必须将监控组件配置为从 /metrics
端点中提取指标。
您可以使用一个 ServiceMonitor
对象来创建此配置,指定如何监控该服务,或指定如何监控 pod 的 PodMonitor
对象。ServiceMonitor
对象需要一个 Service
对象。PodMonitor
对象不需要,它允许 MonitoringStack
对象直接从 Pod 公开的指标端点中提取指标。
此流程演示了如何在 ns1-coo
命名空间中为名为 prometheus-coo-example-app
的示例服务创建 ServiceMonitor
对象。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
您已在
ns1-coo
命名空间中部署了prometheus-coo-example-app
示例服务。注意prometheus-coo-example-app
示例服务不支持 TLS 身份验证。
流程
创建名为
example-coo-app-service-monitor.yaml
的 YAML 文件,其中包含以下ServiceMonitor
对象配置详情:apiVersion: monitoring.rhobs/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-coo-example-monitor name: prometheus-coo-example-monitor namespace: ns1-coo spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-coo-example-app
此配置定义
MonitoringStack
对象将引用的ServiceMonitor
对象,以提取由prometheus-coo-example-app
示例服务公开的指标数据。运行以下命令,将配置应用到集群:
$ oc apply -f example-coo-app-service-monitor.yaml
运行以下命令并验证
ServiceMonitor
资源是否已创建并观察输出:$ oc -n ns1-coo get servicemonitors.monitoring.rhobs
输出示例
NAME AGE prometheus-coo-example-monitor 81m
4.3. 为 Cluster Observability Operator 创建 MonitoringStack 对象
要提取目标 prometheus-coo-example-app
服务公开的指标数据,请创建一个 MonitoringStack
对象,该对象引用您在"指定如何监控 Cluster Observability Operator"部分中创建的 ServiceMonitor
对象。然后,此 MonitoringStack
对象可以发现服务并从中提取公开的指标数据。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
-
您已在
ns1-coo
命名空间中部署了prometheus-coo-example-app
示例服务。 -
您已在
ns1-coo
命名空间中创建一个名为prometheus-coo-example-monitor
的ServiceMonitor
对象。
流程
-
为
MonitoringStack
对象配置创建一个 YAML 文件。在本例中,将文件命名为example-coo-monitoring-stack.yaml
。 添加以下
MonitoringStack
对象配置详情:MonitoringStack
对象示例apiVersion: monitoring.rhobs/v1alpha1 kind: MonitoringStack metadata: name: example-coo-monitoring-stack namespace: ns1-coo spec: logLevel: debug retention: 1d resourceSelector: matchLabels: k8s-app: prometheus-coo-example-monitor
运行以下命令来应用
MonitoringStack
对象:$ oc apply -f example-coo-monitoring-stack.yaml
运行以下命令并检查输出,验证
MonitoringStack
对象是否可用:$ oc -n ns1-coo get monitoringstack
输出示例
NAME AGE example-coo-monitoring-stack 81m
第 5 章 Observability UI 插件
5.1. Observability UI 插件概述
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以使用 Cluster Observability Operator (COO) 来安装和管理 UI 插件,以增强 OpenShift Container Platform Web 控制台的可观察性功能。该插件扩展默认功能,为监控、故障排除、分布式追踪和集群日志记录提供了新的 UI 功能。
5.1.1. 仪表板
仪表板 UI 插件支持 OpenShift Container Platform Web 控制台中的增强仪表板,位于 Observe → Dashboards。除了集群内数据源外,您还可以将集群中的其他 Prometheus 数据源添加到默认仪表板中。这会导致在不同数据源间获得统一的可观察性体验。
如需更多信息,请参阅仪表板 UI 插件页。
5.1.2. 故障排除
OpenShift Container Platform 版本 4.16+ 的故障排除面板 UI 插件提供了可观察信号关联,由开源 Korrel8r 项目提供支持。您可以使用 Observe → Alerting 页中的故障排除面板在不同数据存储中轻松关联指标、日志、警报、网络流和其他可观察信号和资源。OpenShift Container Platform 版本 4.17+ 的用户可从 Application Launcher 访问故障排除 UI 面板。
Korrel8r 的输出显示为交互式节点图。当您点节点时,会使用该节点的具体信息自动重定向到对应的 web 控制台页,如指标、日志或 pod。
如需更多信息,请参阅 UI 插件故障排除页。
5.1.3. 分布式追踪
分布式追踪 UI 插件在 Observe → Traces 页的 web 控制台中添加与追踪相关的功能。您可以跟踪通过前端和微服务后端的请求,帮助您识别分布式系统中的代码错误和性能瓶颈。您可以选择在集群中运行的 TempoStack
或 TempoMonolithic
多租户实例,并设置时间范围和查询来查看 trace 数据。
如需更多信息,请参阅分布式追踪 UI 插件页。
5.1.4. 集群日志记录
日志记录 UI 插件在 Observe → Logs 页的 web 控制台中提供日志数据。您可以指定过滤器、查询、时间范围和刷新率。结果显示折叠日志列表,然后扩展以显示每个日志的详细信息。
如需更多信息,请参阅日志记录 UI 插件页。
5.2. 仪表板 UI 插件
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
仪表板 UI 插件支持 OpenShift Web 控制台中的增强仪表板,位于 Observe → Dashboards。除了 in-cluster 数据源外,您还可以将集群中的其他 Prometheus 数据源添加到默认仪表板中。这会导致在不同数据源间获得统一的可观察性体验。
该插件从 openshift-config-managed
命名空间中的 ConfigMap
资源搜索数据源,其标签为 console.openshift.io/dashboard-datasource: 'true'
。
5.2.1. 安装 Cluster Observability Operator 仪表板 UI 插件
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 Cluster Observability Operator。
流程
- 在 OpenShift Container Platform web 控制台中,点 Operators → Installed Operators 并选择 Cluster Observability Operator。
- 选择 UI Plugin 选项卡(在选项卡列表的最右侧),然后按 Create UIPlugin。
选择 YAML 视图,输入以下内容,然后按 Create :
apiVersion: observability.openshift.io/v1alpha1 kind: UIPlugin metadata: name: dashboards spec: type: Dashboards
5.2.2. 配置仪表板
仪表板 UI 插件从 openshift-config-managed
命名空间中的 ConfigMap
资源搜索数据源,其标签为 console.openshift.io/dashboard-datasource: 'true'
。ConfigMap
资源必须定义数据源类型和可获取数据的 in-cluster 服务。
以下部分中的示例取自 https://github.com/openshift/console-dashboards-plugin。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 Cluster Observability Operator。
- 已安装仪表板 UI 插件。
流程
在
openshift-config-managed
命名空间中创建ConfigMap
资源,标签为console.openshift.io/dashboard-datasource: 'true'
。以下示例来自 prometheus-datasource-example.yamlapiVersion: v1 kind: ConfigMap metadata: name: cluster-prometheus-proxy namespace: openshift-config-managed labels: console.openshift.io/dashboard-datasource: "true" data: "dashboard-datasource.yaml": |- kind: "Datasource" metadata: name: "cluster-prometheus-proxy" project: "openshift-config-managed" spec: plugin: kind: "prometheus" spec: direct_url: "https://prometheus-k8s.openshift-monitoring.svc.cluster.local:9091"
配置连接到数据源的自定义仪表板。示例仪表板的 YAML 位于 prometheus-dashboard-example.yaml 中。以下摘录显示了该文件的演示目的:
例 5.1. 从示例仪表板中提取(从 prometheus-dashboard-example.yaml 获得)
apiVersion: v1 kind: ConfigMap metadata: name: dashboard-example namespace: openshift-config-managed labels: console.openshift.io/dashboard: "true" data: k8s-resources-workloads-namespace.json: |- { "annotations": { "list": [ ] }, "editable": true, "gnetId": null, "graphTooltip": 0, "hideControls": false, "links": [ ], "refresh": "10s", "rows": [ { "collapse": false, "height": "250px", "panels": [ { "aliasColors": { }, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "name": "cluster-prometheus-proxy", "type": "prometheus" }, "fill": 10, "id": 1, "interval": "1m", "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 0, "links": [ ], "nullPointMode": "null as zero", "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "quota - requests", "color": "#F2495C", "dashes": true, "fill": 0, "hiddenSeries": true, "hideTooltip": true, "legend": true, "linewidth": 2, "stack": false }, { "alias": "quota - limits", "color": "#FF9830", "dashes": true, "fill": 0, "hiddenSeries": true, "hideTooltip": true, "legend": true, "linewidth": 2, "stack": false } ], "spaceLength": 10, "span": 12, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum( node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}* on(namespace,pod) group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{workload}} - {{workload_type}}", "legendLink": null, "step": 10 }, { "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.cpu\"})", "format": "time_series", "intervalFactor": 2, "legendFormat": "quota - requests", "legendLink": null, "step": 10 }, { "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.cpu\"})", "format": "time_series", "intervalFactor": 2, "legendFormat": "quota - limits", "legendLink": null, "step": 10 } ], "thresholds": [ ], "timeFrom": null, "timeShift": null, "title": "CPU Usage", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [ ] }, ...
点 Observe → Dashboards,自定义仪表板会基于
prometheus-dashboard-example.yaml
中的配置,标题为 ** DASHBOARD EXAMPLE **。您可以在 UI 中为仪表板设置命名空间、时间范围和刷新间隔。
5.2.3. 其他资源
- 请参阅如何在 console-dashboards-plugin GitHub 存储库中添加新数据源。
5.3. 分布式追踪 UI 插件
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
分布式追踪 UI 插件将与追踪相关的功能添加到 OpenShift Web 控制台的 Administrator 视角中,位于 Observe → Traces。您可以跟踪通过前端和微服务后端的请求,帮助您识别分布式系统中的代码错误和性能瓶颈。
5.3.1. 安装 Cluster Observability Operator distributed tracing UI 插件
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 Cluster Observability Operator
流程
- 在 OpenShift Container Platform web 控制台中,点 Operators → Installed Operators 并选择 Cluster Observability Operator
- 选择 UI Plugin 选项卡(在选项卡列表的最右侧),然后按 Create UIPlugin
选择 YAML 视图,输入以下内容,然后按 Create :
apiVersion: observability.openshift.io/v1alpha1 kind: UIPlugin metadata: name: distributed-tracing spec: type: DistributedTracing
5.3.2. 使用 Cluster Observability Operator distributed tracing UI 插件
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 Cluster Observability Operator。
- 已安装 Cluster Observability Operator distributed tracing UI 插件。
-
在集群中有一个
TempoStack
或TempoMonolithic
多租户实例。
流程
- 在 OpenShift Container Platform Web 控制台的 Administrator 视角中,点 Observe → Traces。
选择
TempoStack
或TempoMonolithic
多租户实例,并为要加载的 trace 设置时间范围和查询。trace 显示在 scatter-plot 中,显示 trace 开始时间、持续时间和 span 数量。在 scatter 图表下,有一个跟踪列表,显示
Trace Name
、Spans
的数量和Duration
等信息。点一个 trace 名称链接。
所选 trace 的 trace 详情页包括了 trace 中所有范围的 Gantt 图表。选择一个 span 来显示配置的属性的分类。
5.4. UI 插件故障排除
Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
OpenShift Container Platform 版本 4.16+ 的故障排除 UI 插件提供可观察信号关联,由开源 Korrel8r 项目提供支持。使用 Observe → Alerting 下的故障排除面板,您可以在不同的数据存储中轻松关联指标、日志、警报、网络流和其他可观察信号和资源。OpenShift Container Platform 版本 4.17+ 的用户可从 Application Launcher 访问故障排除 UI 面板。
当您安装故障排除 UI 插件时,名为 korrel8r
的 Korrel8r 服务会部署到同一命名空间中,并且能够从其关联引擎中查找相关的可观察信号和 Kubernetes 资源。
Korrel8r 的输出以 OpenShift Container Platform Web 控制台中的交互式节点图的形式显示。图中的节点代表资源类型或信号,而边缘代表关系。当您点节点时,会使用该节点的具体信息自动重定向到对应的 web 控制台页,如指标、日志或 pod。
5.4.1. 安装 Cluster Observability Operator Troubleshooting UI 插件
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 Cluster Observability Operator
流程
- 在 OpenShift Container Platform web 控制台中,点 Operators → Installed Operators 并选择 Cluster Observability Operator
- 选择 UI Plugin 选项卡(在选项卡列表的最右侧),然后按 Create UIPlugin
选择 YAML 视图,输入以下内容,然后按 Create :
apiVersion: observability.openshift.io/v1alpha1 kind: UIPlugin metadata: name: troubleshooting-panel spec: type: TroubleshootingPanel
5.4.2. 使用 Cluster Observability Operator 对 UI 插件进行故障排除
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问 OpenShift Container Platform 集群。如果集群版本是 4.17+,您可以从 Application Launcher 访问 UI 面板。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 OpenShift Container Platform Logging,如果要视觉化关联的日志。
- 已安装 OpenShift Container Platform Network Observability,如果要视觉化关联的 netflows。
- 已安装 Cluster Observability Operator。
已安装 Cluster Observability Operator 故障排除 UI 插件。
注意故障排除面板依赖于集群中安装的可观察信号存储。Kuberenetes 资源、警报和指标在 OpenShift Container Platform 集群中始终可用。其他信号类型需要安装可选组件:
- Logs: 由红帽提供的 Red Hat Openshift Logging (集合)和 Loki Operator (存储)
- Network events: 红帽提供的网络可观察性(集合)和 Loki Operator (存储)
流程
在 Web 控制台的 admin 视角中,进入到 Observe → Alerting,然后选择警报。如果警报关联了项目,则会在警报详情页的图表上方显示 Troubleshooting Panel 链接。
点 Troubleshooting Panel 链接以显示面板。
-
面板由查询详情和查询结果的拓扑图组成。所选警报转换为 Korrel8r 查询字符串,并发送到
korrel8r
服务。结果显示为一个连接了返回的信号和资源的图形网络。这是一个 neighbourhood 图形,从当前资源开始,包括了从起点开始的 3 个步骤的相关对象。点图中的节点会进入相应的 web 控制台页面。 您可以使用故障排除面板查找与所选警报相关的资源。
注意点某个节点有时可能会显示比图形上指示要少的结果。这是一个已知问题,将在以后的发行版本中解决。
-
Alert (1): 此节点是图中的起点,代表 web 控制台中显示的
KubeContainerWaiting
警报。 -
Pod (1): 此节点表示与此警报关联的单个
Pod
资源。点此节点将打开控制台搜索,直接显示相关的 pod。 - Event (2): 与 pod 关联的两个 Kuberenetes 事件。点此节点查看事件。
- Logs (74): 此 pod 具有 74 行日志,您可以通过点这个节点来访问这些日志。
- Metrics (105): 与 pod 关联的多个指标。
-
Network (6): 网络事件,代表 pod 通过网络进行通信。图中的其余节点代表 pod 与其进行通信的
Service
,Deployment
和DaemonSet
资源。 - Focus:点此按钮更新图形。默认情况下,当您点图形中的节点时,图形本身不会改变。相反,主 Web 控制台页会改变,然后使用页面上的链接导航到其他资源,而故障排除面板本身则保持打开且没有变化。要强制更新故障排除面板中的图形,请点 Focus。这将使用 web 控制台中的当前资源作为起点来绘制新的图形。
Show Query: 点这个按钮启用一些实验性功能:
- Hide Query 隐藏实验性功能。
- 标识图形起点的查询。查询语言是用于创建图形的 Korrel8r 关联引擎的一部分,是实验性的,可能会在以后有所变化。该查询由 Focus 按钮更新,以对应于主 Web 控制台窗口中的资源。
Neighbourhood depth 用于显示一个较小的或较大的邻居。
注意在大型集群中设置较大的值可能会因为结果太大导致查询失败。
目标类 会导致目标定向搜索而不是邻居搜索。目标定向搜索显示从起点到目标类的所有路径,该类表示资源类型或信号。目标类的格式是实验性的,可能会改变。当前,以下目标有效:
-
k8s:RESOURCE[VERSION.[GROUP]]
识别 kuberenetes 资源的 kind。例如k8s:Pod
或k8s:Deployment.apps.v1
。 -
alert:alert
代表任何警报。 -
metric:metric
代表任何指标。 -
netflow:network
代表任何网络可观察网络事件。 -
log:LOG_TYPE
代表存储的日志,其中LOG_TYPE
需要是application
,infrastructure
或audit
之一。
-
-
Alert (1): 此节点是图中的起点,代表 web 控制台中显示的
5.4.3. 创建示例警报
要触发警报作为在故障排除 UI 面板中使用的起点,您可以有意部署一个有配置错误的容器。
流程
使用以下 YAML (通过命令行或在 web 控制台中),在系统命名空间中创建一个有问题的部署:
apiVersion: apps/v1 kind: Deployment metadata: name: bad-deployment namespace: default 1 spec: selector: matchLabels: app: bad-deployment template: metadata: labels: app: bad-deployment spec: containers: 2 - name: bad-deployment image: quay.io/openshift-logging/vector:5.8
查看警报:
选 Observe → Alerting,再点 clear all filters。查看
Pending
警报。重要警报先显示为
Pending
状态。它们不会立即开始Firing
,而是在容器崩溃一段时间后才会启动 。您可以直接查看Pending
警报,这样就无需等待很长时间才能看到它们。-
选择
KubeContainerWaiting
、KubePodCrashLooping
或KubePodNotReady
警报之一,然后点链接打开故障排除面板。或者,如果面板已经打开,点 "Focus" 按钮来更新图形。
5.5. Logging UI 插件
在 Cluster Observability Operator (COO) (当前为技术预览(TP))正式发布 (GA) 版本之前,红帽为 OpenShift Container Platform 4.14 或更高版本上的日志记录 UI 插件提供支持。这个支持例外是临时的,因为 COO 包括几个独立的功能,其中的一些功能仍为 TP 功能,但日志记录 UI 插件已准备好 GA。
logging UI 插件会在 OpenShift Container Platform web 控制台的 Observe → Logs 页中显示日志数据。您可以指定过滤条件、查询、时间范围和刷新率,其结果显示为一个折叠的日志列表,您可以扩展它来显示每个日志的更多详细信息。
当您在 OpenShift Container Platform 版本 4.16+ 上部署 Troubleshooting UI 插件时,它会连接到 Korrel8r 服务,并添加来自 Administration 视角的直接链接(从 Observe → Logs 页添加到 Observe → Metrics 页并带有关联的 PromQL 查询)。它还会添加一个来自 Administration 视角警报详情 的 See Related Logs 链接(从 Observe → Alerting 添加到 Observe → Logs 页,并带有所选的相关过滤集。
插件的功能可以归类为:
- dev-console
- 将日志记录视图添加到 Developer 视角。
- alerts
- 将 Web 控制台警报与 Loki 规则器中定义的基于日志的警报合并。在警报详情视图中添加基于日志的指标图表。
- dev-alerts
- 将 Web 控制台警报与 Loki 规则器中定义的基于日志的警报合并。在 Developer 视角的警报详情视图中添加基于日志的指标图。
对于 Cluster Observability Operator (COO) 版本,下表显示了对 OpenShift Container Platform 版本中的这些功能的支持信息:
COO 版本 | OCP 版本 | 功能 |
---|---|---|
0.3.0+ | 4.12 |
|
0.3.0+ | 4.13 |
|
0.3.0+ | 4.14+ |
|
5.5.1. 安装 Cluster Observability Operator 日志记录 UI 插件
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
- 已安装 Cluster Observability Operator。
-
在集群中有一个
LokiStack
实例。
流程
- 在 OpenShift Container Platform web 控制台中,点 Operators → Installed Operators 并选择 Cluster Observability Operator。
- 选择 UI Plugin 选项卡(位于选项卡列表的最右侧),然后点 Create UIPlugin。
选择 YAML 视图,输入以下内容,然后点 Create :
apiVersion: observability.openshift.io/v1alpha1 kind: UIPlugin metadata: name: logging spec: type: Logging logging: lokiStack: name: logging-loki logsLimit: 50 timeout: 30s
Legal Notice
Copyright © 2024 Red Hat, Inc.
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.