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

一、redmon

这个工具是用ruby语言写的,ruby是小鬼子弄出来的,个人真心觉得比较难用。这个语言的包需要安装rvm(ruby version manager)来管理。所以首先要部署rvm的环境,虽然说不是很复杂,但是真心觉得不想用这个,以后有时间了会给大家介绍这个的。

 

二、redis-live

Github 下载: RedisLive

Centos 安装 python-pip

1) python-pip 官方: https://pypi.python.org/pypi/pip

2) 直接下载: wget https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz

3) 解压安装: tar zxvf pip-1.5.6.tar.gz  ;   python setup.py install

 

Centos 安装 setuptools

1) setuptools 官方: https://pypi.python.org/pypi/setuptools

2) 直接下载: wget https://pypi.python.org/packages/source/s/setuptools/setuptools-5.4.1.tar.gz#md5=3540a44b90017cbb851840934156848e

3) 解压安装: tar zxvf setuptools-5.4.1.tar.gz  ;     python setup.py install

 

今天的主要目的是redis-live这个软件。相对于redmon来说,部署相对来说简单的多了,而且功能上面也丝毫不逊色于redmon

 

安装redis-live:

因为redis-live是基于python开发的,所以首先要部署所需要的python环境

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/python-pip-0.8-1.el6.noarch.rpm 
rpm -ivh python-pip-0.8-1.el6.noarch.rpm
pip install tornado
pip install redis       // 需安装,跟redis-server不同
pip install python-dateutil
pip install argparse

环境部署完了之后,就需要开始安装软件了。

 

RedisLivehttps://github.com/sunboy-2050/RedisLive

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的源码

 

redis-live Installation

Install Dependencies

You'll also need argparse if you're running Python < 2.7:

Get RedisLive

Configuration

  • edit redis-live.conf :

    • update the value of the key RedisServers to the redis instances you want to monitor. You can monitor multiple instances by appending more values to the RedisServers list.
    • update the value of the key RedisStatsServer to the redis instance you will use to store RedisLive data (this redis instance is different from the redis instances you are monitoring).
    • passwords can be added as an optional parameter for any redis instance

if you don't have a spare redis instance to use to store Redis Live data, then you can configure to use sqlite by changing "DataStoreType" : "sqlite"

Start RedisLive

  • start the monitoring script ./redis-monitor.py --duration=120 duration is in seconds (see caveat)
  • start the webserver ./redis-live.py
  • RedisLive is now running  http://localhost:8888/index.html

Caveat on monitoring redis

Currently the only hook into monitoring a redis instance is Redis MONITOR command, which streams back every command processed and reduces the throughput of the redis instance. It is recommended to run redis-monitor with --duration suitable for your redis deployment and scheduling it to run periodically as a cron job.

 

 

安装好之后就可以配置了:

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  
        }  
    
        "SqliteStatsStore" :
        {
                "path": "db/redislive.sqlite" 
        }
}  

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)

可以看到有日志大小,路径,级别等等的选项。

最后来看下监控效果图:

redis-live

 

参考推荐:

Redis服务的监控

Redis监控工具 redmon

Redis图形监控工具--RedisLive