如何在Kubernetes的Prometheus/Grafana中配置RabbitMQ监控指标
RabbitMQ监控指标无法被Prometheus抓取的问题排查与修复
你的配置里存在几个关键问题,导致Prometheus无法抓取RabbitMQ的监控指标,以下是具体修复步骤:
1. 启用RabbitMQ Prometheus插件
默认的rabbitmq:3.7.3-management镜像不带Prometheus exporter插件,必须手动启用。修改RabbitMQ StatefulSet的容器配置,添加启动命令启用插件:
apiVersion: apps/v1 kind: StatefulSet metadata: name: xxx-rabbitmq spec: selector: matchLabels: app: xxx-rabbitmq serviceName: xxx-rabbitmq replicas: 1 template: metadata: labels: app: xxx-rabbitmq spec: terminationGracePeriodSeconds: 10 containers: - name: xxx-rabbitmq image: rabbitmq:3.7.3-management # 添加启动命令启用Prometheus插件 command: - sh - -c - | rabbitmq-plugins enable rabbitmq_prometheus rabbitmq-server ports: - containerPort: 5672 # AMQP默认端口,替换你实际使用的端口 name: main - containerPort: 5671 # SSL端口,替换你实际使用的端口 name: rabbitmqssl - containerPort: 15672 # Management端口,替换你实际使用的端口 name: rabbitmqmgmt - containerPort: 15692 # Prometheus metrics默认端口 name: prometheus volumeMounts: - name: xxx-rabbitmq-pvc mountPath: /var/lib/rabbitmq subPath: rabbitmq envFrom: - configMapRef: name: rabbitmq-config volumeClaimTemplates: - metadata: name: xxx-rabbitmq-pvc spec: accessModes: ["ReadWriteOnce"] volumeMode: Filesystem storageClassName: xxxx-storage resources: requests: storage: 10Gi
2. 更新RabbitMQ Service暴露Metrics端口
在RabbitMQ Service中添加Prometheus端口的暴露配置,确保Prometheus能找到正确的Endpoint:
apiVersion: v1 kind: Service metadata: name: xxx-rabbitmq labels: app: xxx-rabbitmq spec: type: ClusterIP ports: - port: 5672 name: main - port: 5671 name: rabbitmqssl - port: 15672 name: rabbitmqmgmt - port: 15692 # 新增Prometheus metrics端口 name: prometheus selector: app: xxx-rabbitmq
3. 修正Prometheus抓取配置
原配置中的relabel规则存在标签不匹配、缺少action的问题,修改后的RabbitMQ抓取job如下:
- job_name: 'rabbitmq' metrics_path: /metrics scrape_interval: 5s kubernetes_sd_configs: - role: endpoints namespaces: names: - default relabel_configs: - source_labels: [__meta_kubernetes_service_label_app] separator: ; regex: xxx-rabbitmq # 匹配Service的app标签值,和你实际的标签一致 replacement: $1 action: keep - source_labels: [__meta_kubernetes_endpoint_port_name] separator: ; regex: prometheus # 匹配Service中定义的端口名称 action: keep # 必须添加该动作,否则规则不生效
4. 验证与生效
- 重新应用所有修改后的配置:
kubectl apply -f rabbitmq-statefulset.yaml -n default kubectl apply -f rabbitmq-service.yaml -n default kubectl apply -f prometheus-config.yaml -n monitoring # 重启Prometheus Pod加载新配置 kubectl rollout restart deployment prometheus -n monitoring - 检查RabbitMQ插件是否成功启用:
kubectl exec -it xxx-rabbitmq-0 -n default -- rabbitmq-plugins list # 输出中应包含 rabbitmq_prometheus, [E*] 表示已启用 - 打开Prometheus的Targets页面,查看
rabbitmqjob是否显示为UP状态。 - 在Grafana中导入RabbitMQ专用Dashboard,配置Prometheus数据源后即可查看完整的监控指标。
内容的提问来源于stack exchange,提问作者Mohd Rashid
相关产品推荐
相关产品推荐

