Emqx RabbitMQ 集成环境

version: '3'
services:
  emqx:
    image: emqx/emqx:latest
    environment:
      - EMQX_DASHBOARD__DEFAULT_USER=admin
      - EMQX_DASHBOARD__DEFAULT_PASSWORD=pwd
      - EMQX_LISTENER__TCP__EXTERNAL=1883
      - EMQX_LISTENER__WS__EXTERNAL=8083
    ports:
      - "18083:18083"
      - "1883:1883"
      - "8083:8083"
    networks:
      - mqtt_mq-net

  rabbitmq:
    image: rabbitmq:3-management
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=pwd
    ports:
      - "15672:15672"
      - "5672:5672"
    networks:
      - mqtt_mq-net
    
networks:
  mqtt_mq-net:
    driver: bridge

RabbitMQ 中启用 rabbitmq_prometheus 插件, 用于收集指标

在 Docker 中启用 RabbitMQ 的 Prometheus 插件稍微有些不同,因为需要在容器化环境中进行配置。以下是详细步骤:

  1. 拉取 RabbitMQ 镜像
    首先,需要从 Docker Hub 拉取包含 Prometheus 插件的 RabbitMQ 官方镜像。通常,官方镜像已经包含了 Prometheus 插件。
   docker pull rabbitmq:management

management 标签包括 RabbitMQ 管理插件和其他常用插件。

  1. 运行 RabbitMQ 容器
    使用 Docker 启动 RabbitMQ 容器,并启用 Prometheus 插件。可以在启动时通过环境变量配置端口。
   docker run -d --name rabbitmq \
     -p 15692:15692 \
     -p 15672:15672 \
     -p 5672:5672 \
     -e RABBITMQ_PROMETHEUS_PORT=15692 \
     rabbitmq:management

在这个命令中:

  • -p 15692:15692 将 Prometheus 指标暴露在主机的 15692 端口。
  • -p 15672:15672 将 RabbitMQ 管理界面暴露在主机的 15672 端口。
  • -p 5672:5672 将 AMQP 端口暴露在主机上。
  • -e RABBITMQ_PROMETHEUS_PORT=15692 用于设置 Prometheus 插件的端口。
  1. 启用 Prometheus 插件
    进入容器并启用插件。可以使用以下命令进入容器的 shell:
   docker exec -it rabbitmq bash

然后在容器内部启用 Prometheus 插件:

   rabbitmq-plugins enable rabbitmq_prometheus
  1. 验证设置
    退出容器,并在主机上通过访问 http://localhost:15692/metrics 来验证 Prometheus 指标是否已成功暴露。可以使用浏览器或 curl 命令:
   curl http://localhost:15692/metrics
  1. 配置 Prometheus
    在 Prometheus 的配置文件 prometheus.yml 中,添加 RabbitMQ 实例作为一个新的 job:
   scrape_configs:
     - job_name: 'rabbitmq'
       static_configs:
         - targets: ['localhost:15692']

记得根据实际情况调整 localhost 为合适的地址。

  1. 重启 Prometheus
    修改 Prometheus 配置文件后,重启 Prometheus 服务以加载新的配置。

通过这些步骤,可以在 Docker 中成功启用 RabbitMQ 的 Prometheus 插件。如果需要对 RabbitMQ 进行更多的配置,可以在启动容器时挂载配置文件,或者通过环境变量进行调整。