做个简单的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学习有帮助.带动画的饼图 ...
随机推荐
- Codeforces 982C(dfs+思维)
C. Cut 'em all! time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 第六章 hbase shell 命令
hbase shell命令 描述 alter 修改列族(Column Family)模式 count 统计表中行的数量 create 创建表 ...
- HDU2546题解
解题思路:先对价格排序(顺序或倒序都可以),然后,对前n-1(从1开始.排序方式为顺序)做容量为m(卡上余额)-5的01背包(背包体积和价值相等).假设dp[i][j]表示从前i个背包中挑选体积不超过 ...
- 工具类MyBatisUtils创建SqlSessionFactory
package com.js.ai.modules.pointwall.interfac; import java.io.IOException; import java.io.InputStream ...
- oracle建立用户与授权(转载)
创建表空间及用户: create tablespace 表空间名 datafile 'd:/seal.dbf' size 10M autoextend on;create user username ...
- Java多线程面试问题集锦
参看:http://www.importnew.com/1428.html
- 【框架】Spring和dubbox
分布式服务框架 dubbo/dubbox 入门示例 https://www.cnblogs.com/yjmyzz/p/dubbox-demo.html 初识Spring Boot框架 https:// ...
- eclipse中导入web项目时,出现转不了项目类型的问题解决方案
解决步骤: 1.进入项目目录,可看到.project文件,文本编辑器打开. 2.找到<natures>...</natures>代码段,加入如下标签内容并保存: <nat ...
- sql之将一个表中的数据注入另一个表中
sql之将一个表中的数据注入另一个表中 需求:现有两张表t1,t2,现需要将t2的数据通过XZQHBM相同对应放入t1表中 t1: t2: 思路:left join 语句: select * from ...
- idea使用jrebel热部署插件
首先通过idea下载JReble插件 访问http://idea.lanyus.com/网站 跟着弹出框的步骤走就可以实现了: 在idea中使用tomcat部署项目 不要使用war:使用下面的文件