ToB企服应用市场:ToB评测及商务社交产业平台

标题: RabbitMQ监控方法以及焦点指标 [打印本页]

作者: 灌篮少年    时间: 2024-7-21 05:05
标题: RabbitMQ监控方法以及焦点指标
探究rabbitmq的监控数据收罗方式以及必要关注的焦点指标,便于一样平常生产进行监控和巡检。

1. 监控指标收罗

rabbitmq的指标收罗有2种方式

2. 使用rabbimq插件收罗指标

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

2.1 3.8.0之前版本,使用外部插件袒露

操纵如下,更具体操纵方式可以参考官方文档 ,
  1. # 启用插件
  2. rabbitmq-plugins enable prometheus_rabbitmq_exporter
  3. # 查看插件
  4. rabbitmq-plugins list
复制代码

  1. curl -s localhost:15692/metrics
复制代码
2.2 3.8.0之后版本,使用内置插件袒露

3.8.0后,rabbitmq内置了相干的插件,因此不必要单独进行下载和配置,只必要开启即可。操纵如下,更具体操纵方式可以参考官方文档 ,
  1. # 启用插件
  2. rabbitmq-plugins enable rabbitmq_prometheus
  3. # 查看插件
  4. rabbitmq-plugins list
复制代码

  1. curl -s localhost:15692/metrics
复制代码

3. 使用rabbitmq_exporter收罗指标

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

  1. # 需要创建用户名和密码:
  2. rabbitmqctl add_user user pass
  3. # 需要将用户赋予管理员权限:
  4. rabbitmqctl set_user_tags user administrator
  5. # 需要将用户赋予vhost权限:
  6. rabbitmqctl set_permissions -p / user ".*" ".*" ".*"
复制代码
  1. cd /usr/local/rabbitmq_exporter-0.29.0.linux-amd64
  2. RABBIT_USER=guest RABBIT_PASSWORD=guest OUTPUT_FORMAT=json PUBLIC_PORT=15692 RABBIT_URL=http://localhost:15672 ./rabbitmq_exporter
复制代码

  1. # 通过promethues协议暴露指标
  2. curl http://localhost:15692/metrics
复制代码

3.2 prometheus收罗rabbitmq_exporter的袒露指标

配置prometheus的指标收罗任务
  1.   - job_name: rabbitmq
  2.     static_configs:
  3.       - targets: ['172.19.0.2:15692','172.19.0.3:15692','172.19.0.4:15692']
  4.         labels:
  5.           instance: rabbitmq
复制代码

3.3 promethues配置告警规则或者配置grafana大盘

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

rabbitmq的指标很多,相干的指标寄义可以参考 官网文档,本文将摘选出焦点的指标,作为rabbitmq集群的焦点监控并配置相干的告警。
  1. groups:
  2. - name: RabbitMQ节点宕机
  3.   rules:
  4.   - alert: RabbitmqNodeDown
  5.     expr: sum(rabbitmq_build_info) < 3
  6.     for: 0m
  7.     labels:
  8.       severity: error
  9.     annotations:
  10.       summary: "Rabbitmq node down (instance {{ $labels.instance }})"
  11.       description: "RabbitMQ集群中运行的节点少于3个\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  12. - name: RabbitMQ节点未分发
  13.   rules:            
  14.   - alert: RabbitmqNodeNotDistributed
  15.     expr: erlang_vm_dist_node_state < 3
  16.     for: 0m
  17.     labels:
  18.       severity: warning
  19.     annotations:
  20.       summary: "Rabbitmq node not distributed (instance {{ $labels.instance }})"
  21.       description: "RabbitMQ集群分发链接状态未启动\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"         
  22.             
  23. - name: RabbitMQ内存高于90%
  24.   rules:                    
  25.   - alert: RabbitmqMemoryHigh
  26.     expr: rabbitmq_process_resident_memory_bytes / rabbitmq_resident_memory_limit_bytes * 100 > 90
  27.     for: 2m
  28.     labels:
  29.       severity: warning
  30.     annotations:
  31.       summary: "Rabbitmq memory high (instance {{ $labels.instance }})"
  32.       description: "RabbitMQ集群节点使用超过90%的已分配 RAM\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"         
  33.             
  34. - name: RabbitMQ未确认消息过高
  35.   rules:   
  36.   - alert: RabbitmqTooManyUnackMessages
  37.     expr: sum(rabbitmq_queue_messages_unacked) BY (queue) > 1000
  38.     for: 1m
  39.     labels:
  40.       severity: warning
  41.     annotations:
  42.       summary: "Rabbitmq too many unack messages (instance {{ $labels.instance }})"
  43.       description: "RabbitMQ集群未确认的消息大于1000\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  44.               
  45. - name: RabbitMQ节点总连接数太高
  46.   rules:   
  47.   - alert: RabbitmqTooManyConnections
  48.     expr: rabbitmq_connections > 1000
  49.     for: 2m
  50.     labels:
  51.       severity: warning
  52.     annotations:
  53.       summary: "Rabbitmq too many connections (instance {{ $labels.instance }})"
  54.       description: "RabbitMQ集群节点的总连接数大于1000\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"               
  55.               
  56. - name: RabbitMQ没有队列消费者
  57.   rules:                     
  58.   - alert: RabbitmqNoQueueConsumer
  59.     expr: rabbitmq_queue_consumers < 1
  60.     for: 1m
  61.     labels:
  62.       severity: warning
  63.     annotations:
  64.       summary: "Rabbitmq no queue consumer (instance {{ $labels.instance }})"
  65.       description: "RabbitMQ集群队列的消费者少于1个\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  66.    
复制代码
另外,必要关注执行下令中的alarm,mq集群会内部自检,假如出现alarm必要注意修复
  1. rabbitmqctl cluster_status
复制代码

通常alarm相干信息,在mq的日志中会有相干的记载,注意获取相干的配置
5. 参考文章



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4