本文来自腾讯蓝鲸智云社区用户: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_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 数据。
# 在 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
查看更多蓝鲸运维文章,请跳转:蓝鲸运维手册大全
本文参加了蓝鲸有奖征文,欢送正在浏览的你也退出。