Rabbitmq Exporter 接入

最近更新时间:2024-07-16 09:33:21

我的收藏

操作场景

RabbitMQ Exporter 是一个用于监控 RabbitMQ 消息队列监控系统的 Prometheus 插件,用于收集和暴露 RabbitMQ 的性能指标。通过 RabbitMQ Exporter,用户可以实时了解消息队列的运行状况,包括消息的传输速率、队列的大小、连接数等指标信息。腾讯云可观测平台 Prometheus 提供了与 RabbitMQ Exporter 集成及开箱即用的 Grafana 监控大盘。
从 RabbitMQ 3.7.0 版本开始,RabbitMQ 内置了 Prometheus 插件,RabbitMQ 可以直接作为 Prometheus 采集目标,用于 RabbitMQ 的性能监控,而 RabbitMQ Exporter 导出指标可以作为内置采集的补充数据。

接入方式:RabbitMQ 内置导出

前提

RabbitMQ 版本不低于 3.7.0。

启用 RabbitMQ 的 Prometheus 插件

开源 RabbitMQ 开启

开启方式:
rabbitmq-plugins enable rabbitmq_prometheus
查看方式:
curl localhost:15692/metrics # 默认开放为 15692 端口

腾讯云消息队列 RabbitMQ 版 开启

腾讯云消息队列 RabbitMQ 版 中找到自己的集群,点击进入集群,在基本信息 > 其他信息 > 用 Prometheus 监控实例 > 获取监控目标中点击获取,即可得到拉取监控数据地址。




指标采集

2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心
4. 在集成中心搜索抓取任务,单击一键安装



5. 在新建页,填写指标采集名称和地址等信息,并单击保存



6. 在集成中心搜索 RabbitMQ,单击 Dashboard 操作 > Dashboard 安装/升级




接入方式:开源 Exporter 导出

方式一:一键安装(推荐)

操作步骤

2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心
4. 在集成中心搜索 RabbitMQ,单击一键安装



5. 在新建页,填写指标采集名称和地址等信息,并单击保存




配置说明

参数
说明
名称
集成名称,命名规范如下:
名称具有唯一性。
名称需要符合下面的正则:'^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'。
用户名
RabbitMQ 用户名称。
密码
RabbitMQ 用户密码。
地址
RabbitMQ web 访问地址。
标签
给指标添加自定义 Label。
Exporter 配置
需要采集的信息选项,包括 Connections, Shovel, Federation, Exchange, Node, Queue, Memory。

方式二:自定义安装

说明:
为了方便安装管理 Exporter,推荐使用腾讯云 容器服务 来统一管理。

前提条件

在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间
Prometheus 监控服务控制台 > 选择对应的 Prometheus 实例 > 数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群

操作步骤

步骤一:Exporter 部署
2. 在左侧菜单栏中单击集群。
3. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。
4. 执行以下 部署 RabbitMQ Exporter > 验证 步骤完成 Exporter 部署。
部署 RabbitMQ Exporter
在 Deployment 管理页面,选择对应的命名空间来进行部署服务,可以通过控制台的方式创建。如下以 YAML 的方式部署 Exporter, 配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: rabbitmq-exporter # 根据业务需要调整成对应的名称,建议加上 RabbitMQ 实例的信息
name: rabbitmq-exporter # 根据业务需要调整成对应的名称,建议加上 RabbitMQ 实例的信息
namespace: rabbitmq-demo # 根据业务需要调整成对应的命名空间
spec:
replicas: 1
selector:
matchLabels:
k8s-app: rabbitmq-exporter # 根据业务需要调整成对应的名称,建议加上 RabbitMQ 实例的信息
template:
metadata:
labels:
k8s-app: rabbitmq-exporter # 根据业务需要调整成对应的名称,建议加上 RabbitMQ 实例的信息
spec:
containers:
- env:
- name: RABBIT_URL
value: http://10.1.2.3:15672 # 根据业务需要调整成对应的地址
- name: RABBIT_USER
value: test # 根据业务进行调整
- name: RABBIT_PASSWORD
value: abc123 # 根据业务进行调整
- name: RABBIT_EXPORTERS
value: exchange,node,queue,memory,connections,shovel,federation # 根据业务进行调整
- name: PUBLISH_PORT
value: "8080"
image: ccr.ccs.tencentyun.com/rig-agent/common-image:rabbitmq-exporter-1.0.0
imagePullPolicy: IfNotPresent
name: rabbitmq-exporter
ports:
- containerPort: 8080
name: metric-port
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
验证
1. 在 Deployment 页面单击上述步骤创建的 Deployment,进入 Deployment 管理页面。
2. 单击日志页签,可以查看到 Exporter 成功启动并暴露对应的访问地址,如下图所示:



3. 单击 Pod 管理页签进入 Pod 页面。
4. 在右侧的操作项下单击远程登录,即可登录 Pod,在命令行窗口中执行以下 curl 命令对应 Exporter 暴露的地址,可以正常得到对应的 RabbitMQ 指标:
curl localhost:8080/metrics
执行结果如下图所示:



步骤四:添加采集任务
1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 单击数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。
3. 通过服务发现添加 PodMonitors 来定义 Prometheus 抓取任务,YAML 配置示例如下:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: rabbitmq-exporter # 填写一个唯一名称
namespace: cm-prometheus # 按量实例: 集群的 namesapce; 包年包月实例(已停止售卖): namespace 固定,不要修改
spec:
podMetricsEndpoints:
- interval: 30s
port: metric-port # 填写pod yaml中Prometheus Exporter对应的Port的Name
path: /metrics # 填写Prometheus Exporter对应的Path的值,不填默认/metrics
relabelings:
- action: replace
sourceLabels:
- instance
regex: (.*)
targetLabel: instance
replacement: 'crs-xxxxxx' # 调整成对应的 Ceph 实例 ID
- action: replace
sourceLabels:
- instance
regex: (.*)
targetLabel: ip
replacement: '1.x.x.x' # 调整成对应的 Ceph 实例 IP
namespaceSelector: # 选择要监控pod所在的namespace
matchNames:
- rabbitmq-demo
selector: # 填写要监控pod的Label值,以定位目标pod
matchLabels:
k8s-app: rabbitmq-exporter


查看监控

前提条件

Prometheus 实例已绑定 Grafana 实例。

操作步骤

1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 在实例基本信息页面,找到绑定的 Grafana 地址,打开并登录,然后在 middleware 文件夹中找到 RabbitMQ Monitoring 监控面板,查看实例相关监控数据,如下图所示:


3. RabbitMQ 内置监控可在 middleware 文件夹下的 RabbitMQ-Overview 面板中查看:




配置告警

腾讯云 Prometheus 托管服务支持告警配置,可根据业务实际的情况来添加告警策略。详情请参见 新建告警策略

附录:RabbitMQ Exporter 环境变量配置

名称
默认
描述
RABBIT_URL
http://127.0.0.1:15672
RabbitMQ 管理插件URL。
RABBIT_USER
guest
RabbitMQ 管理插件的用户名。
RABBIT_PASSWORD
guest
RabbitMQ管理插件的密码。
RABBIT_CONNECTION
direct
RabbitMQ 连接方式,direct 或者 loadbalancer。
RABBIT_USER_FILE
-
带有用户名的文件位置(对 docker secrets 有用)。
RABBIT_PASSWORD_FILE
-
带有密码的文件的位置(对 docker secrets 有用)。
PUBLISH_PORT
9419
Exporter 导出指标端口,默认9419。
PUBLISH_ADDR
""
Exporter 导出指标监听地址,默认为""。
OUTPUT_FORMAT
TTY
日志输出格式,支持TTY和JSON。
LOG_LEVEL
info
日志级别。可能的值:“debug”、“info”、“warning”、“error”、“fatal”或“panic”,默认 info。
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
^$
正则表达式,匹配的队列名称不会被导出(对于短暂的 rpc 队列很有用)。首先执行 INCLUDE,然后执行 SKIP。
INCLUDE_EXCHANGES
.*
正则表达式交换过滤器。(仅导出匹配的虚拟主机中的交换)。
SKIP_EXCHANGES
^$
正则表达式,匹配的交易所名称不会被导出。首先执行 INCLUDE,然后执行 SKIP。
RABBIT_CAPABILITIES
bert,no_sort
目标 RabbitMQ 服务器支持的扩展抓取功能的逗号分隔列表。
RABBIT_EXPORTERS
exchange,node,queue
已启用模块列表。可能的模块:连接、铲子、联合、交换、节点、队列、内存。
RABBIT_TIMEOUT
30
从管理插件检索数据的超时时间(秒)。
MAX_QUEUES
0
删除指标之前的最大队列数(如果设置为 0 则禁用)。
EXCLUDE_METRICS
-
要从导出中排除的指标名称。以逗号分隔。