目前来说,越来越多的使用多了NOSQL的业务,但是这方面的监控缺不多。今天给大家介绍几个专业监控redis服务的工具,便于大家进行redis性能分析。
一、redmon
这个工具是用ruby语言写的,ruby是小鬼子弄出来的,个人真心觉得比较难用。这个语言的包需要安装rvm(ruby version manager)来管理。所以首先要部署rvm的环境,虽然说不是很复杂,但是真心觉得不想用这个,以后有时间了会给大家介绍这个的。
二、redis-live
Github 下载: RedisLive
Centos 安装 python-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
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
环境部署完了之后,就需要开始安装软件了。
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的源码
Install Dependencies
tornado pip install tornado
redis.py pip install redis
python-dateutil pip install python-dateutil
You'll also need argparse if you're running Python < 2.7:
argparse pip install argparse
Get RedisLive
Clone the repo git clone https://github.com/kumarnitin/RedisLive.git , ordownload the latest release
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
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)
可以看到有日志大小,路径,级别等等的选项。
最后来看下监控效果图:
参考推荐: