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 來定時執行該指令碼。