當(dāng)前位置:
首頁 >
c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)
發(fā)布時間:2025/3/21
34
豆豆
生活随笔
收集整理的這篇文章主要介紹了
c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
概述
今天主要介紹一下zabbix怎么去自定義key來監(jiān)控rabbitmq隊列。
一、環(huán)境準(zhǔn)備腳本
1、每秒鐘插入一個觀察隊列情況(queues.py)
# -*- coding: utf-8 -*-import pikaimport timecredentials = pika.PlainCredentials('hwb', 'xxx')connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1',5672,'/',credentials))channel = connection.channel()queuename="hwb"channel.queue_declare(queue=queuename)i = 1while True: channel.basic_publish(exchange='', routing_key=queuename, body='hwb body {0}'.format( i )) print("insert hwb body success") time.sleep(1) i = i + 12、消費者程序(rabbitconsumer.py)
# -*- coding: utf-8 -*-import pikacredentials = pika.PlainCredentials('hwb', 'xxx')connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1',5672,'/',credentials))channel = connection.channel()queuename="hwb"channel.queue_declare(queue=queuename)def callback(ch, method, properties, body): print("Received %r" % body)channel.basic_consume(callback,queue=queuename,no_ack=True)print('Consume waiting for messages. To exit press CTRL+C')channel.start_consuming()二、Rabbitmq監(jiān)控腳本
1、Python獲取隊列信息(/etc/zabbix/zabbix_agentd.d/rabbitmqmonitor.py)
# -*- coding: utf-8 -*-try: import jsonexcept: import simplejson as jsonimport commands (status, output) = commands.getstatusoutput("""curl -s -u hwb:fxxx http://127.0.0.1:15672/api/queues""")outputjson = json.loads(output)for one in outputjson: print(one['name']) print(one['messages_ready']) if(one.has_key('message_stats')): if(one['message_stats'].has_key('deliver_get')): print(one['message_stats']['deliver_get']) continue print(0)分別輸出:namemessages_readydeliver_get信息
2、Shell監(jiān)控腳本:(/etc/zabbix/zabbix_agentd.d/rabbitmq_check.sh)
#!/bin/bashqueuename=$1queuetype=$2result=$(python /etc/zabbix/zabbix_agentd.d/rabbitmqmonitor.py)case $2 in "unread" ) echo "$result" |grep "^$queuename$" -A 2 |awk 'NR==2';; "read" ) echo "$result" |grep "^$queuename$" -A 2 |awk 'NR==3';; *) echo "unsupport key";;esac測試監(jiān)控腳本
./rabbitmq_check.sh hwb read
./rabbitmq_check.sh hwb unread
3、自定義Key腳本(/etc/zabbix/zabbix_agentd.d/rabbitmq.conf)
?UserParameter=rabbitmq.status[*],sh /etc/zabbix/zabbix_agentd.d/rabbitmq_check.sh $1 $24、zabbix_get測試
?zabbix_get -s xxx -k rabbitmq.status[hwb,unread]三、zabbix網(wǎng)頁添加監(jiān)控項
--未讀隊列名稱:queue $1 $2鍵值:rabbitmq.status[hwb,unread]類型:數(shù)字單位:更新間隔:60s--每秒鐘處理的隊列數(shù)名稱:queue $1 $2 persecond鍵值:rabbitmq.status[hwb,read]類型:浮點數(shù)單位:更新間隔:60s進(jìn)程:每秒更改四、zabbix網(wǎng)頁添加觸發(fā)器
--未讀隊列超過xxx告警 -> 監(jiān)控業(yè)務(wù)有沒有在正常處理名稱:hwb queue unread>100嚴(yán)重性:嚴(yán)重表達(dá)式:{mq.jk:rabbitmq.status[hwb,unread].last()}>100--每秒鐘處理的隊列數(shù)超過xx告警 -> 監(jiān)控業(yè)務(wù)的并發(fā)的能力名稱:hwb queue read persecond > 200嚴(yán)重性:嚴(yán)重表達(dá)式:{mq.jk:rabbitmq.status[hwb,read].last()}>200五、測試
模擬產(chǎn)生隊列達(dá)到100觸發(fā)告警
告警郵件如下:
修復(fù)郵件如下:
覺得有用的朋友多幫忙轉(zhuǎn)發(fā)哦!后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注下~
總結(jié)
以上是生活随笔為你收集整理的c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python psycopg2_如何在P
- 下一篇: c++七参数坐标转换_深度 | 扒一扒坐