1. 程式人生 > >Redis 圖形化監控方案 RedisLive 介紹

Redis 圖形化監控方案 RedisLive 介紹

作為一款開源的 Redis 圖形化監控工具,RedisLive 提供對 Redis 例項的記憶體使用情況,接收的客戶端命令,接收的請求數量以及鍵進行監控。RedisLive 的工作原理基於 Redis 的 INFO 和 MONITOR 命令,通過向 Redis 例項傳送 INFO 和 MONITOR 命令來獲取 Redis 例項當前的執行資料。

RedisLive 提供的圖形化展示介面如下圖所示:

這裡寫圖片描述

安裝

RedisLive 使用 Python 實現,使用 Tornado 作為自己的 Web 伺服器。執行 RedisLive 並不需要額外的編譯過程。下載 RedisLive 的程式碼後,只須安裝好依賴的相關 Python 擴充套件包就可以直接執行。
可以通過 Git 下載最新的 RedisLive 原始碼:

git clone https://github.com/kumarnitin/RedisLive.git

進下下載後的 RedisLive 目錄,可以看下 RedisLive 依賴的 Python 擴充套件包都已經寫在 requirements.txt 檔案中了。requirements.txt 的內容如下:

argparse==1.2.1
python-dateutil==1.5
redis
tornado==2.1.1

熟悉 Python 的朋友對於 requirements.txt 檔案也一定感覺很親切了,使用下面的命令可以安裝裡面的擴充套件包(指定豆瓣源來安裝速度更快):

pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

執行

安裝好依賴後,接下來就可以執行 RedisLive 了。進入 RedisLive/src 目錄,可以看到 redis-live.conf.example檔案,這個檔案是 RedisLive 的示例配置檔案,內容如下:

{
    "RedisServers":
    [ 
        {
            "server": "154.17.59.99",
            "port" : 6379
        },

        {
            "server": "localhost",
            "port" : 6380
, "password" : "some-password" } ]
, "DataStoreType" : "redis", "RedisStatsServer": { "server" : "ec2-184-72-166-144.compute-1.amazonaws.com", "port" : 6385 }, "SqliteStatsStore" : { "path": "to your sql lite file" } }
  • RedisServers:監控的 Redis 例項列表,RedisLive 支援同時監控多個 Redis 例項
  • RedisStatsServer:用來儲存監控資料的 Redis 例項,此配置不同於 RedisServers,RedisLive 並不監控 RedisStatsServer,RedisStatsServer 只是用作儲存監控資料使用
  • DataStoreType:監控資料的儲存方案,可以配置為redis或者sqlite
  • SqliteStatsStore:儲存監控資料的 sqlite 配置

我們例項使用的redis-live.conf(需要去除.example字尾)配置如下所示:

{
    "RedisServers":
    [ 
        {
            "server": "127.0.0.1",
            "port" : 6379
        }
    ],

    "DataStoreType" : "sqlite",

    "SqliteStatsStore" :
    {
        "path":  "db/redislive.sqlite"
    }
}

即監控的 Redis 例項為 127.0.0.1:6379 ,使用 sqlite 作用儲存監控資料方案,sqlite 資料庫路徑為db/redislive.sqlite

配置完成後,便可以將 RedisLive 執行起來。RedisLive 的執行包括兩個部分(在 RedisLive/src 目錄),redis-monitor.py用於向 Redis 例項傳送 INFO 和 MONITOR 命令並獲取其返回,redis-live.py 用於執行 Web 伺服器。

我們首先啟動redis-monitor.py指令碼,並將duration引數設定為 120 秒。duration引數指定了監控指令碼的執行持續時間,例如設定為 120 秒,即經過 120 秒後,監控指令碼會自動退出,並在終端列印 shutting down… 的提示。

./redis-monitor.py --duration=120

接下來啟動 Web 伺服器:

./redis-live.py

這裡寫圖片描述

需要指出的是,由於redis-monitor.py指令碼採用向 Redis 例項傳送 MONITOR 命令和 INFO 命令的方式來取得監控資料,而 MONITOR 命令對於 Redis 例項的效能有較大影響,因此,對於生產環境下的redis-monitor.py的部署,需要設定一個較適宜的duration引數,並使用 crontab 來定時執行該指令碼。

參考資料