我的编程空间,编程开发者的网络收藏夹
学习永远不晚

falcon监控redis

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 进程监控
falcon监控redis

redis状态监控

falcon监控redis

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

falcon监控redis

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux下如何部署Open-Falcon监控系统

本篇内容介绍了“Linux下如何部署Open-Falcon监控系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Open-Falcon 是人
2023-06-27

promethus监控Redis

Prometheus exporter for Redis metrics.github地址:https://github.com/oliver006/redis_exporter线上服务器,自建了6台Redis实例,需要进行监控。下载最新
2023-01-31

运维监控系统之Prometheus redis监控

redis_exporter就是为了收集redis服务指标的应用。

监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus等数据源。
GrafanaMySQL2024-11-30

怎么用ES做Redis监控

本篇内容主要讲解“怎么用ES做Redis监控”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用ES做Redis监控”吧!序言图示:Redis热度排名Redis当下很流行,也很好用,无论是在业务
2023-06-17

zabbix怎么监控redis内存

这篇文章主要介绍了zabbix怎么监控redis内存的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇zabbix怎么监控redis内存文章都会有所收获,下面我们一起来看看吧。1、导入模板直接下载,通过下面的步骤导
2023-06-27

Redis哨兵监控的使用

目录1.简介(1)什么是哨兵(2)功能(3)启动2.运行流程(1)运行流程(2)故障迁移(failover)(3)使用建议1.简介(1)什么是哨兵哨兵是Redis的一种运行模式。它专注于对Redis实例(主节http://www.cpp
Redis哨兵监控的使用
2023-11-13

Redis怎么实现性能监控

本篇内容介绍了“Redis怎么实现性能监控”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录1.redis_exporter2.promet
2023-06-20

java面试题如何监控redis

本文介绍了Java中监控Redis的多种方法,包括使用客户端库、第三方工具、JMX、指标收集库和日志记录。关键指标包括连接数、内存使用量、命中率、命令执行时间、慢查询和键过期。最佳实践包括设置警报、定期检查、优化性能和使用Sentinel或Cluster。通过监控Redis,Java程序员可以确保其稳定性和性能。
java面试题如何监控redis
2024-04-02

编程热搜

目录