zabbix自動發現監控redis數據庫與自動發現mongo,mysql的思路差很少。此次彙總完就把模板,腳本上傳到git上。若是公司使用的redis都是6379端口的話,那麼仍是建議建立一套模板,而後連接到各個服務器便可。若是公司的redis使用的端口比較多,各個都不同,那仍是自動發現並監控redis比較方便。仍是同樣,先來看下監控的效果圖:python
上述圖形是使用zabbix的篩選功能彙總在一塊兒的圖片。監控redis的客戶端鏈接數,使用的內存,實際使用的內存和redis的內存碎片化狀況。mysql
下面來說講自動發現redis的實現,首先,仍是先看下redis自動發現的配置:git
探索規則配置完後,一樣的在zabbix agentd端須要添加以下配置而後重啓zabbix_agentd,配置以下:redis
UserParameter=redis.discover,python /usr/local/zabbix/discover_redis.pysql
其中/usr/local/zabbix/discover_redis.py自動發現的腳本內容以下 :數據庫
#coding:utf-8 import json import commands (status, output) = commands.getstatusoutput('''sudo netstat -tlnp|grep 'redis-server'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u''') outputs = output.split('\n') ports = [] for port in outputs: ports += [{'{#REDISPORT}': port}] print json.dumps({'data':ports},sort_keys=True,indent=4)
一樣的,仍是使用netstat發現正在監聽的端口,visudo的權限也是須要加入netstat的權限。visudo添加以下:json
zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix !requirettybash
探索完端口後,zabbix server就會以端口爲參數向zabbix agentd獲取數據,其中項目原型配置以下:服務器
其中redis.status的鍵值須要在zabbix agentd客戶端進行配置,配置以下:
UserParameter=redis.status[*],sh /usr/local/zabbix/check_redis.sh -k $1 -p $2 (若是有密碼的話,加個-P參數,例如-P 'xxxx')ui
獲取redis數據的/usr/local/zabbix/check_redis.sh腳本以下,其中-k表示獲取redis info的哪一個值,-p表示端口,若是redis有密碼的話,-P參數也須要傳入。
#!/bin/sh while getopts "p:k:P:" opt do case $opt in p ) redis_port=$OPTARG;; k ) info_key=$OPTARG;; P ) redis_passwd=$OPTARG;; ? ) echo 'parameter is wrong!' exit 1;; esac done if [ ! "${redis_port}" ] || [ ! "${info_key}" ];then echo "parameter is null" exit 1 fi if [ "${redis_passwd}" ];then result=`/usr/local/bin/redis-cli -a ${redis_passwd} -p ${redis_port} info|grep "${info_key}:"|cut -d: -f2` else result=`/usr/local/bin/redis-cli -p ${redis_port} info|grep "${info_key}:"|cut -d: -f2` fi echo $result
經過以上的配置,就能實現自動發現並監控redis了,監控完把數據添加到篩選裏面,就能獲得如圖1的那張數據圖。
Zabbix實戰教程:https://edu.51cto.com/sd/36433