灌篮少年 发表于 2024-7-21 05:05:50

RabbitMQ监控方法以及焦点指标

探究rabbitmq的监控数据收罗方式以及必要关注的焦点指标,便于一样平常生产进行监控和巡检。
1. 监控指标收罗

rabbitmq的指标收罗有2种方式


[*]rabbitmq的内置或者外部下载的插件袒露指标
[*]使用第三方rabbitmq_exporter收罗rabbitmq并袒露指标
2. 使用rabbimq插件收罗指标

RabbitMQ内部集成Prometheus来获取指标,操纵也比较简便。


[*]3.8.0之前版本,RabbitMQ可以使用单独的插件prometheus_rabbitmq_exporter来向Prometheus公开指标,要单独下载到RabbitMQ安装目录中进行安装;rabbitmq_exporter
[*]3.8.0版本后,RabbitMQ附带了内置的Prometheus&Grafana支持,固然内置了该插件,但也要进行安装,rabbitmq-prometheus
2.1 3.8.0之前版本,使用外部插件袒露

操纵如下,更具体操纵方式可以参考官方文档 ,

[*] 选择合适的版本,下载prometheus_rabbitmq_exporter 插件
[*] 将插件解压,并放到rabbitmq的安装插件目录/usr/lib/rabbitmq/lib/rabbitmq_server-{version}/plugins下,具体操纵可以参考Installing Additional Plugins
[*] 启动rabbitmq
[*] rabbitmq启用插件prometheus_rabbitmq_exporter
# 启用插件
rabbitmq-plugins enable prometheus_rabbitmq_exporter

# 查看插件
rabbitmq-plugins list
https://img-blog.csdnimg.cn/direct/bf6f3017419c453ab76cb25d27b6d451.png

[*]检察相干指标
curl -s localhost:15692/metrics

2.2 3.8.0之后版本,使用内置插件袒露

3.8.0后,rabbitmq内置了相干的插件,因此不必要单独进行下载和配置,只必要开启即可。操纵如下,更具体操纵方式可以参考官方文档 ,

[*]启动rabbitmq
[*]rabbitmq启用插件rabbitmq_prometheus
# 启用插件
rabbitmq-plugins enable rabbitmq_prometheus

# 查看插件
rabbitmq-plugins list
https://img-blog.csdnimg.cn/direct/bf6f3017419c453ab76cb25d27b6d451.png

[*]检察相干指标
curl -s localhost:15692/metrics

https://img-blog.csdnimg.cn/direct/948ee5f6ea434e4187e54319927c83ec.png
3. 使用rabbitmq_exporter收罗指标

假如不希望使用rabbit的内部插件收罗监控指标,也可以使用rabbitmq_exporter收罗相干的指标。该方式可以实用于所有的rabbitmq版本
3.1 部署rabbitmq_exporter


[*]rabbitmq_exporter的 下载地址 选择合适的版本下载,并解压
[*]配置rabbitmq的账号和密码(假如使用内置的guest/guest该操纵可以忽略)

# 需要创建用户名和密码:
rabbitmqctl add_user user pass
# 需要将用户赋予管理员权限:
rabbitmqctl set_user_tags user administrator

# 需要将用户赋予vhost权限:
rabbitmqctl set_permissions -p / user ".*" ".*" ".*"

[*]启动rabbitmq_exporter
cd /usr/local/rabbitmq_exporter-0.29.0.linux-amd64
RABBIT_USER=guest RABBIT_PASSWORD=guest OUTPUT_FORMAT=json PUBLIC_PORT=15692 RABBIT_URL=http://localhost:15672 ./rabbitmq_exporter


[*]RABBIT_USER:rabbit用户名
[*]RABBIT_PASSWORD:rabbit密码
[*]RABBIT_URL:rabbit服务地址和端口
[*]OUTPUT_FORMAT:输出格式
[*]PUBLIC_PORT:袒露端口

[*]确定metrics指标袒露出来后,就可以通过prometheus配置target进行指标收罗
# 通过promethues协议暴露指标
curl http://localhost:15692/metrics
https://img-blog.csdnimg.cn/direct/948ee5f6ea434e4187e54319927c83ec.png
3.2 prometheus收罗rabbitmq_exporter的袒露指标

配置prometheus的指标收罗任务
- job_name: rabbitmq
    static_configs:
      - targets: ['172.19.0.2:15692','172.19.0.3:15692','172.19.0.4:15692']
      labels:
          instance: rabbitmq
https://img-blog.csdnimg.cn/direct/5773d9dd19cc4ea2b45668988b79fae4.png
3.3 promethues配置告警规则或者配置grafana大盘

再次不进行扩展。
4. 焦点告警指标

rabbitmq的指标很多,相干的指标寄义可以参考 官网文档,本文将摘选出焦点的指标,作为rabbitmq集群的焦点监控并配置相干的告警。
groups:
- name: RabbitMQ节点宕机
rules:
- alert: RabbitmqNodeDown
    expr: sum(rabbitmq_build_info) < 3
    for: 0m
    labels:
      severity: error
    annotations:
      summary: "Rabbitmq node down (instance {{ $labels.instance }})"
      description: "RabbitMQ集群中运行的节点少于3个\nVALUE = {{ $value }}\nLABELS = {{ $labels }}"

- name: RabbitMQ节点未分发
rules:            
- alert: RabbitmqNodeNotDistributed
    expr: erlang_vm_dist_node_state < 3
    for: 0m
    labels:
      severity: warning
    annotations:
      summary: "Rabbitmq node not distributed (instance {{ $labels.instance }})"
      description: "RabbitMQ集群分发链接状态未启动\nVALUE = {{ $value }}\nLABELS = {{ $labels }}"         
            
- name: RabbitMQ内存高于90%
rules:                  
- alert: RabbitmqMemoryHigh
    expr: rabbitmq_process_resident_memory_bytes / rabbitmq_resident_memory_limit_bytes * 100 > 90
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: "Rabbitmq memory high (instance {{ $labels.instance }})"
      description: "RabbitMQ集群节点使用超过90%的已分配 RAM\nVALUE = {{ $value }}\nLABELS = {{ $labels }}"         
            
- name: RabbitMQ未确认消息过高
rules:   
- alert: RabbitmqTooManyUnackMessages
    expr: sum(rabbitmq_queue_messages_unacked) BY (queue) > 1000
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "Rabbitmq too many unack messages (instance {{ $labels.instance }})"
      description: "RabbitMQ集群未确认的消息大于1000\nVALUE = {{ $value }}\nLABELS = {{ $labels }}"
            
- name: RabbitMQ节点总连接数太高
rules:   
- alert: RabbitmqTooManyConnections
    expr: rabbitmq_connections > 1000
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: "Rabbitmq too many connections (instance {{ $labels.instance }})"
      description: "RabbitMQ集群节点的总连接数大于1000\nVALUE = {{ $value }}\nLABELS = {{ $labels }}"               
            
- name: RabbitMQ没有队列消费者
rules:                     
- alert: RabbitmqNoQueueConsumer
    expr: rabbitmq_queue_consumers < 1
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "Rabbitmq no queue consumer (instance {{ $labels.instance }})"
      description: "RabbitMQ集群队列的消费者少于1个\nVALUE = {{ $value }}\nLABELS = {{ $labels }}"
   
另外,必要关注执行下令中的alarm,mq集群会内部自检,假如出现alarm必要注意修复
rabbitmqctl cluster_status
https://img-blog.csdnimg.cn/direct/1536325078eb4125a41668d978726bf0.png
通常alarm相干信息,在mq的日志中会有相干的记载,注意获取相干的配置
5. 参考文章



[*]rabbitmq官网
[*]rabbitmq监控官网

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: RabbitMQ监控方法以及焦点指标