redis监控zabbix自动化模板-节点状态、内存、连接数
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,首先介绍下监控redis那些信息:Redis ping:检验pingRedis alive:查看检查端口是否aliveRedis connections:查看连接数Redis blockedClien
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
软件开发过程14各文档
医院设备管理系统软件开发
服务器出售发卡网
上海市网络安全公安局官网
计算机网络技术步骤
网络技术专业定义
衢州龙游县企业软件开发
提示数据库拒绝访问
软件开发做不了的的是
vs2010带数据库
数据库主码选姓名还是学号
中小产业园区软件开发商
昆明软件开发企业
虹口区网络软件开发服务收费
价格低的加固服务器
网络安全宣传标语模板
连接认证服务器失败
山西双联共赢网络技术
阿里云服务器连不上网
用qt软件开发工具
ibm服务器故障灯类型
壁挂式边缘计算服务器
道客巴巴北京网络技术有限公司
网络安全人才招聘网
网络安全免责条款
网络安全技术前面需要学什么
多串口服务器扫描的速度
牛牛数据库是干嘛的
数据库是否需要外键
网络安全工程师免费课程