You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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. 验证与生效

  1. 重新应用所有修改后的配置:
    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
    
  2. 检查RabbitMQ插件是否成功启用:
    kubectl exec -it xxx-rabbitmq-0 -n default -- rabbitmq-plugins list
    # 输出中应包含 rabbitmq_prometheus, [E*] 表示已启用
    
  3. 打开Prometheus的Targets页面,查看rabbitmq job是否显示为UP状态。
  4. 在Grafana中导入RabbitMQ专用Dashboard,配置Prometheus数据源后即可查看完整的监控指标。

内容的提问来源于stack exchange,提问作者Mohd Rashid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:45:40