1. 程式人生 > >python監控redis 腳本(結合zabbix)

python監控redis 腳本(結合zabbix)

ant pri sys.argv 參數 sed 返回 status neo 兩個

#!/bin/python

-- coding:UTF-8 --

import redis
import sys

"""
各個參數的解釋:
keyspace_misses //表示未命中數
keyspace_hits //表示命中數
keyspace_hits_rate = keyspace_hits /(keyspace_hits + keyspace_misses)
connected_clients //客戶端連接數
blocked_clients //客戶端阻塞數
connected_slaves //從庫數
instantaneous_ops_per_sec //客戶端每秒執行命令頻率
used_memory_rss //操作系統分配給redis的內存

used_memory //redis分配器分配的內存
mem_fragmentation_ratio //內存碎片比例
"""

#把參數定義為列表
keyindex = [‘used_memory‘, ‘used_memory_rss‘, ‘mem_fragmentation_ratio‘, ‘blocked_clients‘, ‘connected_clients‘,
‘connected_slaves‘,
‘instantaneous_ops_per_sec‘, ‘keyspace_hits‘, ‘keyspace_misses‘, ‘keypace_query_total_count‘,

‘keyspace_hits_rate‘, ‘status‘]

returnval = None

def zabbix_faild():
print "ZBX_NOTSUPPORTED"
sys.exit(2)

if len(sys.argv) != 2: #需要有一個參數,加上程序本身是兩個參數。所以判斷如果沒有參數,就直接提示
print len(sys.argv)
zabbix_faild()

try:
conn=redis.Redis(host=‘172.16.17.40‘,port=‘6379‘,password=‘‘)
except Exception,e:
print e
zabbix_faild()

#下面是根據參數來判斷並且取值,最終返回狀態,加入到zabbix中
if sys.argv[1] in keyindex:
if sys.argv[1] == ‘status‘:#如果參數為status ,執行ping,為true返回值為1,zabbix中返回1 則表示正常。
try:
conn.ping()
returnval = 1
except Exception,e:
returnval = 0
elif sys.argv[1] == ‘keyspace_hits_rate‘:
merit = conn.info()
keyspace_hits_count = float(merit[‘keyspace_hits‘])
keyspace_misses_count = float(merit[‘keyspace_misses‘])
keyspace_hits_rate = keyspace_hits_count / (keyspace_hits_count + keyspace_misses_count) * 100
returnval = keyspace_hits_rate
elif sys.argv[1] == ‘keypace_query_total_count‘:
merit = conn.info()
keyspace_hits_count = merit[‘keyspace_hits‘]
keyspace_misses_count = merit[‘keyspace_misses‘]
keypace_query_total_count = keyspace_hits_count + keyspace_misses_count
returnval = keypace_query_total_count
else:
merit = conn.info()
try:
returnval = merit[unicode(sys.argv[1])]
except Exception,e:
pass

#判斷返回值狀態的函數
def ret_status ():
if returnval == None:
zabbix_faild()
else:
print returnval

ret_status()

python監控redis 腳本(結合zabbix)