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 roleimport jsonimport sysdef 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 Nonedef get_float2(num): new_num = float(num)/(1024*1024) new_num = float('%.2f' % new_num) return new_numdef get_per(num1,num2): per = 100*float(num1)/float(num2) new_per = float('%.2f' % per) return new_perdef 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 Nonedef 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的使用情况了