第 13 章 监控问题的故障排除
查找用户定义的项目监控中常见问题的故障排除步骤。
13.1. 确定为什么用户定义的项目指标不可用
如果在监控用户定义的项目时没有显示指标,请按照以下步骤排除此问题。
流程
查询指标名称,并验证项目是否正确:
-
从 web 控制台中的 Developer 视角,选择 Observe
Metrics。 - 在 Project: 列表中选择您要查看指标的项目。
从 Select query 列表中选择查询,或通过选择 Show PromQL 运行自定义 PromQL 查询。
指标显示在图表中。
查询需要基于每个项目。显示的指标与您选择的项目相关。
-
从 web 控制台中的 Developer 视角,选择 Observe
验证您要来自的 pod 是否活跃提供指标。在一个 pod 中运行以下
oc exec
命令,以podIP
、port
, and/metrics
为目标。$ oc exec <sample_pod> -n <sample_namespace> -- curl <target_pod_IP>:<port>/metrics
注意您必须在安装了
curl
的 pod 上运行命令。以下示例输出显示了具有有效版本指标的结果。
输出示例
% 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
、port
和/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
匹配标签。
- 如果一切都有效且指标仍不可用,请联系支持团队以获得进一步的帮助。