falcon监控redis
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,falcon 结合脚本redis-monitor.py进行监控redis* * * * * python /usr/local/openfalcon-0.2/mymon/redis-monitor.
千家信息网最后更新 2025年11月07日falcon监控redis
falcon 结合脚本redis-monitor.py进行监控redis* * * * * python /usr/local/openfalcon-0.2/mymon/redis-monitor.py &> /usr/local/openfalcon-0.2/mymon/redis-monitor.logcat redis-monitor.py#注意修改配置项:_redis_cli,def __init__,insts_list,ip#!/bin/env python#-*- coding:utf-8 -*-import jsonimport timeimport socketimport osimport reimport sysimport commandsimport urllib2, base64class RedisStats: # 如果你是自己编译部署到redis,请将下面的值替换为你到redis-cli路径 _redis_cli = '/usr/local/bin/redis-cli' _stat_regex = re.compile(ur'(\w+):([0-9]+\.?[0-9]*)\r') def __init__(self, port='6379', passwd=None, host='127.0.0.1'): self._cmd = '%s -h %s -p %s info' % (self._redis_cli, host, port) if passwd not in ['', None]: self._cmd = '%s -h %s -p %s -a %s info' % (self._redis_cli, host, port, passwd) def stats(self): ' Return a dict containing redis stats ' info = commands.getoutput(self._cmd) #print info return dict(self._stat_regex.findall(info))def main(): ip = '192.168.1.1' #ip = socket.gethostname() timestamp = int(time.time()) step = 60 # inst_list中保存了redis配置文件列表,程序将从这些配置中读取port和password,建议使用动态发现的方法获得,如: # inst_list = [ i for i in commands.getoutput("find /etc/ -name 'redis*.conf'" ).split('\n') ] insts_list = [ '/etc/redis/redis.conf' ] p = [] monit_keys = [ ('connected_clients','GAUGE'), ('blocked_clients','GAUGE'), ('used_memory','GAUGE'), ('used_memory_rss','GAUGE'), ('mem_fragmentation_ratio','GAUGE'), ('total_commands_processed','COUNTER'), ('rejected_connections','COUNTER'), ('expired_keys','COUNTER'), ('evicted_keys','COUNTER'), ('keyspace_hits','COUNTER'), ('keyspace_misses','COUNTER'), ('keyspace_hit_ratio','GAUGE'), ] for inst in insts_list: port = commands.getoutput("sed -n 's/^port *\([0-9]\{4,5\}\)/\\1/p' %s" % inst) passwd = commands.getoutput("sed -n 's/^requirepass *\([^ ]*\)/\\1/p' %s" % inst) metric = "redis" endpoint = ip tags = 'port=%s' % port try: conn = RedisStats(port, passwd) stats = conn.stats() except Exception,e: continue for key,vtype in monit_keys: #一些老版本的redis中info输出的信息很少,如果缺少一些我们需要采集的key就跳过 if key not in stats.keys(): continue #计算命中率 if key == 'keyspace_hit_ratio': try: value = float(stats['keyspace_hits'])/(int(stats['keyspace_hits']) + int(stats['keyspace_misses'])) except ZeroDivisionError: value = 0 #碎片率是浮点数 elif key == 'mem_fragmentation_ratio': value = float(stats[key]) else: #其他的都采集成counter,int try: value = int(stats[key]) except: continue i = { 'Metric': '%s.%s' % (metric, key), 'Endpoint': endpoint, 'Timestamp': timestamp, 'Step': step, 'Value': value, 'CounterType': vtype, 'TAGS': tags } p.append(i) print json.dumps(p, sort_keys=True,indent=4) method = "POST" handler = urllib2.HTTPHandler() opener = urllib2.build_opener(handler) url = 'http://127.0.0.1:1998/v1/push' request = urllib2.Request(url, data=json.dumps(p) ) request.add_header("Content-Type",'application/json') request.get_method = lambda: method try: connection = opener.open(request) except urllib2.HTTPError,e: connection = e # check. Substitute with appropriate HTTP code. if connection.code == 200: print connection.read() else: print '{"err":1,"msg":"%s"}' % connectionif __name__ == '__main__': proc = commands.getoutput(' ps -ef|grep %s|grep -v grep|wc -l ' % os.path.basename(sys.argv[0])) sys.stdout.flush() if int(proc) < 5: main()redis 进程监控
redis状态监控
监控
配置
信息
动态
命中率
建议
文件
方法
点数
版本
状态
碎片
程序
脚本
路径
进程
面的
utf-8
编译
输出
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
海南数据库安全箱行业
网络安全责任不断夯实
网站数据库怎么下
网络安全推荐工具
揭阳定制软件开发
网络技术员实习岗位日志
杭州市网络安全信息研究所
网络安全工作的重点
数据库有效性文本写法
后台数据库备份
软件开发的公司叫什么股票
数据库的完整性是指
计算机网络技术的学啥
银行crm数据库设计
控制系统软件开发服务流程
数据库操作大全
it软件开发优选企业
rails 数据库查询
软件开发改进计划
怎么查看本机的服务器ip地址
软件开发管理注意事项
服务器插件更新
超星电子数据库人工客服电话
陕西dns服务器地址
思格尔网络技术
数据库文档模型的优缺点
计算机网络技术基本要求
关于网络安全的5个建议
数据库中的亲属关系应该怎么筛选
lol登录不上去查询服务器