RabbitMQ监控方法以及核心指标

这篇具有很好参考价值的文章主要介绍了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之前版本,使用外部插件暴露

操作如下,更详细操作方式可以参考官方文档 ,

  1. 选择合适的版本,下载prometheus_rabbitmq_exporter 插件

  2. 将插件解压,并放到rabbitmq的安装插件目录/usr/lib/rabbitmq/lib/rabbitmq_server-{version}/plugins下,详细操作可以参考Installing Additional Plugins

  3. 启动rabbitmq

  4. rabbitmq启用插件prometheus_rabbitmq_exporter

# 启用插件
rabbitmq-plugins enable prometheus_rabbitmq_exporter

# 查看插件
rabbitmq-plugins list

RabbitMQ监控方法以及核心指标,RabbitMQ,分布式,中间件,rabbitmq,分布式,消息中间件

  1. 查看相关指标
curl -s localhost:15692/metrics

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

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

  1. 启动rabbitmq
  2. rabbitmq启用插件rabbitmq_prometheus
# 启用插件
rabbitmq-plugins enable rabbitmq_prometheus

# 查看插件
rabbitmq-plugins list

RabbitMQ监控方法以及核心指标,RabbitMQ,分布式,中间件,rabbitmq,分布式,消息中间件

  1. 查看相关指标
curl -s localhost:15692/metrics

RabbitMQ监控方法以及核心指标,RabbitMQ,分布式,中间件,rabbitmq,分布式,消息中间件

3. 使用rabbitmq_exporter采集指标

如果不希望使用rabbit的内部插件采集监控指标,也可以使用rabbitmq_exporter采集相关的指标。该方式可以适用于所有的rabbitmq版本

3.1 部署rabbitmq_exporter

  1. rabbitmq_exporter的 下载地址 选择合适的版本下载,并解压
  2. 配置rabbitmq的账号和密码(如果使用内置的guest/guest该操作可以忽略)

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

# 需要将用户赋予vhost权限: 
rabbitmqctl set_permissions -p / user ".*" ".*" ".*"
  1. 启动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:暴露端口
  1. 确定metrics指标暴露出来后,就可以通过prometheus配置target进行指标采集
# 通过promethues协议暴露指标
curl http://localhost:15692/metrics

RabbitMQ监控方法以及核心指标,RabbitMQ,分布式,中间件,rabbitmq,分布式,消息中间件

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

RabbitMQ监控方法以及核心指标,RabbitMQ,分布式,中间件,rabbitmq,分布式,消息中间件

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

再次不进行扩展。

4. 核心告警指标

rabbitmq的指标很多,相关的指标含义可以参考 官网文档,本文将摘选出核心的指标,作为rabbitmq集群的核心监控并配置相关的告警。文章来源地址https://www.toymoban.com/news/detail-833868.html

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个\n  VALUE = {{ $value }}\n  LABELS = {{ $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集群分发链接状态未启动\n  VALUE = {{ $value }}\n  LABELS = {{ $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\n  VALUE = {{ $value }}\n  LABELS = {{ $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\n  VALUE = {{ $value }}\n  LABELS = {{ $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\n  VALUE = {{ $value }}\n  LABELS = {{ $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个\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
    

5. 参考文章

  • rabbitmq官网
  • rabbitmq监控官网

到了这里,关于RabbitMQ监控方法以及核心指标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes核心指标监控——Metrics Server详解

    从Kubernetes v1.8 开始,资源使用情况的监控可以通过 Metrics API的形式获取,例如容器CPU和内存使用率。这些度量可以由用户直接访问(例如,通过使用kubectl top命令),或者由集群中的控制器(例如,Horizontal Pod Autoscaler)使用来进行决策,具体的组件为Metrics Server,用来替换之

    2024年01月18日
    浏览(47)
  • Prometheus之rabbitmq监控指标详解

    rabbitmq_channels 用于显示RabbitMQ服务器上当前打开的通道数量。 通过监控这个指标,您可以了解到RabbitMQ服务器打开的通道数随时间变化的情况,以及通道数量是否很高或者非常低。 rabbitmq_connections 用于显示与RabbitMQ服务器的连接总数。 该指标可以帮助您跟踪RabbitMQ服务器的连

    2024年02月14日
    浏览(28)
  • 02 _ 分布式系统的指标:啥是分布式的三围

    你好,我是聂鹏程。 在上一篇文章中,通过对分布式发展历程的学习,我们对分布式技术有了一个整体印象。接下来,我们就再来看看可以用哪些指标去具体地衡量一个分布式系统。如果你已经对分布式系统的指标了解得很清楚了,可以直接跳过这篇文章,学习下一讲的内容

    2024年04月12日
    浏览(27)
  • Redis实战案例14-分布式锁的基本原理、不同实现方法对比以及基于Redis进行实现思路

    基于数据库的分布式锁:这种方式使用数据库的特性来实现分布式锁。具体流程如下: 获取锁:当一个节点需要获得锁时,它尝试在数据库中插入一个特定的唯一键值(如唯一约束的主键),如果插入成功,则表示获得了锁。 释放锁:当节点完成任务后,通过删除该唯一键

    2024年02月13日
    浏览(41)
  • CloudNative:云原生(分布式云)的简介(发展&演变/为什么需要/优势&价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略

    CloudNative:云原生(分布式云)的简介(发展演变/为什么需要/优势价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略 导读 :从“ 软件正在吞噬世界 ”到“ 开源正在吞噬软件 ”,到如今“ 云原生吞噬开源 ”,开源项目

    2023年04月16日
    浏览(204)
  • 分布式核心知识

    关于分布式核心知识详解 在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通信协议。常见的序列化协议包括json、xml、 hession、 protobuf、thrift、text、 bytes等,目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议

    2024年02月11日
    浏览(40)
  • Zabbix分布式监控Web监控

    您可以使用 Zabbix 对多个网站进行可用性方面监控: 要使用 Web 监控,您需要定义 web 场景。Web 场景包括一个或多个 HTTP 请求或“步骤”。Zabbix 服务器根据预定义的命令周期性的执行这些步骤,如果主机是通过Proxy代理监控的话,这些步骤将由proxy代理执

    2024年02月14日
    浏览(35)
  • linux系统zabbix监控分布式监控的部署

    zabbix server端监控到大量zabbix agent端,这样会使zabbix server端压力过大,使用zabbix proxy进行分布式监控 安装工具 安装mysql 导入数据结构 配置proxy端 浏览器配置 这个时候创建主机就可以选择proxy端 选择刚刚创建的agent代理程序

    2024年02月20日
    浏览(38)
  • 架构核心技术之分布式消息队列

    Java全能学习+面试指南:https://javaxiaobear.cn 今天我们来学习分布式消息队列,分布式消息队列的知识结构如下图。 主要介绍以下内容: 同步架构和异步架构的区别。异步架构的主要组成部分:消息生产者、消息消费者、分布式消息队列。异步架构的两种主要模型:点对点模型

    2024年02月07日
    浏览(33)
  • 分布式计算框架Hadoop核心组件

    Hadoop作为成熟的分布式计算框架在大数据生态领域已经使用多年,本文简要介绍Hadoop的核心组件MapReduce、YARN和HDFS,以加深了解。 1、Hadoop基本介绍 Hadoop是分布式计算框架,主要解决海量数据的存储和计算问题。Hadoop主要组件包括分布式文件系统HDFS、分布式离线并行计算框架

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包