zabbix监控redis方法
1、redis的运行端口是6379
2、创建一个计划任务,每5分钟将redis info输出到一个文本中
3、测试下,基本是不占用多少时间,消耗多少性能的
4、自定义redis监控项
UserParameter=redis.monitor[*],python /etc/zabbix/scripts/monitor_rds.py $1
5、[root@localhost zabbix_agentd.d]# cat /etc/zabbix/scripts/monitor_rds.py
# -*- coding:utf-8 -*-
# 内存使用容量 used_memory maxmemory total_system_memory
# 内存使用率
# 连接数 connected_clients
# role role
import json
import sys
def return_list():
dict1 = {}
list1 = ['used_memory', 'maxmemory', 'total_system_memory', 'connected_clients', 'role']
file01 = open('/tmp/.6379.txt')
content = file01.readlines()
if content:
file01.close()
for i in content:
new_str = i.split('\r')[0]
if new_str and not new_str.startswith('#'):
# print new_str
key = new_str.split(':')[0]
value = new_str.split(':')[1]
if key in list1:
dict1[key] = value
return dict1
else:
return None
def get_float2(num):
new_num = float(num)/(1024*1024)
new_num = float('%.2f' % new_num)
return new_num
def get_per(num1,num2):
per = 100*float(num1)/float(num2)
new_per = float('%.2f' % per)
return new_per
def get_new_dict():
dict1 = return_list()
if dict1:
used_memory = dict1['used_memory']
maxmemory = dict1['maxmemory']
total_system_memory = dict1['total_system_memory']
have_used_memory = get_float2(used_memory)
if int(maxmemory) != 0:
free_memory = int(maxmemory) - int(used_memory)
used_memory_per = get_per(have_used_memory,get_float2(maxmemory))
else:
free_memory = int(total_system_memory) - int(used_memory)
used_memory_per = get_per(have_used_memory,get_float2(total_system_memory))
dict1['used_memory'] = have_used_memory
dict1['free_memory'] = get_float2(free_memory)
dict1['used_memory_per'] = used_memory_per
return dict1
else:
return None
def return_zabbix():
list1 = ['used_memory', 'used_memory_per', 'connected_clients', 'role','free_memory']
item = {'data': [{'{#ITEM}': value} for value in list1]}
print json.dumps(item, indent=4)
if __name__ == '__main__':
dict1 = get_new_dict()
if len(sys.argv) == 1:
return_zabbix()
elif len(sys.argv) == 2 and dict1:
if sys.argv[1] == "used_memory":
print dict1['used_memory']
elif sys.argv[1] == "used_memory_per":
print dict1['used_memory_per']
elif sys.argv[1] == "connected_clients":
print dict1['connected_clients']
elif sys.argv[1] == "role":
print dict1['role']
elif sys.argv[1] == "free_memory":
print dict1['free_memory']
else:
print 0
6、都能正常输出内容
7、主要监控的是,使用内存情况,内存使用率,连接数,角色,剩余内存
used_memory', 'used_memory_per', 'connected_clients', 'role','free_memory
8、再配置触发器就能实时监控redis的使用情况了