5.8. 监控问题的故障排除
查找用户定义的项目中常见监控问题的故障排除步骤。
5.8.1. 确定为什么用户定义的项目指标不可用
如果监控用户定义的项目时没有显示指标,请按照以下步骤排除此问题。
流程
查询指标名称,并验证项目是否正确:
- 在 OpenShift Container Platform web 控制台中的 Developer 视角中,选择 Observe → Metrics。
- 在 Project: 列表中选择您要查看指标的项目。
从 Select Query 列表中选择查询,或者通过选择 Show PromQL 运行自定义 PromQL 查询。
Select Query 窗格显示指标名称。
查询必须基于每个项目进行。显示的指标与您选择的项目相关。
验证您希望指标数据的 pod 是否正在主动提供指标。对 pod 运行以下
oc exec
命令,将podIP
、端口
、和/metrics
为目标。$ oc exec <sample_pod> -n <sample_namespace> -- curl <target_pod_IP>:<port>/metrics
注意您必须在安装了
curl
的 pod 上运行该命令。以下示例显示了具有有效 version 指标的结果。
输出示例
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed # HELP version Version information about this binary-- --:--:-- --:--:-- 0 # TYPE version gauge version{version="v0.1.0"} 1 100 102 100 102 0 0 51000 0 --:--:-- --:--:-- --:--:-- 51000
无效的输出表示相应应用存在问题。
-
如果使用
PodMonitor
CRD,请验证PodMonitor
CRD 是否已配置为使用与标签匹配的标签指向正确的 pod。如需更多信息,请参阅 Prometheus Operator 文档。 如果您使用
ServiceMonitor
CRD,如果 pod 的/metrics
端点显示指标数据,请按照以下步骤验证配置:验证该服务是否指向正确的
/metrics
端点。此输出中的服务标签
必须与服务监控标签
以及后续步骤中服务定义的/metrics
端点匹配。$ oc get service
输出示例
apiVersion: v1 kind: Service 1 metadata: labels: 2 app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-example-app type: ClusterIP
查询
serviceIP
、端口
和/metrics
端点,查看您之前在 pod 上运行的curl
命令中的相同指标:运行以下命令以查找服务 IP:
$ oc get service -n <target_namespace>
查询
/metrics
端点:$ oc exec <sample_pod> -n <sample_namespace> -- curl <service_IP>:<port>/metrics
以下示例中返回有效的指标。
输出示例
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 102 100 102 0 0 51000 0 --:--:-- --:--:-- --:--:-- 99k # HELP version Version information about this binary # TYPE version gauge version{version="v0.1.0"} 1
使用与匹配的标签匹配,验证
ServiceMonitor
对象是否已配置为指向所需服务。为此,请将oc get service
输出中的Service
对象与oc get servicemonitor
输出中的ServiceMonitor
对象进行比较。标签必须与才能显示的指标匹配。例如,在前面的步骤中,注意
Service
对象如何具有app: prometheus-example-app
标签,并且ServiceMonitor
对象具有相同的app: prometheus-example-app
match 标签。
- 如果一切看起来有效并且指标仍不可用,请联系支持团队以获得进一步的帮助。