作個簡單的Redis監控(源碼分享)[轉載]

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

 

使用說明

 

下載源碼編譯後,只須要修改Config文件夾下面的RedisServiceConfig.json文件,修改爲本身須要監控的Redis服務器地址就行了,ServerHost的配置能夠參考https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Configuration.md
 
 
相關文章
相關標籤/搜索