做个简单的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(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
使用说明
做个简单的Redis监控(源码分享)[转载]的更多相关文章
- 做个简单的Redis监控(源码分享)
Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...
- winrt 上的翻书特效组件 源码分享 转载请说明
http://blog.csdn.net/wangrenzhu2011/article/details/10207413 (转) [TemplatePart(Name = A_PARTNAME, Ty ...
- 曹工说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学习有帮助.带动画的饼图 ...
随机推荐
- [转载,感觉写的非常详细]DUBBO配置方式详解
[转载,感觉写的非常详细]DUBBO配置方式详解 原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.html DUBBO 是一个分布式服务框架,致力于提供 ...
- 6 istio 配置 grafana
1 验证prometheus service 已经运行: $ kubectl -n istio-system get svc prometheus NAME CLUSTER-IP EXTERNAL- ...
- 启动tomcat服务器,配置CATALINA_HOME和JAVA_HOME
遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:tomcat在启动时,会读取环境变量的信息,需要一个CATALIN ...
- python开发_python中for循环操作
如果你对python中的for循环不是很清楚,请看看这篇文章:”for循环控制语句——菜鸟的Python笔记“ 下面是我做的一些学习记录供大家参考: #基本的for循环语句 test_list = [ ...
- 关于jquery中的parent的认定
<li><label class='checkbox inline'><input type='checkbox' name='type[]' value='{$item ...
- vue组件重新加载(刷新)
vue组件重新加载(刷新) 第一种方法:利用v-if控制router-view,在根组件APP.vue中实现一个刷新方法 <template> <router-view v-if=& ...
- [转] C#-using用法详解
转载自 WanderOCN的文章 C#-using用法详解 using 关键字有两个主要用途: (一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型. (二).作为语句,用于定义一个 ...
- how to use jquery with primefaces
PrimeFaces already ships with jQuery bundled, yet you've downloaded and installed another one which ...
- Java设计模式学习01——单例模式(转)
原地址:http://blog.csdn.net/xu__cg/article/details/70182988 Java单例模式是一种常见且较为简单的设计模式.单例模式,顾名思义一个类仅能有一个实例 ...
- 获取当前UnixTime的零点时间戳
最近有个需求,开屏广告每天只出一次. 思路为如果出了开屏广告,则记录当前时间,下次来的时候,读取当前时间和上一次出开屏的时间. 算一下是不是在同一天即可. 我们的第一个想法是将上次开屏时间和当前时间归 ...