標籤:監控 zabbix redis
本文主要介紹zabbix宏的簡單使用,通過自訂指令碼監控redis相關指標。
zabbix監控redis需要自訂指令碼去監控,網路上的指令碼對於在一台機器上有多個redis執行個體不是很實用。於是修改了下監控指令碼,使其可以接受傳入連接埠參數。
原理:通過redis用戶端串連命令,過濾出info輸出的資訊
一、zabbix宏介紹及定義
1.宏介紹
(1)宏是一種抽象,他根據一系列預定義的規則替換一定的文字模式,而解譯器或編譯器在遇到宏時會自動進行這一模式替換,可以理解為變數。
(2)zabbix有許多內建的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、{TRIGGER.EVENTS.ACK}等
(3)為了更強的靈活性,zabbix支援全域、模版或主機分級自訂宏,使用者自訂宏要使用"{$MACRO}"這種特殊的文法格式,宏的名稱只能使用大寫字母、數字及底線
(4)宏可以應用在item keys和descriptions、trigger名稱和表達 式、主機介面IP/DNS及連接埠、discovery機制的SNMP協議 的相關資訊中等
(5)當在多個監控項中重複引用同樣的值時,此時使用宏方便後續修改
2.宏的優先順序
優先使用主機宏,其次模板宏,最後使用全域宏
3.主機宏的定義
這裡定義redis執行個體連接埠
選擇配置---->主機---->選擇相應的主機
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/87/3C/wKioL1fYxhzwue7HAABqETj0dqA995.png-wh_500x0-wm_3-wmp_4-s_1659060767.png" title="01.png" alt="wKioL1fYxhzwue7HAABqETj0dqA995.png-wh_50" />
4.模板宏的定義
選擇配置---->模板---->選擇相應的模板
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/87/3F/wKiom1fYxi6zL3SbAABELKMEI1g306.png-wh_500x0-wm_3-wmp_4-s_3290969120.png" title="02.png" alt="wKiom1fYxi6zL3SbAABELKMEI1g306.png-wh_50" />
5.全域宏的定義
選擇管理---->一般---->選擇宏
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/87/3C/wKioL1fYxjmT8hWWAAAni8ZyVP4456.png-wh_500x0-wm_3-wmp_4-s_225051867.png" title="03.png" alt="wKioL1fYxjmT8hWWAAAni8ZyVP4456.png-wh_50" />
二、建立監控採集指令碼
1.指令碼內容:
#catcheck_redis.sh
#!/bin/bash
REDISPATH="/usr/local/redis3379_6_test/bin/redis-cli"
HOST="127.0.0.1"
PORT="$1"
REDIS_PA="$REDISPATH-h $HOST -p $PORT info"
REDIS_PI="$REDISPATH-h $HOST -p $PORT ping"
if [[ $# == 2]];then
case $2 in
# memory
used_memory)
result=`$REDIS_PA|/bin/grepused_memory|awk -F":" ‘{print $NF}‘|awk ‘NR==1‘`
echo $result
;;
used_memory_human)
result=`$REDIS_PA|/bin/grepused_memory_human | awk -F":" ‘{print $NF}‘|awk -F‘K‘ ‘{print $1}‘`
echo $result
;;
used_memory_peak_human)
result=`$REDIS_PA|/bin/grepused_memory_peak_human | awk -F":" ‘{print $NF}‘|awk -F‘K‘ ‘{print$1}‘`
echo $result
;;
used_memory_peak)
result=`$REDIS_PA|/bin/grepused_memory_peak|awk -F":" ‘{print $NF}‘|awk ‘NR==1‘`
echo $result
;;
# status
instantaneous_ops_per_sec)
result=`$REDIS_PA|/bin/grep -w"instantaneous_ops_per_sec" | awk -F‘:‘ ‘{print $2}‘`
echo $result
;;
connected_clients)
result=`$REDIS_PA|/bin/grepconnected_clients|awk -F":" ‘{print $NF}‘`
echo $result
;;
statu)
result=`$REDIS_PI|/bin/grep -c PONG`
echo $result
;;
# Replication
role)
result=`$REDIS_PA|/bin/grep role | awk-F‘:‘ ‘{print $NF}‘`
echo $result
;;
connected_slaves)
result=`$REDIS_PA|/bin/grep -w"connected_slaves" | awk -F‘:‘ ‘{print $2}‘`
echo $result
;;
master_link_status)
result=`$REDIS_PA|/bin/grep -w"master_link_status"|awk -F‘:‘ ‘{print $2}‘|/bin/grep -c up`
echo $result
;;
esac
# db0:key
elif [[ $# == 3]];then
case $3 in
keys)
result=`$REDIS_PA| /bin/grep -w"db0"| /bin/grep -w "$2" | /bin/grep -w "keys" |awk -F‘=|,‘ ‘{print $2}‘`
echo $result
;;
expires)
result=`$REDIS_PA| /bin/grep -w"db0"| /bin/grep -w "$2" | /bin/grep -w "expires"| awk -F‘=|,‘ ‘{print $4}‘`
echo $result
;;
avg_ttl)
result=`$REDIS_PA|/bin/grep -w"db0"| /bin/grep -w "$2" | /bin/grep -w "avg_ttl"| awk -F‘=|,‘ ‘{print $6}‘`
echo $result
;;
*)
echo "Usage:$0{db0 keys|db0expires|db0 avg_ttl}"
;;
esac
fi
2.指令碼使用
存放位置:/usr/local/zabbix/etc/scripts
功能:指令碼能接受三個參數傳入,監控redis執行個體是否線上、記憶體使用量情況、用戶端串連數、主從同步狀態等
三、修改agent設定檔
1.修改zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
2.在zabbix_agentd.conf.d下定義監控redis的key
#cat redis_info.confUserParameter=redis_info[*],/usr/local/zabbix/etc/scripts/check_redis.sh $1 $2 $3
3.重啟agent服務
四、在web介面建立監控項
1.建立redis狀態items
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/87/3C/wKioL1fYxlOi8qCiAACaSwDKbKs064.png-wh_500x0-wm_3-wmp_4-s_1563212007.png" title="04.png" alt="wKioL1fYxlOi8qCiAACaSwDKbKs064.png-wh_50" />
2.建立redis記憶體使用量情況items
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/87/3F/wKiom1fYxmDw148pAACbtPHeEjk971.png-wh_500x0-wm_3-wmp_4-s_1958356238.png" title="05.png" alt="wKiom1fYxmDw148pAACbtPHeEjk971.png-wh_50" />
3.建立db0平均命中率items
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/87/3C/wKioL1fYxnHQGnBgAACgcgqXOxI007.png-wh_500x0-wm_3-wmp_4-s_1503304657.png" title="06.png" alt="wKioL1fYxnHQGnBgAACgcgqXOxI007.png-wh_50" />
說明:
1.第一個參數為主機宏中定義的執行個體連接埠,第二個參數為監控的資訊,這些參數將會傳遞到監控指令碼中,監控指令碼根據傳入的參數擷取相關監控資訊。
2.第一個參數為主機宏中定義的執行個體連接埠,第二個參數為db名稱,第三個參數為監控的資訊,這些參數將會傳遞到監控指令碼中,監控指令碼根據傳入的參數擷取相關監控資訊。
五、查看監控資料
選擇監測中---->最新資料---->選擇相應過濾條件
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/87/3F/wKiom1fYxoOCp5fJAADXp0l_9NE908.png-wh_500x0-wm_3-wmp_4-s_3409102524.png" title="07.png" alt="wKiom1fYxoOCp5fJAADXp0l_9NE908.png-wh_50" />
本文出自 “linux之路” 部落格,請務必保留此出處http://hnr520.blog.51cto.com/4484939/1852655
Zabbix監控redis配置及宏的使用