本文来自腾讯蓝鲸智云社区用户: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插件

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

下载并解压至本地

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环境变量文本http://127.0.0.1:15672
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用户受权

调试插件,抉择一台rabbitmq进行调试,并保留指标,如果指标名和监控平台保留字抵触,须要先转换指标名能力保留

采集

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

RABBIT_PASSWORD为rabbitmq的admin明码,其余放弃默认即可

采集指标抉择「动静拓扑」-「蓝鲸 / 公共组件 / rabbitmq」-「实现采集下发」

监控仪表盘

rabbitmq_exporter采集的和rabbitmq相干的指标,都带有rabbimtq_的前缀

以下几个指标须要特地关注,其余指标请参考:https://github.com/kbudde/rabbitmq_exporter

指标名形容Label(维度)
aliveness_infoaliveness状态,1或0
up节点存活状态,1或0node
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_alarmrabbitmq内存使用率达到node_mem_limit时告警,1告警,0不告警cluster, node, self
node_disk_free内存闲暇量(byte)cluster, node, self
node_disk_free_limit内存闲暇量限度(byte),默认是50MBcluster, node, self
node_disk_free_alarm内存闲暇量小于node_disk_free_limit时告警,1告警,0不告警cluster, node, self
partitions网络分区数,产生网络分区是为2,失常为0cluster, node, self
queue_messages_readyready的音讯数量cluster, vhost, queue, durable, policy, self
queue_messages_unacknowledgedunacknowledged的音讯数量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数据。

# 在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+09rabbitmq_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

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

本文参加了蓝鲸有奖征文,欢送正在浏览的你也退出。