寫在前面
前兩天看到張善友老師的一篇文章《先定個小目標, 使用C# 開發的千萬級應用》,里面給出了一張騰訊OA基礎服務中redis運行情況的一張監控圖,然后想到自己的項目中前不久也上了redis緩存,所以也想找個監控工具。搜索一番,決定使用RedisLive來做監控。
和RedisLive有關的信息
RedisLive是由python編寫的並且開源的圖形化監控工具,非常輕量級,核心服務部分只包含一個web服務和一個基於redis自帶的info命令以及monitor命令的監控服務,界面上只有一個基於BootStrap的web界面,非常簡潔明了。除此之外,它還支持多實例監控,切換方便,而且配置起來也非常容易。監控信息支持redis存儲和持久化存儲(sqlite)兩種方式。開源地址為:https://github.com/nkrode/RedisLive。
部署過程
這里繼續使用之前配置好的centos環境,配置步驟點這里。Linux系統通常都已經裝好了python環境,所以我們就不用額外再裝一次,運行命令:
python –V
可以查看系統中的python版本。由於RedisLive是依賴於redis服務和web服務的,所以我們要先安裝一些依賴包。
Python中的包管理工具是pip,默認情況下centos是沒有安裝pip的,所以先裝好pip這個工具方便后面使用。
打開Xshell,連接上虛擬機,輸入命令下載安裝包:
wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz
解壓壓縮包:
tar zvxf 1.5.5.tar.gz #解壓文件
進入到pip文件目錄:
cd pip-1.5.5
執行安裝命令:
python setup.py install
然后會看到一大堆的安裝信息快速閃過,看到最后輸出
Finished processing dependencies for pip==1.5.5
就表示安裝成功了。
如果看到安裝失敗輸出錯誤信息:
Traceback (most recent call last): File "setup.py", line 31, in <module> from setuptools import setup, find_packages ImportError: No module named setuptools
說明有一個依賴工具setuptools缺失,返回根目錄下載setuptools安裝包:
cd ~ //返回根目錄 wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg //下載安裝包
然后執行:
sh setuptools-0.6c11-py2.7.egg
安裝完setuptools后,再次運行“python setup.py install”就能成功安裝pip了。
然后開始安裝RedisLive的依賴項。先裝好python中的web服務器tornado:
pip install tornado
再安裝redis的python版SDK:
pip install redis
最后安裝一個時間工具:
pip install python-dateutil
如果你的python版本小於2.7,還需要安裝argparse :
pip install argparse
到現在為止,准備工作已經完成了,然后開始正式部署RedisLive。
先下載好RedisLive的源碼,可以直接在虛擬機上使用git命令從github上下載(推薦):
git clone https://github.com/kumarnitin/RedisLive.git
也可以在本地下載好壓縮包然后傳到虛擬機上,下載地址:
https://codeload.github.com/nkrode/RedisLive/legacy.zip/master
下載完成后可以看到源碼結構為:
其中redis-live.conf.example是作者給出的一個示例配置文件,啟動服務之前把.example后綴刪掉變成.conf文件(因為官網給的信息是編輯redis-live.conf來做配置,實際上從github上clone的代碼里並沒有redis-live.conf這個文件,當時一直找.cong結尾的文件始終找不到,仔細一看原來是redis-live.conf.example,有點坑啊~),打開redis-live.conf,配置好redis實例的信息:
整個配置實際上是一個json對象,RedisServers是redis服務器的信息,由於是數組類型所以配置多個redis實例。DataStoreType是監控信息的存儲方式,有”redis”和” sqlite”兩種方式,分別對應下面RedisStatsServer和SqliteStatsStore,編輯完成后保存。
redis-live.py是用來啟動web服務的,默認端口是8888 。redis-monitor.py就是redis監控的核心服務。
到此為止所有准備工作都完成了,最后來啟動服務:
./redis-monitor.py --duration=30 //啟動監控,duration是心跳時間 ./redis-live.py //啟動web服務,默認監聽8888端口
然后在瀏覽器中打開http://192.168.3.222:8888/index.html,就可以看到監控信息了:
數據會30秒刷新一次,因為我們在啟動了時候設置了心跳時間。在頁面右上角有一個下拉列表,里面是在配置文件里設置好的redis實例,可以輕松切換。其他功能可以在頁面中慢慢感受。
由於我的項目現在沒有具體業務在跑所以監控數據不是很多,最后再來一張官網給出的效果圖:
至此,部署成功!
總結
雖然並不懂python語言也從來沒有接觸過,但憑借着這三年寫代碼的感覺絲毫不影響整個部署過程,打開python源碼文件有些代碼也能大致猜到是什么意思。再次讓我感受到在編程世界,用什么語言並不重要,重要的是什么語言能滿足實際需要,編程語言雖然不是完全相通的,但還是有太多相似的。