redis监控zabbix自动化模板-节点状态、内存、连接数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,首先介绍下监控redis那些信息:Redis ping:检验pingRedis alive:查看检查端口是否aliveRedis connections:查看连接数Redis blockedClien
千家信息网最后更新 2025年12月02日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_porredis自动检测端口(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安全错误
数据库的锁怎样保障安全
泰安联想服务器代理
td数据库日期月末函数
自己搭建一个服务器
数据库连接满
网络安全防范意见
数据库恢复的基础是建立冗余数据
小蜜蜂软件开发
饥荒连接不到科雷服务器怎么办
清华大学出版社数据库技术
服务器中的视频怎么获得
服务器安全防护方法
电脑服务器已满怎么办
计算机网络技术设备怎样连接
安卓软件开发外包
html5创建单机数据库
济南学软件开发的大专
江阴智能化软件开发定做价格
计算机网络技术读大专有用吗
上海社交软件开发外包
软件开发对办公地址的要求
交通网络安全网络格言
游戏服务器限制是什么意思
邹平工资管理oa软件开发公司
建立数据库技术培训
朝阳分局网络安全保卫
互联网科技加工厂
999数据库表名
web程序部署到服务器
英国尼尔森数据库
网络安全班会后感