redis监控zabbix自动化模板-节点状态、内存、连接数
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,首先介绍下监控redis那些信息:Redis ping:检验pingRedis alive:查看检查端口是否aliveRedis connections:查看连接数Redis blockedClien
千家信息网最后更新 2024年11月18日redis监控zabbix自动化模板-节点状态、内存、连接数
首先介绍下监控redis那些信息:
Redis ping:检验pingRedis alive:查看检查端口是否aliveRedis connections:查看连接数Redis blockedClients:正在等待阻塞客户端数量Redis connectionsUsage:redis的连接使用率Redis memoryUsage:redis内存使用量Redis memoryUsageRate:redis内存使用率Redis evictedKeys:运行以来删除过的key的数量Redis rejectedConnections:拒绝连接数Redis ops:redis的OPSRedis hitRate:redis命中率
redis自动检测端口(shell)
#!/bin/shREDIS_SERVER_PIDS="$(ps -ef|egrep -v 'grep|egrep|vi|vim|find|cat|tac|head|tail|more|less'|grep 'redis-server'|awk '{print $2}')"REDIS_PORTS=""for pid in ${REDIS_SERVER_PIDS};do PORTS=$(sudo netstat -anlp|grep -w ${pid}|awk '{print $4}'|awk -F: '{print $2}'|grep -v "[0-9][0-9][0-9][0-9][0-9]"|grep -v "^$" |head -1) REDIS_PORTS="${PORTS} ${REDIS_PORTS}"doneport=(${REDIS_PORTS})function node_port {length=${#port[@]}printf "{\n"printf '\t'"\"data\":["for ((i=0;i<$length;i++));doprintf '\n\t\t{'printf "\"{#REDIS_PORT}\":\"${port[$i]}\"}"if [ $i -lt $[$length-1] ];thenprintf ','fidoneprintf "\n\t]\n"printf "}\n"}node_por
redis自动检测端口(python)
#!/usr/bin/env pythonimport osimport json#t=os.popen("""netstat -natp|awk -F: '/redis-server/&&/LISTEN/{print $2}'|awk '{print $1}' """)t=os.popen("""ps aux |egrep -v 'grep|egrep|vi|vim|cat|tac|head|tail|more|less'|grep 'redis-server'|awk -F '*:' '{print $2}'|awk '{print $1}' """)ports = []for port in t.readlines(): r = os.path.basename(port.strip()) ports += [{'{#REDIS_PORT}':r}]print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))
检测内存、节点状态、连接数、内存使用率、连接数使用率等等
#!/usr/bin/env python#-*- coding: utf-8 -*-__author__ = 'chenmingle'import sysimport subprocessimport jsontry: import redisexcept Exception, e: print 'pip install redis' sys.exit(1)class Redis(object): def __init__(self, host, port, password=None): self.host = host self.port = port self.password = password if self.password: self.rds = redis.StrictRedis(host=host, port=port, password=self.password) else: self.rds = redis.StrictRedis(host=host, port=port) try: self.info = self.rds.info() except Exception, e: self.info = None def redis_connections(self): try: return self.info['connected_clients'] except Exception, e: return 0 def redis_connections_usage(self): try: curr_connections = self.redis_connections() max_clients = self.parse_config('maxclients') rate = float(curr_connections) / float(max_clients) return "%.2f" % (rate * 100) except Exception, e: return 0 def redis_used_memory(self): try: return self.info['used_memory'] except Exception, e: return 0 def redis_memory_usage(self): try: used_memory = self.info['used_memory'] max_memory = self.info['maxmemory'] system_memory = self.info['total_system_memory'] if max_memory: rate = float(used_memory) / float(max_memory) else: rate = float(used_memory) / float(system_memory) return "%.2f" % (rate * 100) except Exception, e: return 0 def redis_ping(self): try: return self.rds.ping() except Exception, e: return False def rejected_connections(self): try: return self.info['rejected_connections'] except Exception, e: return 999 def evicted_keys(self): try: return self.info['evicted_keys'] except Exception, e: return 999 def blocked_clients(self): try: return self.info['blocked_clients'] except Exception, e: return 0 def ops(self): try: return self.info['instantaneous_ops_per_sec'] except Exception, e: return 0 def hitRate(self): try: misses = self.info['keyspace_misses'] hits = self.info['keyspace_hits'] rate = float(hits) / float(int(hits) + int(misses)) return "%.2f" % (rate * 100) except Exception, e: return 0 def parse_config(self, type): try: return self.rds.config_get(type)[type] except Exception, e: return None def test(self): print 'Redis ping: %s' % self.redis_ping() print 'Redis alive: %s ' % check_alive(self.host, self.port) print 'Redis connections: %s' % self.redis_connections() print 'Redis blockedClients %s' % self.blocked_clients() print 'Redis connectionsUsage: %s%%' % self.redis_connections_usage() print 'Redis memoryUsage: %s' % self.redis_used_memory() print 'Redis memoryUsageRate: %s%%' % self.redis_memory_usage() print 'Redis evictedKeys: %s' % self.evicted_keys() print 'Redis rejectedConnections: %s' % self.rejected_connections() print 'Redis ops: %s' % self.ops() print 'Redis hitRate: %s%%' % self.hitRate()def check_alive(host, port): cmd = 'nc -z %s %s > /dev/null 2>&1' % (host, port) return subprocess.call(cmd, shell=True)def parse(type, host, port, password): rds = Redis(host, port, password) if type == 'connections': print rds.redis_connections() elif type == 'connectionsUsage': print rds.redis_connections_usage() elif type == 'blockedClients': print rds.blocked_clients() elif type == 'ping': print rds.redis_ping() elif type == 'alive': print check_alive(host, port) elif type == 'memoryUsage': print rds.redis_used_memory() elif type == 'memoryUsageRate': print rds.redis_memory_usage() elif type == 'rejectedConnections': print rds.rejected_connections() elif type == 'evictedKeys': print rds.evicted_keys() elif type == 'hitRate': print rds.hitRate() elif type == 'ops': print rds.ops() else: rds.test()if __name__ == '__main__': try: type = sys.argv[1] host = sys.argv[2] port = sys.argv[3] if sys.argv.__len__() >=5: password = sys.argv[4] else: password = None except Exception, e: print "Usage: python %s type 127.0.0.1 6379" % sys.argv[0] sys.exit(1) parse(type, host, port, password) ###python支持redis模板否则会报错
zabbix配置配置文件添加
UserParameter=redis_port.discovery-py,/app/sinova/zabbix/scripts/check_redis_port.pyUserParameter=redis.stats[*],/app/sinova/python2.7.15/bin/python /app/sinova/zabbix/scripts/check_redis.py $1 127.0.0.1 $2###配置完重启zabbix否则不生效
zabbix模板配置
自动发现规则
###配置监控相项把以上需要监控配置即可
例子
redis.stats[memoryUsageRate,{#REDIS_PORT}]
{HOST.NAME}:{#REDIS_PORT} redis redis 连接数使用率>80%,达到{ITEM.LASTVALUE1} {Template for redis-zabbix:redis.stats[connectionsUsage,{#REDIS_PORT}].last()}>80
配置
使用率
内存
监控
端口
检测
模板
数量
状态
节点
使用量
例子
信息
命中率
客户
客户端
文件
正在
规则
utf-8
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发中常见的bug
如何评价华为服务器
web端数据库
织梦链接不上数据库文件
计算机网络技术干什么用
嘉兴桌面软件开发流程八个步骤
修文软件开发项目管理
上海创新计算机网络技术服务系统
徐汇区品质数据库服务商新报价
网络技术管理员做什么的
nas做私人数据库
筑牢网络安全基石艺术字
服务器默认路由怎么设置
计算机网络技术ui
dayz服务器进不去
我的世界国际服务器介绍
湖南学乐网络技术有限公司
甘肃餐饮蔬菜配送软件开发
支付宝的网络安全有多强
抽奖系统软件开发
自建服务器安全吗
洛阳软件开发区域
全球数据库5至9岁儿童死亡人数
品质好的定制软件开发
猪兼强互联网科技
阿里服务器世界第几
删除数据库重新创建用户
大学生应对网络安全对策
雅马哈贴片机怎么备份数据库
网络安全校倡议书