程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 做個簡單的Redis監控(源碼分享),redis監控源碼分享

做個簡單的Redis監控(源碼分享),redis監控源碼分享

編輯:關於.NET

做個簡單的Redis監控(源碼分享),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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved