c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)
生活随笔
收集整理的這篇文章主要介紹了
c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概述
今天主要介紹一下zabbix怎么去自定義key來監控rabbitmq隊列。
一、環境準備腳本
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監控腳本
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監控腳本:(/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測試監控腳本
./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網頁添加監控項
--未讀隊列名稱:queue $1 $2鍵值:rabbitmq.status[hwb,unread]類型:數字單位:更新間隔:60s--每秒鐘處理的隊列數名稱:queue $1 $2 persecond鍵值:rabbitmq.status[hwb,read]類型:浮點數單位:更新間隔:60s進程:每秒更改四、zabbix網頁添加觸發器
--未讀隊列超過xxx告警 -> 監控業務有沒有在正常處理名稱:hwb queue unread>100嚴重性:嚴重表達式:{mq.jk:rabbitmq.status[hwb,unread].last()}>100--每秒鐘處理的隊列數超過xx告警 -> 監控業務的并發的能力名稱:hwb queue read persecond > 200嚴重性:嚴重表達式:{mq.jk:rabbitmq.status[hwb,read].last()}>200五、測試
模擬產生隊列達到100觸發告警
告警郵件如下:
修復郵件如下:
覺得有用的朋友多幫忙轉發哦!后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~
總結
以上是生活随笔為你收集整理的c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python psycopg2_如何在P
- 下一篇: linux方向键ascii_上下左右 方