首页 > 其他分享 >Prometheus监控之RabbitMQ

Prometheus监控之RabbitMQ

时间:2024-09-08 14:52:05浏览次数:9  
标签:process labels RabbitMQ TCP 5m Prometheus rabbitmq 监控

1 RabbitMQ监控方式

1.1 安装并配置RabbitMQ

1.1.1 安装RabbitMQ

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
yum install rabbitmq-server -y

1.1.2 配置RabbitMQ

打开管理⻚⾯,同时启⽤Prometheus的metrics接⼝
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_prometheus

1.1.3、启动RabbitMQ

systemctl start rabbitmq-server

1.1.4 创建用户

rabbitmqctl add_user rabbitadmin 123456
rabbitmqctl set_user_tags rabbitadmin administrator

1.1.5 访问RabbitMQ的web⻚⾯

可以通过 http://IP:15672 

Prometheus监控之RabbitMQ_TCP

访问RabbitMQ的metrics接⼝,则需要通过http://IP:15692/metrics

Prometheus监控之RabbitMQ_描述符_02

1.2 配置Prometheus

1、编辑Prometheus配置⽂件,将Tomcat服务纳⼊监控
  - job_name: "rabbitmq"
    metrics_path: "/metrics"
    static_configs:
    - targets: ["192.168.137.131:15692"]
 
2、重新加载Prometheus配置⽂件 
curl -X POST http://192.168.137.131:9090/-/reload

1.3 RabbitMQ常⽤指标

1.3.1 rabbitmq队列相关指标

指标名称

指标类型

指标含义

rabbitmq_queue _consumers

gauge

队列上consumer消费者的数量。

rabbitmq_queue_messages

gauge

队列中所有消息的总数量,包括

rabbitmq_queue_messages_ready


gauge

队列中准备就绪,已准备好被消费者接收的消息。如果这个数值持续较⾼,可能是当前消费者跟不上消息的产⽣速度,导致消息在队列中被积压。

rabbitmq_queue _messages_unacked


gauge

队列中已被消费,但尚未被确认的消息数量。如果数值较⾼,可能表明消费者处理消息后的确认步骤存在延迟。

案例1:查询过去5分钟内,队列中平均准备好待消费的消息数量。
如果这个平均数超过500,则意味着有⼤量的消息被积压,需要检查消费者consumer 
avg_over_time(rabbitmq_queue_messages_ready[5m]) > 500 

案例2:查询过去5分钟内,队列中平均已被消费但未被确认的消息数量。
如果这个平均数超过500,则意味着有⼤量的消息被接收,但未确认,需要检查消费者consumer
avg_over_time(rabbitmq_queue_messages_unacked[5m]) > 500

1.3.2 Rabbitmq其他相关指标

指标名称

指标类型

指标含义

rabbitmq_disk_space_available_bytes

gauge

RabbitMQ 可⽤的磁盘空间。


rabbitmq_disk_space_available_limit_bytes


gauge

RabbitMQ 的可⽤磁盘空间限制。 如果剩余的磁盘空间低于该值,则⽆法启动RabbitMQ服务。

可以通disk_free_limit.bytes设定最低可⽤空间的⼩⼤,默认是50MB

rabbitmq_process _open_fds

gauge

RabbitMQ 进程当前打开的⽂件描述符数量。

rabbitmq_process_max_fds



gauge

RabbitMQ 进程最⼤能打开的⽂件描述符数量。 在rabbitmq启动⽂件 [Service]下通过LimitNOFILE=N设定

rabbitmq_process_open_tcp_sockets

gauge

RabbitMQ 进程当前打开的 TCP 套接字数量。

rabbitmq_process_max_tcp_sockets

gauge

RabbitMQ 进程最⼤能打开的 TCP 套接字数量。

案例1:基于过去24⼩时磁盘可⽤空间,预测未来10天磁盘可⽤空间,是否低于 RabbitMQ 配置的磁盘空间下限。 
predict_linear(rabbitmq_disk_space_available_bytes[24h], 60*60*24*10) < rab bitmq_disk_space_available_limit_bytes

案例2:查询过去5分钟 ,⽂件描述符打开的数量最⼤值,占⽂件描述限制的⽐率。
计算公式:(打开的⽂件描述符 / ⽂件描述符⽐率 * 100 )
max_over_time(rabbitmq_process_open_fds[5m]) / rabbitmq_process_max_fds * 100 > 80

案例3:查询过去5分钟 ,TCP 套接字打开的数量最⼤值,占操作系统允许的TCP 连接数限制的⽐率。
计算公式:(打开的TCP连接数量 / 系统最⼤允许的TCP连接数量 * 100 )
max_over_time(rabbitmq_process_open_tcp_sockets[5m]) / rabbitmq_process_max_tcp_sockets * 100 > 80

1.4 RabbitMQ告警规则⽂件

1.4.1 告警规则⽂件

vim /app/module/prometheus/rules/rabbitmq_rules.yml
groups:
- name: rabbitmq告警规则
  rules:
  - alert: RabbitMQ队列已就绪的消息过多
    expr: avg_over_time(rabbitmq_queue_messages_ready[5m]) > 500
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: '{{ $labels.instance }} RabbitMQ实例的队列消息准备过多'
      description: '{{ $labels.instance }}实例中平均准备好待消费的消息数量超过500,当前平均值为{{ $value }}。'
  - alert: RabbitMQ队列中已消费但未确认的消息过多
    expr: avg_over_time(rabbitmq_queue_messages_unacked[5m]) > 500
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: '{{ $labels.instance }} RabbitMQ实例的队列消息确认存在延迟'
      description: '{{ $labels.instance }} 实例中平均已被消费但未被确认的消息数量超过500,当前平均值为{{ $value }}。'
  - alert: RabbitMQ磁盘空间预测不足
    expr: predict_linear(rabbitmq_disk_space_available_bytes[24h], 60*60*24*10) < rabbitmq_disk_space_available_limit_bytes
    for: 1h
    labels:
      severity: critical
    annotations:
      summary: '{{ $labels.instance }} RabbitMQ实例的磁盘空间预测不足。'
      description: '基于过去24小时磁盘可用空间数据预测,未来10天内磁盘的可用空间可能低于默认配置的50MB。'
  - alert: RabbitMQ⽂件描述符使用率过高
    expr: max_over_time(rabbitmq_process_open_fds[5m]) / rabbitmq_process_max_fds * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: '{{ $labels.instance }} RabbitMQ实例的文件描述符使用率过高'
      description: '{{ $labels.instance }} 实例打开的文件描述符数量最大值,占文件描述限制的比率超过80%,当前比率为{{ $value }}%。'
  - alert: RabbitMQ TCP套接字使用率过高
    expr: max_over_time(rabbitmq_process_open_tcp_sockets[5m]) / rabbitmq_process_max_tcp_sockets * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: '{{ $labels.instance }} RabbitMQ实例的TCP套接字使用率过高'
      description: '{{ $labels.instance }} 实例打开的TCP套接字数量最大值,占操作系统允许的TCP连接数限制的比率超过80%,当前比率为{{ $value }}%。'

1.4.2 检查rules语法

/app/module/prometheus/promtool check rules /app/module/prometheus/rules/rabbitmq_rules.yml

1.4.3 重新加载Prometheus

curl -X POST http://192.168.137.131:9090/-/reload

1.4.4 验证告警规则

Prometheus监控之RabbitMQ_描述符_03

1.5 导⼊RabbitMQ图形

导⼊RabbitMQ的Grafana模板。ID为 10991

Prometheus监控之RabbitMQ_套接字_04

标签:process,labels,RabbitMQ,TCP,5m,Prometheus,rabbitmq,监控
From: https://blog.51cto.com/u_13236892/11952155

相关文章

  • 第18篇 .net使用RabbitMQ实现短信密码重置
    在C#中使用RabbitMQ通过短信发送重置后的密码到用户的手机号上,你可以按照以下步骤进行1.安装RabbitMQ客户端库首先,确保你已经安装了RabbitMQ客户端库。你可以通过NuGet包管理器来安装:dotnetaddpackageRabbitMQ.Client2.创建RabbitMQ连接和通道创建一个Rabbi......
  • Intel Watchdog Timer Driver (Intel WDT) 是一种硬件监控驱动程序,用于系统监控和故障
    IntelWatchdogTimerDriver(IntelWDT)是一种硬件监控驱动程序,用于系统监控和故障恢复。这个驱动程序的主要功能是提供硬件级的看门狗定时器,用于监测系统的健康状况并在系统出现故障时进行恢复或重启。以下是关于IntelWDT驱动程序的一些关键点:1. 功能与目的硬件监控:I......
  • Zabbix02 Zabbix告警通知, 故障自愈, 主动被动模式, JAVA应用网络设备等的监控及分布
    图形Graphs#点击web端配置下的模板,选择模板对应的图形,点击右上角创建图标#输入名称TCP状态#监控项选择添加,最后点添加#点击监测下关联该模板的主机,点击图形,就能看到添加的图形#仪表盘为图形的组合#配置下模板里,点击仪表盘栏,点击创建仪表盘,构件可把之前画的图添加出......
  • RabbitMQ常用知识点梳理
    RabbitMQrabbitmq工作模式简单模式简单模式是最基本的工作模式,其中生产者直接发送消息到队列,消费者从队列中消费消息。实际上使用的是默认的direct类型的交换机。工作队列模式生产者发送消息到队列,多个消费者订阅同一个队列,并且消息会被均匀地分发给各个消费者(使用轮询......
  • notes-rabbitmq
    1什么是消息队列消息队列能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处理。一般消息发送方称为生产者,接收方称为消费者。1.1几种具体实现:RabbitMQ-性能很强,吞吐量很高,支持多种协议,集群化,消息的可靠执行特性等优势,很适合企业的开发。Kafka-提......
  • 828华为云征文 | 华为云Flexus X实例上实现Docker容器的实时监控与可视化分析
    Docker容器监控之CAdvisor+InfluxDB+Granfana需要了解本文章主要讲述在华为云FlexusX实例上搭建开源的容器管理平台,使用的WebUI界面来简化和优化容器及集群的管理和监控选择合适的云服务器:本文采用的是华为云服务器FlexusX实例(推荐使用)连接方式:本文通过本地sh......
  • Prometheus监控之Haproxy
    1Haproxy监控方式在haproxy2.0版本之前,prometheus提供了haproxy_exporter来对haproxy进行监控,haproxy从2.0版本开始不再需要使用haproxy_exporter进行监控,从haproxy2.0版本开始,HAProxy内置了对Prometheus的⽀持。这意味着HAProxy能够直接提供兼容Prometheus的指标格式,⽆需依赖......
  • prometheus学习笔记之kube-state-metrics
    一、kube-state-metrics简介Kube-state-metrics:通过监听APIServer生成有关资源对象的状态指标,比如Deployment、Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以我们可以使用Prometheus来抓取这些数据然后存储,......
  • shell脚本监控一个进程号,进程号没有就输出error
    你可以使用一个简单的Shell脚本来监控进程号(PID),如果进程不存在则输出error。以下是一个示例脚本:#!/bin/bash#输入要监控的进程号pid=$1#检查进程是否存在ifps-p$pid>/dev/nullthenecho"Process$pidisrunning."elseecho"error:Process$pid......
  • 厨师帽识别 后厨厨师帽佩戴情况实时监控-明厨亮灶
    厨师帽识别后厨厨师帽佩戴情况实时监控对于各种厨房工作自然环境下的安全健康难题,全自动识别餐厅厨房工作人员的厨师帽是不是佩戴,是否正确佩戴,是不是有耗子/猫/狗等小动物侵入,外来人员侵入后厨等。适用遍布在全国各地的餐厅厨房集中化实时监控管理方法,能够处理厨房卫生监管盲区大......