做个简单的Redis监控(源码分享)
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的开源监控解决方案,个人感觉是一款强大而非常好的监控工具,为什么呢,因为它是用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监控(源码分享)的更多相关文章
- 做个简单的Redis监控(源码分享)[转载]
Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...
- 曹工说Redis源码(4)-- 通过redis server源码来理解 listen 函数中的 backlog 参数
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
- 一款非常简单的android音乐播放器源码分享给大家
一款非常简单的android音乐播放器源码分享给大家,该应用虽然很小,大家常用的播放器功能基本实现了,可能有点还不够完善,大家也可以自己完善一下,源码在源码天堂那里已经有了,大家可以到那里下载学习吧. ...
- WP8.1&Win10幸运大转盘源码分享
先AD一下我的群:Win10开发者群:53078485 最近在写一个APP,其中需要一个转盘动画的源码,找了很多但是都没有找到,无奈只好自己来写,写完效果自己还是比较满意的,分享出来,有需要的童鞋可以 ...
- 3D语音天气球(源码分享)——完结篇
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 由于这篇文章是本系列最后一篇,有必要进行简单的回顾和思路整理. 这个程序是由两 ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 3D语音天气球(源码分享)——创建可旋转的3D球
开篇废话: 在9月份时参加了一个网站的比赛,比赛的题目是需要使用第三方平台提供的服务做出创意的作品. 于是我选择使用语音服务,天气服务,Unity3D,Android来制作一个3D语音天气预报,我给它 ...
- Android精品源码分享第四波袭来,免费下载!
今天又汇总了几个优质的源码分享出来给大家!希望可以帮到需要的朋友~1.Android实现-带动画的饼图控件 分享的是Android技术相关的源码内容,希望对大家的Android学习有帮助.带动画的饼图 ...
- TCP/IP以及Socket聊天室带类库源码分享
TCP/IP以及Socket聊天室带类库源码分享 最近遇到个设备,需要去和客户的软件做一个网络通信交互,一般的我们的上位机都是作为客户端来和设备通信的,这次要作为服务端来监听客户端,在这个背景下,我查 ...
随机推荐
- POJ 1655 Balancing Act 焦点树
标题效果:鉴于一棵树.除去一个点之后,这棵树将成为一些中国联通的块.之后该点通过寻求取消最低形成块的最大数目. 思维:树DP思维.通过为每个子树尺寸的根节点深搜索确定.之后该节点然后除去,,还有剩下的 ...
- js 实现自动换行
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- UUShutdown关机工具 - 给 Windows8.1Metro 开始屏幕添加 关机重启按钮
UUShutdown,给开始屏幕(开始菜单)添加重启关机等按钮 如图: 安装完成之后找到开始菜单程序文件夹中的快捷方式,附加到开始屏幕即可. 2.0加入主程序界面,支持换肤和定时: 看见的需要那就拿去 ...
- leetcode[73] Set Matrix Zeroes 将矩阵置零
给定一个矩阵,把零值所在的行和列都置为零.例如: 1 2 3 1 3 1 1 1 操作之后变为 1 3 0 0 0 1 1 方法1: 赋值另存一个m*n的矩阵,在原矩阵为零的值相应置新的矩阵行和列为零 ...
- css技巧--整理(1)
1.文字描边 -webkit-text-shadow:#be8ef8 2px 0 1px,#be8ef8 0 2px 1px,#be8ef8 -2px 0 1px,#be8ef8 0 -2px 1px ...
- Objective C多态
面向对象的封装的三个基本特征是.继承和多态. 包是一组简单的数据结构和定义相关的操作在上面的其合并成一个类,继承1种亲子关系,子类能够拥有父类定的成员变量.属性以及方法. 多态就是指父类中定义的成员变 ...
- 十款最佳Node.js MVC框架
十款最佳Node.js MVC框架摘要:Node.js是JavaScript中最为流行的框架之一,易于创建可扩展的Web应用.本文分享十款最佳的JavaScript框架. Node.js是JavaSc ...
- jquery调用wcf案例
----------根据其他网友总结 1.在契约接口上添加:[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessa ...
- 点击表格的单元格时实现变颜色,通过for循环为每个单元格添加一个onclick事件
<title>无标题文档</title> <script type="text/javascript" language="javascri ...
- [转载]Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...