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.log
cat redis-monitor.py
#注意修改配置项:_redis_cli,def __init__,insts_list,ip
#!/bin/env python
#-*- coding:utf-8 -*-
import json
import time
import socket
import os
import re
import sys
import commands
import urllib2, base64
class 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"}‘ % connection
if __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状态监控

原文地址:https://blog.51cto.com/liuzhanbin/2360416

时间: 2024-11-04 22:16:46

falcon监控redis的相关文章

监控redis数据库应用状态:python,tornado实现

公司里最近redis服务器压力越来越大,其大概情况,只能从操作系统层面看,并不详尽,故同事在网上找了一个叫做 redis-live的开源项目,我配合部署了一下,还真有点意思,并解决了其中部分小debug, 原文来之这里 目前来说,越来越多的使用多了NOSQL的业务,但是这方面的监控缺不多.今天给大家介绍几个专业监控redis服务的工具,便于大家进行redis性能分析. 下面开始介绍安装redis-live: 因为redis-live是基于python开发的,所以首先要部署所需要的python环境

监控开发之用munin来自定义插件监控redis和mongodb

求监控组的大哥大妹子们干点事,真不容易 ! 要问他们是谁?  他们是神 .轻易别找他们,因为找了也是白找. 上次因为python和redis长时间brpop的时候,会有线程休眠挂起的情况,所有通知报警平台被下线了.这次算是完美解决了.再把他给上线.这两公司的告警已经开始往我这边的接口开始仍了. 这边正在改zabbix cmdb的控制,所以暂时不能登录.等搞好了后,让他们搞下redis和mogodb的监控,居然还让我发邮件和提供脚本及思路啥的...   一寻思,又要去zabbix,又要写脚本,还不

RedisLive监控Redis服务

RedisLive监控Redis服务 RedisLive是由python编写的并且开源的图形化监控工具,非常轻量级,核心服务部分只包含一个web服务和一个基于redis自带的info命令以及monitor命令的监控服务,界面上只有一个基于BootStrap的web界面,非常简洁明了.除此之外,它还支持多实例监控,切换方便,而且配置起来也非常容易.监控信息支持redis存储和持久化存储(sqlite)两种方式. 注意:RedisLive是使用Python2.x编写,建议使用2.7,本次环境为Cen

zabbix 监控 redis

通过redis自带的info命令来监控redis的健康状态,通过redis-cli PING命令来监控redis的存活状态. 附件中有监控模板,将监控脚本放在redis服务器的自定义的/scripts/zabbix_redis/下: #! /bin/bash #Name: redismontior.sh REDISCLI="/usr/bin/redis-cli" HOST="127.0.0.1" PORT=6379 if [[ $# == 1 ]];then    

Redis 学习(Zabbix 监控Redis)

前面redis的配置文件盒常用命令.redis info信息都解释完了,接下来就是监控我们的redis了,我使用的是zabbix监控软件,所有在这里我在这里详细介绍下怎么设置zabbix来监控reids,主要分为配置zabbix插件.插件脚本.创建模板监控项.创建图形几个方面. Redis 学习(配置文件和常用命令注释): http://54snow.blog.51cto.com/2690157/1537449 Redis 学习(Redis Info详细注释): http://54snow.bl

zabbix自动发现监控redis

1: 在zabbix_agentd端编写自动发现的脚本,主要是自动发现redis的监控端口,脚本如下: vim /usr/local/zabbix/zabbix_discover_redis.sh #!/bin/sh #zhuangweihong 20160419 zabbix discover redis res=`sudo ss -tulnp|grep redis|awk '{print $(NF-2)}'|awk -F':' '{print $(NF)}'|sort -u` if [[ -

Cloud Insight 仪表盘上线 | 全面监控 Redis

OneAPM 作为应用性能领域的新兴领军企业,近期发布了重量级新产品—— Cloud Insight 数据管理平台,用它能够监控所有基础组件,并通过 tag 标签对数据进行管理. 近日,Cloud Insight (Ci) 探针仪表盘功能重磅上线,默认安装了探针,配置平台服务就会自动生成相应的仪表盘,而且仪表盘将包含所有数据.此外,本文也将重点介绍 Redis 的几项监控指标以及一些值得注意的部分,希望给使用 Redis 的读者带来一些帮助. 仪表盘 任意时间段数据查询 默认只能显示最近一小时的

Cacti监控Redis实现过程

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.被广泛的用于对服务器的运维监控中,Cacti提供了一种插件式的管理,只要按要求写好特定的模板,那么你就可以对任何服务进行流量监控.本文就是要为大家介绍两个模板,分别是MongoDB和Redis的Cacti模板,使用它,你可以对你的MongoDB和Redis服务进行流量监控. 1,升级python,此时如果是系统默认的python版本,会出现以下错误 python setup.py install Tr

zabbix监控redis DB key的总数量

一个简单监控redis DB的key数量,脚本如下: #!/bin/bash PORT='7010' HOST='192.168.33.33' echo `redis-cli -h ${HOST} -p ${PORT} <<EOF select 1 llen data1 EOF` > /usr/local/redis/script/redix.txt echo `awk '{print $2}' /usr/local/redis/script/redix.txt` exit 0 脚本实现