linux怎么查看本机内存大小
360
2022-10-09
#yyds干货盘点# Prometheus Exporter(二十八) RabbitMQ Exporter
本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。
对于监控 RabbitMQ 有一个 Exporter 叫 RabbitMQ Exporter,是作者 kbudde 发布的,仓库地址是 ,这是一个非官方的插件,现在最新版本是 v1.0.0-RC12 ,发布于2021 年 12 月 16 日左右,监控数据使用 Prometheus 来进行收集。对于 RabbitMQ 监控,官方也有一个插件,,可以对比选择哪个使用。
对于官方插件:
包含 runtime 和 erlang 的指标 集合每个对象的指标 Missing filter
对于 RabbitMQ Exporter
支持旧版本的 RabbitMQ 导出监控数据 对于对象,有更多的配置选项和过滤选项 依赖于管理接口的数据,这可能是缓慢/延迟的
也许最好的解决办法是同时使用两个 Exporter 来互相补充。
安装运行
RabbitMQ Exporter 可以使用二进制运行,也可以使用 Docker 容器来运行。二进制文件可以从仓库直接下载,Docker 镜像从 Docker Hub 下载就好。
如果使用Docker 容器运行,Exporter 和 RabbitMQ 的容器需要共享网络,这样可以使用localhost和默认用户/密码(guest)。
启动 RabbitMQ
docker run -d -e RABBITMQ_NODENAME=my-rabbit --name my-rabbit -p 9419:9419 rabbitmq:3-management
启动 RabbitMQ Exporter
docker run -d --net=container:my-rabbit kbudde/rabbitmq-exporter
启动好以后访问 就可以看到监控指标,管理插件也不需要公开。
配置 Exporter
RabbitMQ Exporter 可以使用 JSON 配置文件或者环境变量来进行配置。
RabbitMQ Exporter 需要将配置文件放在 conf/rabbitmq.conf。如果是在容器(docker/kubernetes)中运行Exporter, 需要在配置中使用参数指定配置文件路径,将缺省的 /conf/rabbitmq.conf 路径覆盖:
./rabbitmq_exporter -config-file config.example.json
配置文件示例如下:
{ "rabbit_url": "http://127.0.0.1:15672", "rabbit_user": "guest", "rabbit_pass": "guest", "publish_port": "9419", "publish_addr": "", "output_format": "TTY", "ca_file": "ca.pem", "cert_file": "client-cert.pem", "key_file": "client-key.pem", "insecure_skip_verify": false, "exlude_metrics": [], "include_queues": ".*", "skip_queues": "^$", "skip_vhost": "^$", "include_vhost": ".*", "rabbit_capabilities": "no_sort,bert", "enabled_exporters": [ "exchange", "node", "overview", "queue" ], "timeout": 30, "max_queues": 0 }
也可以使用环境变量来配置,可以使用的环境变量如下:
Environment variable | default | description |
---|---|---|
RABBIT_URL | http://127.0.0.1:15672 | url to rabbitMQ management plugin (must start with http(s)://) |
RABBIT_USER | guest | username for rabbitMQ management plugin. User needs monitoring tag! |
RABBIT_PASSWORD | guest | password for rabbitMQ management plugin |
RABBIT_USER_FILE | location of file with username (useful for docker secrets) | |
RABBIT_PASSWORD_FILE | location of file with password (useful for docker secrets) | |
PUBLISH_PORT | 9419 | Listening port for the exporter |
PUBLISH_ADDR | "" | Listening host/IP for the exporter |
OUTPUT_FORMAT | TTY | Log ouput format. TTY and JSON are suported |
LOG_LEVEL | info | log level. possible values: "debug", "info", "warning", "error", "fatal", or "panic" |
CAFILE | ca.pem | path to root certificate for access management plugin. Just needed if self signed certificate is used. Will be ignored if the file does not exist |
CERTFILE | client-cert.pem | path to client certificate used to verify the exporter's authenticity. Will be ignored if the file does not exist |
KEYFILE | client-key.pem | path to private key used with certificate to verify the exporter's authenticity. Will be ignored if the file does not exist |
SKIPVERIFY | false | true/0 will ignore certificate errors of the management plugin |
SKIP_VHOST | ^$ | regex, matching vhost names are not exported. First performs INCLUDE_VHOST, then SKIP_VHOST |
INCLUDE_VHOST | .* | regex vhost filter. Only queues in matching vhosts are exported |
INCLUDE_QUEUES | .* | regex queue filter. Just matching names are exported |
SKIP_QUEUES | ^$ | regex, matching queue names are not exported (useful for short-lived rpc queues). First performed INCLUDE, after SKIP |
RABBIT_CAPABILITIES | bert,no_sort | comma-separated list of extended scraping capabilities supported by the target RabbitMQ server |
RABBIT_EXPORTERS | exchange,node,queue List of enabled modules. Possible modules: connections,shovel,federation,exchange,node,queue,memory | |
RABBIT_TIMEOUT | 30 | timeout in seconds for retrieving data from management plugin. |
MAX_QUEUES | 0 | max number of queues before we drop metrics (disabled if set to 0) |
EXCLUDE_METRICS | Metric names to exclude from export. comma-seperated. e.g. "recv_oct, recvcnt". See exporter*.go for names |
使用环境变量的启动方式如下:
SKIP_QUEUES="RPC_.*" MAX_QUEUES=5000 ./rabbitmq_exporter
新版本的 RabbitMQ 可以提供一些特性来减少这个 Exporter 获取监控数据所带来的开销。RABBIT_CAPABILITIES 环境目前支持以下功能:
no_sort :
默认情况下,RabbitMQ 管理插件使用默认的 vhost/name 排序。从3.6.8版本开始,可以通过向 RabbitMQ 传递空的sort 参数(?sort=)来避免这种排序开销。这个选项可以在3.6.X 版本中安全启用,但它不会提供任何性能改进。它 v3.4.x 以及 3.5.x 不兼容。
bert
自 3.6.9 (见支持将 BERT 编码作为 JSON 的替代品。考虑到 BERT 编码是在 Erlang VM 中用 C 实现的,它比纯 Erlang JSON 编码更有效。所以当我们在 RabbitMQ 中有很多对象时可以极大的减少监控开销。
如果 RabbitMQ 的版本小于 v3.6 ,no_sort 和 bert 是默认打开的,你需要重写默认配置。
RABBIT_CAPABILITIES=nobert ./rabbitmq_exporter
指标
所有的指标都会以 rabbitmq_ 前缀开头,完整的监控列表可以查看 。
对于 RabbitMQ Exporter 全局监控有关于 Exporter 自身状态的,包括 up、build info 等。另外会有关于集群的、队列的变化值、队列的计数值、Exchange、Node 、连接情况、Shovel、内存等指标,约么 200+ 以上吧。
已知问题解决方法
当出现 Error while retrieving data from rabbitHost statusCode: 500 的时候是因为,这个 Exporter 最好是使用 RabbitMQ v3.6.8 版本以上,如果你的 RabbitMQ 版本低于 v3.6.8 ,那么需要设置 RABBIT_CAPABILITIES=compat 参数来兼容。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
评论列表