点击蓝字 关注我们

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