Installing Red Hat OpenShift Cluster Observability Operator
安装和配置 Cluster Observability Operator。
摘要
第 1 章 安装 Cluster Observability Operator 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装或删除 Cluster Observability Operator (COO)。OperatorHub 是一个用户界面,可与 Operator Lifecycle Manager (OLM) 结合使用,它在集群中安装和管理 Operator。
1.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 → stable
- 版本 → 1.0.0 或更高版本
- Installation mode → All namespaces on the cluster (default)
- Installed Namespace → Operator recommended Namespace: openshift-cluster-observability-operator
- 选择 Enable Operator recommended cluster monitoring on this Namespace
- Update approval → Automatic
- 可选: 您可以更改安装设置以满足您的要求。例如,您可以选择订阅不同的更新频道,安装一个旧的 Operator 发行版本,或者需要手动批准对 Operator 的新版本进行更新。
- 点 Install。
验证
- 进入 Operators → Installed Operators,并验证 Cluster Observability Operator 条目是否出现在列表中。
其他资源
1.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 条目是否不再出现在列表中。
第 2 章 配置 Cluster Observability Operator 以监控服务 复制链接链接已复制到粘贴板!
您可以通过配置由 Cluster Observability Operator (COO) 管理的监控堆栈来监控服务的指标。
要测试监控服务,请按照以下步骤执行:
- 部署定义服务端点的示例服务。
-
创建一个
ServiceMonitor
对象,用于指定服务如何被 COO 监控。 -
创建
MonitoringStack
对象来发现ServiceMonitor
对象。
2.1. 为 Cluster Observability Operator 部署示例服务 复制链接链接已复制到粘贴板!
此配置会在用户定义的 ns1-coo
项目中部署一个名为 prometheus-coo-example-app
的示例服务。该服务会公开自定义 version
指标。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。
流程
创建名为
prometheus-coo-example-app.yaml
的 YAML 文件,其中包含命名空间、部署和服务的以下配置详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行以下命令,将配置应用到集群:
oc apply -f prometheus-coo-example-app.yaml
$ oc apply -f prometheus-coo-example-app.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 pod 是否正在运行,并观察输出:
oc -n ns1-coo get pod
$ oc -n ns1-coo get pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.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
对象配置详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置定义
MonitoringStack
对象将引用的ServiceMonitor
对象,以提取由prometheus-coo-example-app
示例服务公开的指标数据。运行以下命令,将配置应用到集群:
oc apply -f example-coo-app-service-monitor.yaml
$ oc apply -f example-coo-app-service-monitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并验证
ServiceMonitor
资源是否已创建并观察输出:oc -n ns1-coo get servicemonitors.monitoring.rhobs
$ oc -n ns1-coo get servicemonitors.monitoring.rhobs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE prometheus-coo-example-monitor 81m
NAME AGE prometheus-coo-example-monitor 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要提取目标 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
对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用
MonitoringStack
对象:oc apply -f example-coo-monitoring-stack.yaml
$ oc apply -f example-coo-monitoring-stack.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并检查输出,验证
MonitoringStack
对象是否可用:oc -n ns1-coo get monitoringstack
$ oc -n ns1-coo get monitoringstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE example-coo-monitoring-stack 81m
NAME AGE example-coo-monitoring-stack 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下 comand,以从 Prometheus 检索有关活动目标的信息,并过滤输出以仅列出标有
app=prometheus-coo-example-app
的目标。这会验证被发现哪些目标,并由 Prometheus 使用这个特定标签主动监控。oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[].discoveredLabels | select(.__meta_kubernetes_endpoints_label_app=="prometheus-coo-example-app")'
$ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[].discoveredLabels | select(.__meta_kubernetes_endpoints_label_app=="prometheus-coo-example-app")'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意上面的示例使用
jq
命令行 JSON 处理器来格式化输出,以方便使用。
2.4. 验证监控堆栈 复制链接链接已复制到粘贴板!
要验证监控堆栈是否正常工作,请访问 example 服务,然后查看收集的指标。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
-
您已在
ns1-coo
命名空间中部署了prometheus-coo-example-app
示例服务。 -
您已在
ns1-coo
命名空间中创建一个名为prometheus-coo-example-monitor
的ServiceMonitor
对象。 -
您已在
ns1-coo
命名空间中创建一个名为example-coo-monitoring-stack
的MonitoringStack
对象。
流程
创建一个路由,以公开
prometheus-coo-example-app
服务示例。在终端中运行以下命令:oc expose svc prometheus-coo-example-app -n ns1-coo
$ oc expose svc prometheus-coo-example-app -n ns1-coo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从浏览器或命令行访问路由,以生成指标。
在 Prometheus pod 上执行查询,以返回总 HTTP 请求指标:
oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/query?query=http_requests_total'
$ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/query?query=http_requests_total'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例(为方便起见使用
jq
进行格式化)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 在多个命名空间中 Scrape 目标 复制链接链接已复制到粘贴板!
要在多个命名空间中 Scrape 目标,请在 MonitoringStack
对象中设置命名空间和资源选择器。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
流程
部署以下命名空间对象和
MonitoringStack
YAML 文件:MonitoringStack
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命名空间
ns1-coo
中部署示例应用程序,其中包含始终会触发的警报:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在标有
monitoring.rhobs/stack: multi-ns
的另一个命名空间中部署相同的示例应用程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 Prometheus 实例是否已添加新目标,以及警报是否已触发。使用 port-forward 命令公开 Prometheus 或
Monitoringstack
实例部署的 Alertmanager 用户界面。Prometheus
oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090
$ oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alertmanager
oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093
$ oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过浏览
http://localhost:9090/targets
或http://localhost:9093/#/alerts
来验证目标是否已被 scrape。