根據需求,監控三個指標:MQ行程、自定義監控項訂閱組的未消費值Diff Total和TPS,
創建MQ 狀態的監控模板,行程監控利用zabbix自帶的模板;
監控訂閱組的Diff Total和TPS
因為每個Nameserver的訂閱組可能會實時改變,所以采用自動發現的方式獲取所有的訂閱組資訊,再根據nameserver 和訂閱組獲取其Diff Total和TPS,
步驟:
撰寫訂閱組自動發現和自定義監控項的腳本,
#!/bin/bash
GroupInfo=`sh /opt/rocketmq/incubator-rocketmq-rocketmq-all-4.1.0-incubating/distribution/target/apache-rocketmq/bin/mqadmin consumerProgress -n "ip:port;ip:port;ip:port" 2>/dev/null`
#echo "$GroupInfo"
GroupName=`echo "$GroupInfo"|grep -v "#Group"|awk '{print $1}'`
subgroup_discovery () {
COUNT=`echo "$GroupName" |wc -l`
INDEX=0
echo '{"data":['
echo "$GroupName" | while read LINE; do
echo -n '{"{#GROUPNAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
}
diffandtps () {
GroupConsume=`echo "$GroupInfo"|grep -w $1`
#echo $GroupConsume
if [[ $2 == "TPS" ]]; then
echo $GroupConsume|awk '{print $(NF-1)}'
#echo "TPS"
elif [[ $2 == "diff" ]];then
echo $GroupConsume|awk '{print $NF}'
fi
}
case "$1" in
subgroup_discovery)
subgroup_discovery
;;
diffandtps)
diffandtps $2 $3
;;
*)
echo "Usage:$0"
;;
esac
根據nameserver實時獲取所有的訂閱組資訊,
命令為MQ自帶的mqadmin:
sh mqadmin consumerProgress -n ip:port

根據訂閱組名稱獲取其Diff Total 和TPS,
修改組態檔,重啟zabbix agent,在zabbix/conf/zabbix_agentd.conf中添加如下資訊:
Timeout=30
UnsafeUserParameters=1
UserParameter=mq.subgroup.discovery,/opt/zabbix/mq_status.sh subgroup_discovery
UserParameter=mq.subgroup.diff[*],/opt/zabbix/mq_status.sh diffandtps $1 diff
UserParameter=mq.subgroup.tps[*],/opt/zabbix/mq_status.sh diffandtps $1 TPS
注意:mqadmin命令執行時有一定的時長,所以設定Timeout=30,否則會報錯,
組態檔改好后重啟agent生效,
在zabbix web端創建自動發現規則
組態檔的自動發現項名稱為鍵值

在zabbix web端的自動發現規則里面創建監控項原型
此處監控兩個指標,需要兩個監控項

Diff Total監控:
因為可能存在復值,所以資訊型別選擇浮點數

TPS監控:

在檢測中-最新資料-主機中查看是否出現預期的資料,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/100458.html
標籤:其他
上一篇:NuxtJS快速入門
