启用RabbitMQ ServiceMonitor后Prometheus未检测到该资源的问题排查
问题排查与修复方案
核心排查方向
1. 标签匹配问题(最常见原因)
kube-prometheus-stack 默认的 Prometheus 实例会通过 serviceMonitorSelector 筛选要监控的 ServiceMonitor 资源,默认筛选标签为 release: kube-prometheus-stack。你需要确认 RabbitMQ 的 ServiceMonitor 是否带有这个标签:
- 查看 RabbitMQ 的 ServiceMonitor 标签:
kubectl get servicemonitor -n utils -o yaml - 如果没有匹配的标签,修改 RabbitMQ 的 values.yml,给 ServiceMonitor 添加对应标签:
metrics: enabled: true serviceMonitor: enabled: true labels: release: kube-prometheus-stack - 重新升级 RabbitMQ Helm Release:
helm upgrade rabbitmq bitnami/rabbitmq -n utils -f rabbitmq-values.yml
2. ServiceMonitor 端口配置校验
检查 ServiceMonitor 的端口是否和 RabbitMQ metrics 服务的端口名一致:
- 查看 RabbitMQ metrics 服务的端口信息:
kubectl get svc -n utils | grep rabbitmq-metrics - 对比 ServiceMonitor 的
spec.endpoints[0].port字段,确保和 metrics 服务的端口名完全匹配(Bitnami RabbitMQ 的 metrics 端口默认名为metrics)。
3. Prometheus 权限与配置生效检查
- 确认 Prometheus 的 ServiceAccount 拥有访问
utils命名空间 ServiceMonitor 的权限:
查看 kube-prometheus-stack 默认的 ClusterRole:
确保包含以下规则:kubectl get clusterrole kube-prometheus-stack-prometheus -o yaml- apiGroups: ["monitoring.coreos.com"] resources: ["servicemonitors"] verbs: ["get", "list", "watch"] - 确认 Prometheus 的
serviceMonitorNamespaceSelector配置已生效:
查看 Prometheus 实例配置:
确保输出为kubectl get prometheus -n kube-prometheus-stack kube-prometheus-stack-prometheus -o yaml | grep -A5 serviceMonitorNamespaceSelector{},如果未生效,重新升级 kube-prometheus-stack:helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack -n kube-prometheus-stack -f prometheus-values.yml
4. 资源状态校验
- 检查 RabbitMQ metrics 服务是否正常运行:
kubectl get pods -n utils | grep rabbitmq kubectl get svc -n utils rabbitmq-metrics -o yaml - 检查 ServiceMonitor 是否没有配置错误:
kubectl describe servicemonitor -n utils rabbitmq-metrics
内容的提问来源于stack exchange,提问作者FN_
相关产品推荐
相关产品推荐

