
RabbitMQ Exporter是一个Prometheus指标导出器,用于从RabbitMQ管理插件抓取指标并暴露给Prometheus进行监控。它是非官方插件,相比RabbitMQ官方Prometheus插件,提供了更多配置选项和指标过滤功能,同时支持旧版本RabbitMQ。
适用于需要监控RabbitMQ集群的场景,尤其适合:
从https://github.com/kbudde/rabbitmq_exporter/releases%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%EF%BC%8C%E9%80%9A%E8%BF%87%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E9%85%8D%E7%BD%AE%E5%90%8E%E7%9B%B4%E6%8E%A5%E8%BF%90%E8%A1%8C%E3%80%82
与RabbitMQ容器共享网络
启动RabbitMQ容器(需启用管理插件):
bashdocker run -d -e RABBITMQ_NODENAME=my-rabbit --name my-rabbit -p 9419:9419 rabbitmq:3-management
启动RabbitMQ Exporter,共享RabbitMQ容器网络:
bashdocker run -d --net=container:my-rabbit kbudde/rabbitmq-exporter
访问指标:[***]
支持通过JSON配置文件或环境变量配置,配置文件默认路径为conf/rabbitmq.conf,可通过-config-file参数指定自定义路径。
| 环境变量 | 默认值 | 描述 |
|---|---|---|
| RABBIT_URL | [***] | RabbitMQ管理插件URL(必须以http(s)://开头) |
| RABBIT_USER | guest | 管理插件用户名(需具备monitoring标签) |
| RABBIT_PASSWORD | guest | 管理插件密码 |
| RABBIT_USER_FILE | 存储用户名的文件路径(适用于Docker Secrets) | |
| RABBIT_PASSWORD_FILE | 存储密码的文件路径(适用于Docker Secrets) | |
| PUBLISH_PORT | 9419 | 导出器监听端口 |
| PUBLISH_ADDR | "" | 导出器监听地址 |
| OUTPUT_FORMAT | TTY | 日志输出格式(支持TTY和JSON) |
| LOG_LEVEL | info | 日志级别(debug/info/warning/error/fatal/panic) |
| CAFILE | ca.pem | 根证书路径(自签名证书时需要) |
| CERTFILE | client-cert.pem | 客户端证书路径 |
| KEYFILE | client-key.pem | 客户端私钥路径 |
| SKIPVERIFY | false | 是否忽略证书错误(true/0为忽略) |
| SKIP_VHOST | ^$ | 排除的虚拟主机正则表达式(先应用INCLUDE_VHOST,再应用SKIP_VHOST) |
| INCLUDE_VHOST | .* | 包含的虚拟主机正则表达式 |
| INCLUDE_QUEUES | .* | 包含的队列正则表达式 |
| SKIP_QUEUES | ^$ | 排除的队列正则表达式(先应用INCLUDE_QUEUES,再应用SKIP_QUEUES) |
| RABBIT_CAPABILITIES | bert,no_sort | RabbitMQ扩展功能(逗号分隔,支持bert/no_sort) |
| RABBIT_EXPORTERS | exchange,node,queue | 启用的指标模块(connections/shovel/federation/exchange/node/queue/memory) |
| RABBIT_TIMEOUT | 30 | 从管理插件获取数据的超时时间(秒) |
| MAX_QUEUES | 0 | 最大队列数量(0为禁用限制) |
| EXCLUDE_METRICS | 排除的指标名称(逗号分隔,如"recv_oct,recv_cnt") |
bashSKIP_QUEUES="RPC_.*" MAX_QUEUES=5000 ./rabbitmq_exporter
?sort=)避免RabbitMQ管理插件的排序开销(需RabbitMQ 3.6.8+)注意:RabbitMQ <3.6版本需禁用默认扩展功能:
bashRABBIT_CAPABILITIES=nobert ./rabbitmq_exporter
所有指标(除Golang/Prometheus自身指标外)均以rabbitmq_为前缀。
| 指标 | 描述 |
|---|---|
| up | 上次RabbitMQ抓取是否成功 |
| module_up | 上次模块抓取是否成功(标签:module) |
| module_scrape_duration_seconds | 模块抓取持续时间(标签:module) |
| exporter_build_info | 导出器构建信息(标签:version/revision/branch/build date) |
标签:cluster
| 指标 | 描述 |
|---|---|
| channels | 通道数量 |
| connections | 连接数量 |
| consumers | 消费者数量 |
| queues | 队列数量 |
| exchanges | 交换机数量 |
| queue_messages_global | 集群中就绪和未确认消息总数 |
| queue_messages_ready_global | 就绪消息数量 |
| queue_messages_unacknowledged_global | 未确认消息数量 |
| version_info | RabbitMQ版本信息(标签:rabbitmq version/erlang version/node/cluster) |
标签:cluster, vhost, queue, durable, policy, self
队列 gauge 指标
| 指标 | 描述 |
|---|---|
| queue_messages_ready | 就绪消息数量 |
| queue_messages_unacknowledged | 未确认消息数量 |
| queue_messages | 队列深度(就绪+未确认消息) |
| queue_messages_ack_total | 基本获取模式下确认的消息数量 |
| queue_messages_ready_ram | RAM中就绪消息数量 |
| queue_messages_unacknowledged_ram | RAM中未确认消息数量 |
| queue_messages_ram | RAM中消息总数 |
| queue_messages_persistent | 持久化消息数量 |
| queue_message_bytes | 消息体总大小(字节) |
| queue_message_bytes_ready | 就绪消息体大小 |
| queue_message_bytes_unacknowledged | 未确认消息体大小 |
| queue_message_bytes_ram | RAM中消息体大小 |
| queue_message_bytes_persistent | 持久化消息体大小 |
| queue_consumers | 消费者数量 |
| queue_consumer_utilisation | 队列向消费者即时投递消息的时间占比(0.0-1.0) |
| queue_memory | 队列进程占用内存(字节) |
| queue_head_message_timestamp | 队列首条消息的时间戳(仅当消息在内存中时) |
| queue_max_length_bytes | 就绪消息体大小上限 |
| queue_max_length | 就绪消息数量上限 |
| queue_idle_since_seconds | 队列进入空闲状态的时间戳(秒级Unix时间) |
| queue_reductions_total | 队列进程的reductions数量 |
| queue_state | 队列状态标记(值为1,标签:state) |
| queue_slave_nodes_len | 从节点数量 |
| queue_synchronised_slave_nodes_len | 同步的从节点数量 |
队列 counter 指标
| 指标 | 描述 |
|---|---|
| queue_disk_reads_total | 磁盘读取次数 |
| queue_disk_writes_total | 磁盘写入次数 |
| queue_messages_published_total | 发布消息总数 |
| queue_messages_confirmed_total | 确认消息总数 |
| queue_messages_delivered_total | 确认模式下投递消息总数 |
| queue_messages_delivered_noack_total | 无确认模式下投递消息总数 |
| queue_messages_get_total | 基本获取模式下确认消息总数 |
| queue_messages_get_noack_total | 基本获取模式下无确认消息总数 |
| queue_messages_redelivered_total | 重投递消息总数 |
| queue_messages_returned_total | 不可路由消息返回总数 |
标签:cluster, vhost, exchange
| 指标 | 描述 |
|---|---|
| exchange_messages_published_in_total | 交换机接收消息总数(不考虑路由) |
| exchange_messages_published_out_total | 交换机投递消息总数(考虑路由) |
标签:cluster, node, self
| 指标 | 描述 |
|---|---|
| uptime | 运行时间(毫秒) |
| running | 运行节点数量 |
| node_mem_used | 已用内存(字节) |
| node_mem_limit | 内存告警阈值(字节) |
| node_mem_alarm | 内存告警状态(1为触发) |
| node_disk_free | 可用磁盘空间(字节) |
| node_disk_free_alarm | 磁盘告警状态(1为触发) |
| node_disk_free_limit | 磁盘告警阈值(字节) |
| fd_used | 已用文件描述符数量 |
| fd_available | 可用文件描述符数量 |
| sockets_used | 已用套接字数量 |
| sockets_available | 可用套接字数量 |
| partitions | 网络分区数量(0为正常) |
标签:cluster, vhost, node, peer_host, user, self
| 指标 | 描述 |
|---|---|
| connection_channels | 通道数量 |
| connection_received_bytes | 接收字节数 |
| connection_received_packets | 接收数据包数 |
| connection_send_bytes | 发送字节数 |
| connection_send_packets | 发送数据包数 |
| connection_send_pending | 发送队列大小 |
标签:vhost, node, peer_host, user, state, self
| 指标 | 描述 |
|---|---|
| connection_status | 特定状态的连接数量 |
标签:cluster, vhost, shovel, type, self, state
| 指标 | 描述 |
|---|---|
| shovel_state | Shovel状态标记(值为1,标签:state) |
标签:cluster, node, self
| 指标 | 描述 |
|---|---|
| memory_allocated_unused_bytes | 运行时预分配但未使用的内存 |
| memory_atom_bytes | 原子占用内存 |
| memory_binary_bytes | 共享二进制数据占用内存 |
| memory_code_bytes | 代码占用内存 |
| memory_connection_channels_bytes | 连接通道占用内存 |
| memory_connection_other_bytes | 连接其他部分占用内存 |
| memory_connection_readers | 连接读取进程占用内存 |
| memory_connection_writers_bytes | 连接写入进程占用内存 |
| memory_mgmt_db_bytes | 管理数据库占用内存 |
| memory_mnesia_bytes | Mnesia数据库占用内存 |
| memory_msg_index_bytes | 消息索引占用内存 |
| memory_other_ets_bytes | 其他ETS表占用内存 |
| memory_other_proc_bytes | 其他进程占用内存 |
| memory_other_system_bytes | 其他系统内存 |
| memory_plugins_bytes | 插件占用内存 |
| memory_queue_procs_bytes | 队列主进程占用内存 |
| memory_queue_slave_procs_bytes | 队列从进程占用内存 |
| memory_reserved_unallocated_bytes | 内核预分配但未使用的内存 |
| memory_total_allocated_bytes | 总分配内存 |
| memory_total_rss_bytes | 总RSS内存 |
| memory_total_erlang_bytes | Erlang总内存 |
建议:同时使用两者以获得更全面的监控(参考https://github.com/kbudde/rabbitmq_exporter/issues/156#issuecomment-631979910%EF%BC%89
原因:默认启用了RabbitMQ 3.6.8+的扩展功能,旧版本不支持。
解决:对于RabbitMQ <3.6.8,设置环境变量:
bashRABBIT_CAPABILITIES=compat
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务