http://www.cnblogs.com/Leo_wl/p/5870006.html
写在前面
前两天看到张善友老师的一篇文章《先定个小目标,使用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,连接上虚拟机,输入命令下载安装包:
解压压缩包:
进入到pip文件目录:
执行安装命令:
就表示安装成功了。
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安装包:
然后执行:
安装完setuptools后,再次运行“python setup.py install”就能成功安装pip了。
然后开始安装RedisLive的依赖项。先装好python中的web服务器tornado:
再安装redis的python版SDK:
最后安装一个时间工具:
如果你的python版本小于2.7,还需要安装argparse:
到现在为止,准备工作已经完成了,然后开始正式部署RedisLive。
先下载好RedisLive的源码,可以直接在虚拟机上使用git命令从github上下载(推荐):
也可以在本地下载好压缩包然后传到虚拟机上,下载地址:
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监控的核心服务。
到此为止所有准备工作都完成了,最后来启动服务:
然后在浏览器中打开http://192.168.3.222:8888/index.html,就可以看到监控信息了:
数据会30秒刷新一次,因为我们在启动了时候设置了心跳时间。在页面右上角有一个下拉列表,里面是在配置文件里设置好的redis实例,可以轻松切换。其他功能可以在页面中慢慢感受。
由于我的项目现在没有具体业务在跑所以监控数据不是很多,最后再来一张官网给出的效果图:
至此,部署成功!
总结
虽然并不懂python语言也从来没有接触过,但凭借着这三年写代码的感觉丝毫不影响整个部署过程,打开python源码文件有些代码也能大致猜到是什么意思。再次让我感受到在编程世界,用什么语言并不重要,重要的是什么语言能满足实际需要,编程语言虽然不是完全相通的,但还是有太多相似的。