监控redis数据库应用状态:python,tornado实现

公司里最近redis服务器压力越来越大,其大概情况,只能从操作系统层面看,并不详尽,故同事在网上找了一个叫做 redis-live的开源项目,我配合部署了一下,还真有点意思,并解决了其中部分小debug,
原文来之这里

目前来说,越来越多的使用多了NOSQL的业务,但是这方面的监控缺不多。今天给大家介绍几个专业监控redis服务的工具,便于大家进行redis性能分析。

下面开始介绍安装redis-live:
因为redis-live是基于python开发的,所以首先要部署所需要的python环境

1.wget http://dl.fedoraproject.org/pub/epel/6/x86_64/python-pip-0.8-1.el6.noarch.rpm
2.rpm -ivh python-pip-0.8-1.el6.noarch.rpm
3.pip-python install tornado
4.pip-python install redis
5.pip-python install python-dateutil
6.pip-python install argparse
环境部署完了之后,就需要开始安装软件了。

git clone https://github.com/kumarnitin/RedisLive.git
Initialized empty Git repository in /root/RedisLive/.git/
remote: Counting objects: 715, done.
remote: Compressing objects: 100% (377/377), done.
remote: Total 715 (delta 338), reused 699 (delta 323)
Receiving objects: 100% (715/715), 2.59 MiB | 353 KiB/s, done.
Resolving deltas: 100% (338/338), done.
因为没有打包的安装包,所以只能下载安装git的源码。
安装好之后就可以配置了:

cd RedisLive/src
vi redis-live.conf
{
        "RedisServers":
        [
                {
                  "server" : "127.0.0.1",
                  "port"  : 6379
                }
        ],

        "DataStoreType" : "sqlite",

        "RedisStatsServer":
        {
                "server" : "127.0.0.1",
                "port" : 6381
        }
}
RedisServers这个是redis服务器的配置。
RedisStatsServer是redis服务器的监控信息可以存放在其他的redis服务器中.也就是RedisStatsServe.
一般的是把”DataStoreType”改成sqlite类型的,下面的RedisStatsServer就不用配置了.

注:因为有些redis服务器是需要密码进行访问的,所以如果有密码的话,需要在RedisServers里面写上密码:如下:

        "RedisServers":
        [
                {
                  "server" : "127.0.0.1",
                  "port"  : 6379,
                  "password":"xxxxxx"
                }
        ],
配置好之后,就可以启动服务了。
./redis-monitor.py –duration 120 &
./redis-live.py &
注:启动服务之后,如果访问web页面的话,会在当前终端输出日志,如果不想在终端输出,可以查看redis-live.py的参数

[root@localhost src]# ./redis-live.py --help
Usage: ./redis-live.py [OPTIONS]

Options:

  --help                           show this help information
  --log_file_max_size              max size of log files before rollover
                                   (default 100000000)
  --log_file_num_backups           number of log files to keep (default 10)
  --log_file_prefix=PATH           Path prefix for log files. Note that if you
                                   are running multiple tornado processes,
                                   log_file_prefix must be different for each
                                   of them (e.g. include the port number)
  --log_to_stderr                  Send log output to stderr (colorized if
                                   possible). By default use stderr if
                                   --log_file_prefix is not set and no other
                                   logging is configured.
  --logging=debug|info|warning|error|none
                                   Set the Python log level. If 'none', tornado
                                   won't touch the logging configuration.
                                   (default info)
可以看到有日志大小,路径,级别等等的选项。
最后来看下监控效果图:

部署过程中遇到一些问题,
1,首先api/util/setting.py文件要加载项目根目录下的redis-live.conf,作者的意思,可能是想通过json解析配置文件,并最终load为字典供其它函数调用,但是人为写的配置文件,各种换行,空格,着实解析起来,真有点麻烦.经过分析,反正setting.py文件里函数要调用字典,并访问key我就直接把redis-live.conf配置改为字典,直接供setting.py调用,
  切记: setting.py  import redis_live.py时需要回载项目根目录,要不然找不到字典, import sys; sys.path.append("根目录") 即可.

2,api/controller/BaseController.py 也需要导入根目录下的,dataprovider,也是同样问题,找不到 dataprovider下面所有模块,用同样方法解决,




posted @ 2015-06-24 23:28  shantuwqk  阅读(942)  评论(0编辑  收藏  举报