1. 首页
  2. zabbix
  3. zabbix监控rabbitmq消息队列服务

zabbix监控rabbitmq消息队列服务

  • 发布于 2024-12-16
  • 12 次阅读

点击蓝字 关注我们

1、脚本文件

cat rabbitmq_queues.sh

!/bin/bash

source /etc/profile

rabbitmqctl list_connections name state \|grep -Ev 'List\|name' >/tmp/rabbitmq_connections.txt

cat zabbix_rabbitmq.sh

!/bin/bash

RMQ_COMMAND=$1

QUEUE=$2

rabbitmq进程

function rabbitmq_process {

ps -ef \|grep rabbitmq \|grep -v grep \|wc -l

}

rabbitmq健康检查

function health_check {

rabbitmqctl node_health_check 2>\&1 \|grep “Health check passed” 2>\&1 >/dev/null

if [ $? -ne 0 ];then

echo “1”

else

echo “0”

fi

}

case $RMQ_COMMAND in

check_process)

rabbitmq_process ;;

check_health)

health_check ;;

*)

echo -e “Usage: $0 [check_process\|check_health] "

esac

cat mq_stat_discovery.sh

!/bin/bash

===============================================================================

MAIN SCRIPT

===============================================================================

echo “{”

echo '“data”:['

echo “{”

echo '““:“Rabbit_MQ”'

echo “}”

echo “]”

echo “}”

cat rabbitmq_discovery.sh

!/bin/bash

===============================================================================

MAIN SCRIPT

===============================================================================

AGENTD_BIN为脚本存放路径

AGENTD_BIN=“/scripts”

cd “${AGENTD_BIN}”

for queue_name in $(sudo rabbitmqctl -q list_queues -p apollo_vhost \| sed -n '2,$p' \|awk '{print $1}')

do

queue_list=“$queue_list,“'{““:“'${queue_name}'“}'

done

echo '{“data”:['${queue_list#,}']}'

cat rabbitmq_queues_num.sh #该脚本host_name要修改为服务器主机名称

!/bin/bash

===============================================================================

MAIN SCRIPT

===============================================================================

AGENTD_BIN为脚本存放路径

zabbix安装目录

host_name zabbix配制文件中的主机名

AGENTD_BIN=“/scripts”

AGENTD_HOME=“/etc/zabbix”

host_name=“cache_test_150.39”

cd “${AGENTD_BIN}”

queue_file=${AGENTD_HOME}“/queue_list.txt”

if [ -f “$queue_file” ]; then

sudo chown zabbix.zabbix $queue_file

>$queue_file

else

sudo touch $AGENTD_HOME/queue_list.txt

sudo chown zabbix.zabbix $queue_file

fi

AGENTD_CONF=“${AGENTD_HOME}““/zabbix_agentd.conf”

sudo rabbitmqctl -q list_queues -p apollo_vhost \| sed -n '2,$p' \|awk '{print “\“'$host_name'\““” rabbit.queue.num[“$1”] “$2}' >>${queue_file}

zabbix_sender -c ${AGENTD_CONF} -v -i ${queue_file}

上传以下文件到/scripts目录下

zabbix-get-4.0.27-1.el7.x86_64.rpm

zabbix-sender-4.0.26-1.el7.x86_64.rpm

然后赋权:

chmod 755 rabbitmq_queues.sh

chmod 755 zabbix_rabbitmq.sh

chmod 755 mq_stat_discovery.sh

chmod 755 rabbitmq_discovery.sh

chmod 755 rabbitmq_queues_num.sh

chown zabbix.zabbix mq_stat_discovery.sh

chown zabbix.zabbix rabbitmq_discovery.sh

chown zabbix.zabbix rabbitmq_queues_num.sh

安装依赖包:

rpm -ivh zabbix-get-4.0.27-1.el7.x86_64.rpm

rpm -ivh zabbix-sender-4.0.26-1.el7.x86_64.rpm

2、zabbix_agentd 配置文件增加用户参数

vi /etc/zabbix/zabbix_agentd.conf

UserParameter=rabbitmq[*],/scripts/zabbix_rabbitmq.sh “$1”

UserParameter=rabbitmq.connections,cat /tmp/rabbitmq_connections.txt \|wc -l

UserParameter=rabbitmq.queue.discovery[*],“/scripts/rabbitmq_discovery.sh”

UserParameter=rabbitmq.get.stat_num[*],“/scripts/rabbitmq_queues_num.sh”

UserParameter=rabbitmq.stat.discovery[*],“/scripts/mq_stat_discovery.sh”

3、添加脚本定时任务

crontab -e

*/1 * * * * bash /scripts/rabbitmq_queues.sh

4、编辑sudo权限

visudo

在root ALL=(ALL) ALL下面加上下面两行

zabbix ALL=(ALL) NOPASSWD: ALL

Defaults:zabbix !requiretty

5、重启 zabbix_agent

systemctl restart zabbix-agent

6、自定义模板

zabbix服务端web页面设置

l创建模板

lTemplate RabbitMQ for Linux

l创建宏

l宏:{$MQ_QUEUE_NUM_ALARM__THRESHOLD} 值:1000

l创建自动发现规则1

l名称: Rabbitmq Queue

l类型: zabbix 客户端(主动式)

l键值: rabbitmq.queue.discovery

l创建【监控项原型】

l名称: [] current_num

l类型: zabbix 采集器

l键值: rabbit.queue.num[]

l信息类型: 数字(无正负)

注:如果这里推送不到据,需要在允许主机这里加白名单

l创建自动发现规则2(按上面的操作方法)

l名称: Rabbitmq.stat.discovery

l类型: zabbix 客户端(主动式)

l键值: rabbitmq.stat.discovery

l创建监控项原型(按上面的操作方法)

l名称: [] rabbit.get.stat_num

l类型: zabbix 客户端(主动式)

l键值: rabbitmq.get.stat_num[]

l创建触发器

l在【Rabbitmq Queue】 自动发现规则下创建

l名称: 队列【】 当前未消费消息数量过多

l严重度: 警告

l表 达 式 : {Template RabbitMQ for Linux:rabbit.queue.num[].last()}>{$MQ_QUEUE_NUM_ALARM__THRESHOLD}

7、添加rabbitmq监控模板

监控主机添加模板:

8、查看监控图形效果

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。

原文链接: https://mp.weixin.qq.com/s/84cYOL3vXUOw67GMWM_R3g