Redis监控

Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点。在随着业务,数据量等不断的扩大后,对Redis的稳定性,性能等也更在的重视,之前就遇到过Redis导致服务器内存不足,做持久化的时候CPU飙高,Redis连接数过多等问题,这时候我们就需要有一个监控工具,能够看到各个指标的变化,方便做跟踪分析,这里先列举下目前接触过几个监控工具。

redis-cli 

这个工具是Redis本身自带的,当我们下载Redis安装包的时候,就会发现,里面自带了这个工具,使用也非常简单,只需要输入INFO 命令就可以获取Redis服务相关的信息,效果如下:

当然,输入Info的话只能监控一次,如果想连续监控,可以使用命令

-r 10 -i 1 INFO

其中-r 是执行的次数,-i是每次执行的间隔时间(秒)

关于INFO 命令的使用和参数说明,可以参考这个地址:http://www.runoob.com/redis/server-info.html

redis-live

这是一款 使用python编写 的监控工具,所以运行依赖于python 环境和几个三方库,不过监控的指标有点少,而且在windows上有时候觉得卡卡的,这里提供下相关的资料

官网地址:https://github.com/nkrode/RedisLive

Linux下安装使用: http://www.cnblogs.com/madyina/p/4060556.html

Windows下安装使用:http://www.cnblogs.com/mahatmasmile/p/5039084.html

Opserver

这个是由Stack Overflow(http://www.stackoverflow.com/)的开源监控解决方案,个人感觉是一款强大而非常好的监控工具,为什么呢,因为它是用C# 来写的(啊哈哈,开个玩笑~~)。

只要是由于它除了可以监控Reidis,还可以监控Sql,Elasticsearch等,而且监控的功能也很强大。

不过个人感觉在使用上有点过于重量级,而且关于它的资料和官方的文档都很少。这里也提供下相关的资料:

官方地址:https://github.com/opserver/Opserver

Windows 下的使用说明:http://www.cnblogs.com/mushroom/p/4609365.html

RedisMonitor(自己造轮子)

毛爷爷曾经说过“自动动手,丰衣足食”。大概看了下Opserver的源码,看到Opserver也是使用StackExchange.Redis 调用了Redis的INFO来做监控的,之前刚好也看过StackExchange.Redis 的使用,而且StackExchange.Redis 对于获Server信息这块,都已经封装好了,几乎可以直接调用,于是就想干脆自己动手做一个简单的监控。

对于StackExchange.Redis 的使用和通用类的封装,可以参考我之前写的一篇文章:http://www.cnblogs.com/qtqq/p/5951201.html

而StackExchange.Redis 如何获取Server信息和使用命令操作,可以参看官网的:https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Configuration.md

首先是ConnectionMultiplexer对象封装

ConnectionMultiplexer对象StackExchange.Redis最中枢的对象,几乎所有的操作都是依靠它来使用,代码如下:

public static class RedisConnectionHelp

{

private static readonly ConcurrentDictionary<string, ConnectionMultiplexer> ConnectionCache = new ConcurrentDictionary<string, ConnectionMultiplexer>();

/// <summary>

/// 缓存获取

/// </summary>

/// <param name="connectionString"></param>

/// <returns></returns>

public static ConnectionMultiplexer GetConnectionMultiplexer(string connectionString)

{

if (!ConnectionCache.ContainsKey(connectionString))

{

ConnectionCache[connectionString] = GetManager(connectionString);

}

return ConnectionCache[connectionString];

}

private static ConnectionMultiplexer GetManager(string connectionString)

{

if (string.IsNullOrWhiteSpace(connectionString))

{

throw new Exception("Redis 连接地址不能为空");

}

var connect = ConnectionMultiplexer.Connect(connectionString);

return connect;

}

}

获取服务器信息用到的几个方法如下

 

GetServer(hostAndPort)

 

var server = RedisConnectionHelp.GetConnectionMultiplexer(readWriteHosts).GetServer(hostAndPort)

这里获取IServer对象,所有服务器相关的方法和信息都封装在这个对象中。

Ping()

server.Ping();

用来测试获取服务器的响应时间

InfoRaw()

server.InfoRaw()

获取服务器原始内容信息,输出的内容就是我们直接使用info命令看到的一样。

Info()

server.Info()

在一开始介绍的监控工具1的时候,截图中可以看到,info 命令输出的内容中包括了Server,Clients,Memory,Persistence等信息,Info()方法帮我们GroupBy了这些信息,做好了分组,并且所有的指标都封装成了Dictionary的类型,使用起来非常方便。

ClientList()

server.ClientList()

获取当前连接的所有客户端信息

只需要使用这几个方法,然后定时的刷新,将结果显示到页面,就能监控到Redis的信息和状态了这里贴上几个监控的效果图

监控列表

详情页面

简单监控

详细监控

监控图表

连接客户端监控

源码下载

关键的来了,要做一个懂得分享的程序员,源码地址:

https://github.com/qq1206676756/RedisMonitor

使用说明

下载源码编译后,只需要修改Config文件夹下面的RedisServiceConfig.json文件,修改成自己需要监控的Redis服务器地址就好了,ServerHost的配置可以参考https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Configuration.md
 
 

做个简单的Redis监控(源码分享)[转载]的更多相关文章

  1. 做个简单的Redis监控(源码分享)

    Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...

  2. winrt 上的翻书特效组件 源码分享 转载请说明

    http://blog.csdn.net/wangrenzhu2011/article/details/10207413 (转) [TemplatePart(Name = A_PARTNAME, Ty ...

  3. 曹工说Redis源码(4)-- 通过redis server源码来理解 listen 函数中的 backlog 参数

    文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...

  4. 一款非常简单的android音乐播放器源码分享给大家

    一款非常简单的android音乐播放器源码分享给大家,该应用虽然很小,大家常用的播放器功能基本实现了,可能有点还不够完善,大家也可以自己完善一下,源码在源码天堂那里已经有了,大家可以到那里下载学习吧. ...

  5. WP8.1&Win10幸运大转盘源码分享

    先AD一下我的群:Win10开发者群:53078485 最近在写一个APP,其中需要一个转盘动画的源码,找了很多但是都没有找到,无奈只好自己来写,写完效果自己还是比较满意的,分享出来,有需要的童鞋可以 ...

  6. 3D语音天气球(源码分享)——完结篇

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 由于这篇文章是本系列最后一篇,有必要进行简单的回顾和思路整理. 这个程序是由两 ...

  7. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  8. 3D语音天气球(源码分享)——创建可旋转的3D球

    开篇废话: 在9月份时参加了一个网站的比赛,比赛的题目是需要使用第三方平台提供的服务做出创意的作品. 于是我选择使用语音服务,天气服务,Unity3D,Android来制作一个3D语音天气预报,我给它 ...

  9. Android精品源码分享第四波袭来,免费下载!

    今天又汇总了几个优质的源码分享出来给大家!希望可以帮到需要的朋友~1.Android实现-带动画的饼图控件 分享的是Android技术相关的源码内容,希望对大家的Android学习有帮助.带动画的饼图 ...

随机推荐

  1. mysql的约束

    SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). (1)NOT NULL约 ...

  2. Oracle回收站使用全攻略

    摘要:回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息.用户进行删除操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Pur ...

  3. JS逻辑题 技术点: 1). 变量提升 2). 函数提升 3). 预处理 4). 调用顺序

    考查的技术点:  1). 变量提升 2). 函数提升  3). 预处理  4). 调用顺序 var c = 1; function c(c) { console.log(c); var c = 3; ...

  4. 【转】详解Data Binding 通过几个简单示例深入了解WinForm数据绑定特性

    原文地址:http://www.cnblogs.com/lichence/archive/2012/02/17/2356001.html

  5. Vue之cookie操作(原生)

    Vue之cookie操作(原生) 再vue组件中加入以下几个方法,然后调用即可. methods:{ //读取cookie,需要注意的是cookie是不能存中文的,如果需要存中文,解决方法是后端先进行 ...

  6. 转 CentOS下面安装RVM+ruby+Rails

    CentOS6.2下面安装RVM+ruby+Rails (1)RVM官方网站应该是改版过一次, 使用 curl -L https://get.rvm.io | bash -s stable 下载并安装 ...

  7. 集群的session问题解决方案

    一.nginx ip_hash 同一个ip的请求转发到同一个服务器,太low不解释. 二.spring-session 原理:存入session中的key-value,同时存放到redis中,如果se ...

  8. sql中经度维度计算距离

    ------------------------------------------创建一个方法---------------------------------------------------- ...

  9. JAVA_01

    Java局部变量 局部变量声明在方法.构造方法或者语句块中: 局部变量在方法.构造方法.或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁: 访问修饰符不能用于局部变量: 局部变量只在声明它 ...

  10. Synchronized块同步变量的误区

    我们可以通过synchronized块来同步特定的静态或非静态方法.要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传 ...