Redis監控html
Redis 是目前應用普遍的NoSQL,我作的項目中大部分都是與Redis打交道,發現身邊的朋友也更多人在用,相對於memcached 來講,它的優點也確實是可圈可點。在隨着業務,數據量等不斷的擴大後,對Redis的穩定性,性能等也更在的重視,以前就遇到過Redis致使服務器內存不足,作持久化的時候CPU飆高,Redis鏈接數過多等問題,這時候咱們就須要有一個監控工具,可以看到各個指標的變化,方便作跟蹤分析,這裏先列舉下目前接觸過幾個監控工具。python
redis-cli git
這個工具是Redis自己自帶的,當咱們下載Redis安裝包的時候,就會發現,裏面自帶了這個工具,使用也很是簡單,只須要輸入INFO 命令就能夠獲取Redis服務相關的信息,效果以下:程序員
固然,輸入Info的話只能監控一次,若是想連續監控,可使用命令github
-r 10 -i 1 INFOredis
其中-r 是執行的次數,-i是每次執行的間隔時間(秒)json
關於INFO 命令的使用和參數說明,能夠參考這個地址:http://www.runoob.com/redis/server-info.htmlwindows
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
使用說明