前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝鲸rabbitmq监控实践

蓝鲸rabbitmq监控实践

作者头像
腾讯蓝鲸助手
发布2023-08-23 15:50:23
2700
发布2023-08-23 15:50:23
举报
文章被收录于专栏:蓝鲸智云蓝鲸智云

本文来自腾讯蓝鲸智云社区用户:vinco

蓝鲸rabbitmq监控实践

rabbitmq是蓝鲸所依赖的消息队列服务,影响着多个服务,如作业平台、标准运维、监控平台、节点管理、日志平台等。因为rabbitmq服务异常而导致的故障往往比较隐蔽,这类故障往往无法在页面直接反馈出来。在生产环境中曾遇到过因为rabbitmq异常,导致作业任务以及标准运维任务执行卡住的情况,如果故障发生在夜间,会导致一些重要的定时任务无法按照预期执行,容易造成一些重大运维事故。所以通过监控掌握rabbitmq服务的运行情况,对于整个蓝鲸服务的正常运行至关重要。这里提供一个rabbitmq监控实践总结。

rabbitmq_exporter

rabbitmq监控指标采集使用开源的rabbitmq_exporter,本身监控平台就支持各类exporter插件,这里我们可以拿来即用。如果是监控平台版本是V3.6.3029或者版本相近的,可以直接使用文末附件导入,其他版本的监控平台没有测试过。

启用rabbitmq_management插件

rabbitmq_exporter采集依赖于rabbitmq启用rabbitmq_management插件。

rabbitmq_management 插件是 RabbitMQ 提供的一个管理插件,让用户可以通过图形化的方式来管理 RabbitMQ,它还提供一系列接口,rabbitmq_exporter通过请求这些接口来获取rabbitmq的各项指标。

通过以下命令启用rabbitmq_management插件

代码语言:txt
复制
rabbitmq-plugins enable rabbitmq_management

插件启用不需要重启rabbitmq,如果是rabbitmq集群,则每个rabbitmq节点都需要启用rabbitmq_management

rabbitmq_management插件启用成功后,会在节点上监听15672端口

下载rabbitmq_exporter

Release下载地址:https://github.com/kbudde/rabbitmq_exporter/releases

Linux选择最新版本即可: rabbitmq_exporter

下载并解压至本地

代码语言:txt
复制
rabbitmq_exporter_1.0.0-RC19_linux_amd64.tar.gz
   |- LICENSE
   |- README.md
   |- rabbitmq_exporter

监控平台导入exporter插件

「插件」-「新建」- 「插件类型选择Exporter」-「上传rabbitmq_exporter」

绑定端口:9419

绑定主机:127.0.0.1

定义以下环境变量参数:

参数

类型

默认值类型

默认值

RABBIT_URL

环境变量

文本

RABBIT_USER*

环境变量

文本

admin

RABBIT_PASSWORD

环境变量

密码

PUBLISH_PORT

环境变量

文本

${port}

PUBLISH_ADDR

环境变量

文本

${host}

RABBIT_EXPORTERS*

环境变量

文本

exchange,node,overview,queue,aliveness

ALIVENESS_VHOST*

环境变量

文本

/

RABBIT_USER:任意一个tag=management用户都可以,rabbitmqctl list_users命令可以查看用户tag

RABBIT_EXPORTERS:rabbitm_exporter把指标分成了module,可以认为是进行了分类,RABBIT_EXPORTERS表示要采集的指标类别

ALIVENESS_VHOST:利用rabbitmq 的aliveness接口探测服务状态,接口会默认在探测的vhost下创建名为aliveness-test的队列,接口通过对aliveness-test队列消息的发送和接收来判断rabbitmq服务状态,确保RABBIT_USER设置的用户具有对ALIVENESS_VHOST指定的vhost有创建queue的权限,比如RABBIT_USER指定为admin,执行rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"为admin用户授权

image20230707171640586.png
image20230707171640586.png

调试插件,选择一台rabbitmq进行调试,并保存指标,如果指标名和监控平台保留字冲突,需要先转换指标名才能保存

image20230707173020939.png
image20230707173020939.png

采集

「数据采集」-「新建」-「填写采集名称和RABBIT_PASSWORD」

RABBIT_PASSWORD为rabbitmq的admin密码,其他保持默认即可

image20230706232623529.png
image20230706232623529.png

采集目标选择「动态拓扑」-「蓝鲸 / 公共组件 / rabbitmq」-「完成采集下发」

image20230706232915277.png
image20230706232915277.png

监控仪表盘

rabbitmqexporter采集的和rabbitmq相关的指标,**都带有`rabbimtq`的前缀**

以下几个指标需要特别关注,其他指标请参考:https://github.com/kbudde/rabbitmq_exporter

指标名

描述

Label(维度)

aliveness_info

aliveness状态,1或0

up

节点存活状态,1或0

node

uptime

节点运行时长(ms)

cluster, node, self*

running

状态为running的节点数量

cluster, node, self

node_mem_used

节点已使用的内存数量(byte)

cluster, node, self

node_mem_limit*

节点内存限制(byte),默认是节点内存的40%

cluster, node, self

node_mem_alarm

rabbitmq内存使用率达到node_mem_limit时告警,1告警,0不告警

cluster, node, self

node_disk_free

内存空闲量(byte)

cluster, node, self

node_disk_free_limit

内存空闲量限制(byte),默认是50MB

cluster, node, self

node_disk_free_alarm

内存空闲量小于node_disk_free_limit时告警,1告警,0不告警

cluster, node, self

partitions

网络分区数,发生网络分区是为2,正常为0

cluster, node, self

queue_messages_ready

ready的消息数量

cluster, vhost, queue, durable, policy, self

queue_messages_unacknowledged

unacknowledged的消息数量

cluster, vhost, queue, durable, policy, self

queue_memory

队列占用的内存大小(byte)

cluster, vhost, queue, durable, policy, self

self:self=1表示该条数据是当前节点的数据,rabbitmq_exporter访问当前节点的management接口,可以获取到集群所有节点的数据,用self这个label就可能表示获取到的指标是否是属于当前节点,比如在节点rabbit@VM-240-33-centos.node.consul上采集的rabbitmq_uptime指标,就包含了所有节点的uptime数据。

代码语言:txt
复制
# 在rabbit@VM-240-33-centos.node.consul节点上执行curl -s 127.0.0.1:9419/metrics | grep rabbitmq_uptime 
rabbitmq_uptime{cluster="rabbit@VM-240-18-centos",node="rabbit@VM-240-18-centos.node.consul",self="0"} 1.260266076e+09
rabbitmq_uptime{cluster="rabbit@VM-240-18-centos",node="rabbit@VM-240-33-centos.node.consul",self="1"} 1.433729125e+09  

node_mem_limit:对应vm_memory_high_watermark配置,默认情况下 vm_memory_high_watermark 的值为0.4,即内存阈值为 0.4, 表示当 RabbitMQ 使用的内存超过 40%时,就会产生内存告警井阻塞所有生产者的连接。一旦告警被解除(有消息被消费或者从内存转储到磁盘等情况的发生), 一切都会恢复正常。

文末提供仪表盘附件导入

监控告警策略

建议设置以下指标告警:

指标名

静态阈值

描述

rabbitmq_uptime

<600000

服务重启告警

rabbitmq_up

<1

节点失活告警

rabbitmq_aliveness_info

<1

服务异常告警

rabbitmq_node_mem_alarm

=1

内存使用达到阈值告警

rabbitmq_partitions

=2

出现网络分区告警

rabbitmq_node_mem_used

节点内存的35%

内存使用告警

建议再加上蓝鲸平台自带的应用内存率告警和磁盘使用率告警

附件

仪表盘

采集&策略&仪表盘

rabbitmq_exporter

查看更多蓝鲸运维文章,请跳转:蓝鲸运维手册大全

本文参与了蓝鲸有奖征文,欢迎正在阅读的你也加入。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 蓝鲸rabbitmq监控实践
    • rabbitmq_exporter
      • 启用rabbitmq_management插件
        • 下载rabbitmq_exporter
          • 监控平台导入exporter插件
            • 采集
              • 监控仪表盘
                • 监控告警策略
                  • 附件
                  相关产品与服务
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档