Prometheus实战篇:Prometheus监控rabbitmq

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Prometheus实战篇:Prometheus监控rabbitmq

Prometheus实战篇:Prometheus监控rabbitmq

准备环境

docker-compose安装rabbitmq

这里注意rabbitmq需要暴露2个端口

docker-compose.yaml

version: '3'
services:
   rabbitmq:
  image: rabbitmq:3.7.15-management
  container_name: rabbitmq
   restart: always
   volumes:
    - /data/rabbitmq/data: /var/lib/rabbitmq
    - /data/rabbitmq/log: /var/log/rabbitmq
   port:
   - 5672:5672
   - 15672:15672
docker-compose up -d

监控rabbitmq

docker安装exporter

docker直接运行

docker run -d  -p 9419:9419  --name rabbitmq_exporter -e RABBIT_URL=http://localhost:15672 -e RABBIT_USER=guest -e RABBIT_PASSWORD=guest kbudde/rabbitmq_exporter

docker-compose方式

cat >docker-compose.yaml <<FOF
version: '3.3'
services:
 rabbitmq_exproter:
  image: kbudde/rabbitmq-exporter
  container_name: rabbitmq_exporter
  restart: always
  environment:
    RABBIT_URL: "localhost:15672"
    RABBIT_USER: "guest"
    REDIS_PASSWORD: "guest"
    PUBLISH_PORT: "9419"
    OUTPUT_FORMAT: "JSON"
  port:
   - "9419:9419"
EOF

启动

docker-compose up -d

检查

查看正在运行的容器
docker ps
或者:
查看redis_exporter容器的运行日志
docker logs -f rabbitmq_exporter

参数解释

Environment variable

描述

RABBIT_URL

localhost:15672

rabbitmq管理插件的url(必须以http(2)开头)

RABBIT_USER

guest

rabbitmq管理插件的用户名

REDIS_PASSWORD

guest

rabbitmq管理插件的密码

OUTPUT_FORMAT

JSON

输出格式

PUBLISH_PORT

9419

运行端口(监听端口)

metrics地址

安装好Exporter后会暴露一个/metrics结尾的服务

名称

地址

rabbitmq_exporter

http://localhost:9419/metrics

Prometheus配置

配置Prometheus去采集(拉取)nginx_exporter的监控样本数据

cd /data/docker-prometheus
# 在scrapc_configs(搜刮配置):下面增加如下配置:
cat >prometheus/prometheus.yml <<FOF
 - job_name: 'rabbitmq_exporter'
   static_configs:
   - targets: ['localhost:9419']
     labels:
      instance: test服务器 
EOF

重新加载配置

curl -x POST http://localhost:9090/-/reload

检查

常用的rabbitmq监控指标

rabbitmq_queue_messages_unacknowledged_global     队列中有未确认的消息总数(未被消费的消息)
rabbitmq_node_disk_free_limit             使用磁盘大小
rabbitmq_node_disk_free                 磁盘总大小
rabbitmq_node_mem_used                  使用内存大小
rabbitmq_node_mem_limit                 内存总大小
rabbitmq_sockets_used                 使用的sockets的数量   
rabbitmq_sockets_available                可用的sockets总数
rabbitmq_fd_used                    使用文件描述符的数量
rabbitmq_fd_available                 可用的文件描述符总数

触发器配置

由于之前的触发器是全部写在了一个yml里面就是alert.yam,这样随着后面配置的触发器越来越多最终会变得难以维护.这里我们让它去读rules目录下所有的yml文件即可

Prometheus配置

rule_files:
  - "alert.yml"
  - "rules/*.yml"

配置rabbitmq触发器

因为是单机所以未配置集群的触发器

cat >prometheus/rules/rabbitmq.yml <<FOF
groups:
- name: Rabbitmq
  rules:
    - alert: RabbitMQDown
      expr: rabbitmq_up != 1
      labels:
        severity: High
      annotations:
          summary: "Rabbitmq Down,实例:{{$labels.instance }}"
          description: "Rabbitmq_exporter连不上RabbitMQ!"
    - alert: Rabbitmq有未确认消息
      expr: rabbitmq_queue_messages_unacknowledged_global > 0
      for: 1m
      labels:
        severity: critical
      annotations:
          summary: "RabbitMQ有未确认消息,实例:{{$labels.instance }}"
          description: "Rabbitmq未确认消息>0当前值为:{{ $value }}"
    - alert: RabbitMQ可用磁盘空间不足告警
      expr: rabbitmq_node_disk_free_alarm !=0
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: "RabbitMQ可用磁盘空间不足,实例:{{$labels.instance }}"
          description: "RabbitMQ可用磁盘空间不足,请检查"
    - alert: RabbitMQ可用内存不足告警
      expr: rabbitmq_sockets_used / rabbitmq_sockets_available * 100 >60
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: "RabbitMQ可用内存不足,实例:{{$labels.instance }}"
          description: "RabbitMQ可用内存不足,请检查"
    - alert: RabbitMQ_socket连接数使用过高告警
      expr: rabbitmq_sockets_used / rabbitmq_sockets_available * 100 >60
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: "RabbitMQ_socket使用过高,实例:{{$labels.instance }}"
          description: "RabbitMQ_socket使用>60%当前值为::{{ $value }}"
    - alert: RabbitMQ文件描述符使用过高告警
      expr: rabbitmq_fd_used / rabbitmq_fd_available * 100 > 60
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: "RaiibitMQ文件描述符使用过高,实例:{{$labels.instance }}"
          description: "RaiibitMQ文件描述符使用>60%,当前值为:{{ $value }}"
EOF

一定记住这里需要仔细校对yaml语法,最好是能去在线验证yaml语法的网站上看看.yaml语法还是比较严格的一点缩进错误都不能有

检查配置

docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

重新加载配置

curl -x POST http://localhost:9090/-/reload

检查

http://localhost:9090/alerts?search=

或:

http://localhost:9090/rules


dashboard

grafana展示Prometheus从redis_exporter收集到的数据

id :4279


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
Prometheus Kubernetes 监控
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus实战篇:Prometheus监控docker
Prometheus实战篇:Prometheus监控docker
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus实战篇:Prometheus监控mongodb
Prometheus实战篇:Prometheus监控mongodb
|
存储 Prometheus Kubernetes
Prometheus监控Kubernetes的3个配置挑战
Prometheus监控Kubernetes的3个配置挑战
152 0
Prometheus监控Kubernetes的3个配置挑战
|
2月前
|
缓存 监控 Unix
性能监控之 Linux 命令 top、vmstat、iostat、free、iftop 基础
【2月更文挑战第9天】性能监控之 Linux 命令 top、vmstat、iostat、free、iftop 基础
60 5
性能监控之 Linux 命令 top、vmstat、iostat、free、iftop 基础
|
5月前
|
监控 Linux
Linux 安装性能监控检测工具sysstat
Linux 安装性能监控检测工具sysstat
54 0
|
8月前
|
监控 Linux Shell
Linux 服务器 性能监控脚本
Linux 性能监控 shell 脚本
231 0
|
8月前
|
存储 监控 网络协议
[Linux命令]21个Linux常用命令(磁盘存储、性能监控和优化、网络和其他命令)(下)
[Linux命令]21个Linux常用命令(磁盘存储、性能监控和优化、网络和其他命令)(下)
|
8月前
|
存储 监控 网络协议
[Linux命令]21个Linux常用命令(磁盘存储、性能监控和优化、网络和其他命令)(上)
[Linux命令]21个Linux常用命令(磁盘存储、性能监控和优化、网络和其他命令)
|
9月前
|
缓存 监控 关系型数据库
Linux性能监控与调优工具
Linux性能监控与调优工具
158 0