写点什么

实战 rabbitmq-exporter,prometheus 实现 rabbitmq 监控

  • 2024-01-01
    北京
  • 本文字数:1844 字

    阅读完需:约 6 分钟

介绍

RabbitMQ 指标的 Prometheus 导出器。数据由 prometheus 抓取。

请注意这是一个非官方插件。还有一个来自 RabbitMQ.com 的官方插件

1、RabbitMQ 结合 Prometheus 的两种方式

第一种:RabbitMQ 内部集成 Prometheus 来获取指标

3.8.0 之前版本,RabbitMQ 可以使用单独的插件 prometheus_rabbitmq_exporter 来向 Prometheus 公开指标,要单独下载到 RabbitMQ 安装目录中进行安装;

prometheus_rabbitmq_exporter:https://github.com/deadtrickster/prometheus_rabbitmq_exporter


3.8.0 版开始,RabbitMQ 附带了内置的 Prometheus&Grafana 支持。虽然内置了该插件,但也要进行安装

     rabbitmq-prometheus:https://github.com/rabbitmq/rabbitmq-prometheus


第二种:使用独立程序来获取指标(RabbitMQ_exporter)

  不管什么版本都能使用,要单独启动 exporter 进程

  rabbitmq_exporter:https://github.com/kbudde/rabbitmq_exporter

RabbitMQ 官方监控介绍:

https://www.rabbitmq.com/monitoring.htmlhttps://www.rabbitmq.com/prometheus.html#overview-prometheus

2、使用 exporter 方式进行安装

最新 github 上提供了 exporter 最新的 docker 安装方式,安装步骤如下:

(1)rabiitmq 相关配置检查

  • 账号要有 monitoring 角色

  • 有 virtual host 相应的权限

  • 有 management 插件和 15672 端口对外开放,并且启用

(2)下载 rabbitmq-exporter 镜像

 docker pull kbudde/rabbitmq-exporter:latest 或者 docker pull kbudde/rabbitmq-exporter:1.0.0-RC19
复制代码
  • 配置文件修改,如果使用默认配置或者环境变量的话可以跳过此步骤,个人感觉配置文件最方便,并且是持久化的。

{    "rabbit_url": "http://127.0.0.1:15672",   //注意此地址,如果是部署在同一台并且是单点,要改成rabbitmq容器的地址    "rabbit_user": "***",      "rabbit_pass": "***",    "publish_port": "9419",    "publish_addr": "",    "output_format": "TTY",    "ca_file": "",    //如果rabbitmq没有ssl验证,可以是空字符串    "cert_file": "",  //如果rabbitmq没有ssl验证,可以是空字符串    "key_file": "",   //如果rabbitmq没有ssl验证,可以是空字符串    "insecure_skip_verify": false,    "exlude_metrics": [],    "include_exchanges": ".*",    "skip_exchanges": "^$",    "include_queues": ".*",    "skip_queues": "^$",    "skip_vhost": "^$",    "include_vhost": ".*",    "rabbit_capabilities": "no_sort,bert", //注意rabbitmq是3.8.0以前的老版本,要修改此配置    "aliveness_vhost": "/",    "enabled_exporters": [            "exchange",            "node",            "overview",            "queue",            "aliveness"    ],    "timeout": 30,    "max_queues": 0}
复制代码
  • rabbitmq-exporter 启动,/home/admin/exporter/rabbitmq/config.json 为上述配置文件路径

  • network 是与 rabbitmq 在同一个网络,要保持两个 docker 之间的网络是相通的

sudo docker run -d \  -v /home/admin/exporter/rabbitmq/config.json:/etc/rabbitmq-exporter/config.json \    --network=ele \  -p 9419:9419 \  --name rabbitmq-exporter \  kbudde/rabbitmq-exporter:1.0.0-RC19 \  -config=/etc/rabbitmq-exporter/config.json
复制代码
  • 查看 docker 启动日志, 容器名称是 rabbitmq-exporter,如果没有报错,说明连通 rabbitmq 正常,并能进行数据抓取

sudo docker logs rabbitmq-exporter -f
复制代码

3)prometheus 安装

  • 镜像下载

docker pull prom/prometheus
复制代码
  • 新建配置文件

/usr/local/prometheus/data/prometheus.yml
复制代码

如下配置

global:  scrape_interval:     60s  evaluation_interval: 60s
scrape_configs: - job_name: 'rabbitmq' scrape_interval: 120s static_configs: - targets: ['rabbitmq-exporter:9419'] //同一个服务器此处ip可以rabbitmq-exporter是容器ip,名称,否则是内网ip labels: instance: '172.17.219.9' //rabbitmq-exporter内网ip
复制代码
  • docker 启动,主要同一台服务器中要在同一个网络(network)

sudo docker run -d --network=ele -p 19090:9090 --name prometheus -v /usr/local/prometheus/data:/data  prom/prometheus --config.file=/data/prometheus.yml
复制代码


  • prometheus 验证

http://服务器 ip:19090/

在 status->targets 下面 state 是否是 up 状态

在首页搜索 rabbitmq_up 值为 1 的正常


下一篇写实现 grafana 监控告警


有问题可联系

共同学习,加微信:wytwhdwdd


用户头像

终身学习、研究java架构、ai大模型 2019-12-06 加入

商业合作: wytwhdwdd

评论

发布
暂无评论
实战rabbitmq-exporter,prometheus实现rabbitmq监控_创想科技小王_InfoQ写作社区