Nagios监控生产环境redis群集服务战

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,经济版 1GB 1个月
简介:
前言:
    曾经做了cacti上展示redis性能报表图。能够看到redis的性能变化趋势图, 可是还缺了实时报警通知的功能,如今补上这一环节。

在redis服务瓶颈或者异常时候即使报警通知,方便dba第一时间处理维护。

1,下载redis监控插件

Redis已经在服务器安装好了,所以直接能够进行监控。redis集群安装请參考:http://blog.itpub.net/26230597/viewspace-1145831/,下载地址为:http://download.csdn.net/detail/mchdba/80233512个版本号,一个是perl脚本写成的,一个是php脚本写成的,能够随意选择一个,这里选择的是perl脚本。

   

2,赋予运行权限

check_redis.phpcheck_redis.pl拷贝到/usr/lib/nagios/plugins/文件夹,然后赋予运行权限。

[root@wgq_41 plugins]# cd /usr/lib/nagios/plugins/

[root@wgq_41 plugins]# chown -R nagios.nagios check_redis.*

[root@wgq_41 plugins]# chmod 750 check_redis.*

 

3,定义监控命令

[root@wgq objects] vim /usr/local/nagios/etc/objects/commands.cfg

# add by tim on 20141010,for redis

# check redis

define command {

         command_name    check_redis

         command_line    /usr/lib/nagios/plugins/check_redis.pl -H $HOSTADDRESS$ -p $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -f

}


4,定义redis监控主机

[root@wgq etc]# vim /usr/local/nagios/etc/hosts.cfg

# No.018redis master server

define host{

        use                     linux-server

        host_name               cache-1

        alias                   cache-1

        address                 10.xxx.3.x0

        check_command           check-host-alive

        max_check_attempts              5

        check_period                    24x7

        contact_groups                  ops

        notification_interval           30

        notification_period             24x7

        notification_options            d,u,r

        }

# No.020 cache-3 redis slave server

define host{

        use                     linux-server

        host_name               cache-3

        alias                   cache-3

        address                 10.xx.3.x2

        check_command           check-host-alive

        max_check_attempts              5

        check_period                    24x7

        contact_groups                  ops

        notification_interval           30

        notification_period             24x7

        notification_options            d,u,r

        }


5,定义redis监控主机组

define hostgroup {

        hostgroup_name  Redis_Servers

        alias           Redisservices

        members         cache-1,cache-2

}

 

6,定义redis监控服务选项

[root@wgq objects]# vim /usr/local/nagios/etc/objects/services_redis.cfg

# Redis Master 监控选项

define service {

                   host_name               cache-1

                   servicegroups           Redisservices

        service_description     Redis Master Clients

        check_command           check_redis!6379!'connected_clients,blocked_clients,client_longest_output_list,client_biggest_input_buf'!200,50,~,~!600,150,~,~

        max_check_attempts      5

        normal_check_interval   3

        retry_check_interval    2

        check_period            24x7

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          ops

}

 

define service {

                   host_name               cache-1

                   servicegroups           Redisservices

        service_description     Redis Master Memory

        check_command           check_redis!6379!'used_memory_human,used_memory_peak_human'!~,~!~,~

        max_check_attempts      5

        normal_check_interval   3

        retry_check_interval    2

        check_period            24x7

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          ops

}

 

define service {

                   host_name               cache-1

                 servicegroups           Redisservices

        service_description     Redis Master CPU

        check_command           check_redis!6379!'used_cpu_sys,used_cpu_user,used_cpu_sys_children,used_cpu_user_children'!~,~,~,~!~,~,~,~ ; #没有定义监控报警阀值

        max_check_attempts      5

        normal_check_interval   3

        retry_check_interval    2

        check_period            24x7

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          ops

}

 

# Redis Slave 监控选项

define service {

                   host_name               cache-3

                   servicegroups           Redisservices

        service_description     Redis Slave Clients

        check_command           check_redis!6379!'connected_clients,blocked_clients,client_longest_output_list,client_biggest_input_buf'!200,50,~,~!600,150,~,~

        max_check_attempts      5

        normal_check_interval   3

        retry_check_interval    2

        check_period            24x7

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          ops

}

 

define service {

                   host_name               cache-3

                   servicegroups           Redisservices

        service_description     Redis Slave Memory

        check_command           check_redis!6379!'used_memory_human,used_memory_peak_human'!~,~!~,~

        max_check_attempts      5

        normal_check_interval   3

        retry_check_interval    2

        check_period            24x7

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          ops

}

 

define service {

                   host_name               cache-3

                   servicegroups           Redisservices

        service_description     Redis Slave CPU

        check_command           check_redis!6379!'used_cpu_sys,used_cpu_user,used_cpu_sys_children,used_cpu_user_children'!~,~,~,~!~,~,~,~ ; #没有定义监控报警阀值

        max_check_attempts      5

        normal_check_interval   3

        retry_check_interval    2

        check_period            24x7

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        contact_groups          ops

}

 

赋予nagios用户运行权限

[root@wgq objects]# chown -R  nagios.nagios services_redis.cfg

[root@wgq objects]# chmod 777 services_redis.cfg

加入监控服务项到nagios.cfg

[root@wgq etc]# vim /usr/local/nagios/etc/nagios.cfg

cfg_file=/usr/local/nagios/etc/objects/services_redis.cfg

 

7,測试redis监控服务

运行命令/usr/lib/nagios/plugins/check_redis.pl  -H cache-1 -a 'connected_clients,blocked_clients' -w ~,~ -c ~,~ -m -M 4G -A -R -T 来測试下redis监控是否正常运行

[root@wgq plugins]# /usr/lib/nagios/plugins/check_redis.pl  -H 10.2xx.3.x0 -a 'connected_clients,blocked_clients' -w ~,~ -c ~,~ -m -M 4G -A -R -T

OK: REDIS 2.8.8 on 10.2xx.3.x0:6379 has 1 databases (db0) with 28497 keys, up 76 days 2 hours - response in 0.004s, hitrate is 12.83%, memory use is 194.14M (peak 205.14M, 6.49% of max, fragmentation 1.37%), connected_clients is 35, blocked_clients is 11 | redis_build_id=d322d411218ade61 total_connections_received=341191c used_memory_lua=33792 aof_rewrite_buffer_length=0 used_memory_rss=278749184B redis_git_dirty=0 loading=0 redis_mode=standalone latest_fork_usec=5588 repl_backlog_first_byte_offset=0 sync_partial_ok=0 master_repl_offset=0 uptime_in_days=76c aof_rewrite_scheduled=0 lru_clock=3649276 rdb_bgsave_in_progress=0 rejected_connections=0 repl_backlog_active=0 aof_delayed_fsync=1 sync_full=0 process_id=7776 used_memory_human=194.14M aof_current_rewrite_time_sec=-1 used_memory=203570960 aof_enabled=1 blocked_clients=11 aof_last_bgrewrite_status=ok aof_rewrite_in_progress=0 sync_partial_err=0 used_cpu_sys_children=2222.75 connected_slaves=0 repl_backlog_histlen=0 uptime_in_seconds=6576292c repl_backlog_size=1048576 os=Linux 2.6.32-358.el6.x86_64 x86_64 used_cpu_sys=32640.80 aof_pending_bio_fsync=0 connected_clients=35 rdb_last_bgsave_time_sec=1 used_memory_peak_human=205.14M run_id=d1fc098d26fa4bbcef3eabeec6d19a858f03dd00 rdb_last_bgsave_status=ok pubsub_patterns=8 client_biggest_input_buf=0 keyspace_hits=42175896c rdb_last_save_time=1412935342 rdb_changes_since_last_save=318 db0_keys=28497 db0_expires=7 db0_avg_ttl=34003 aof_pending_rewrite=0 aof_buffer_length=0 config_file=/usr/local/redis-2.8.8/etc/redis.conf pubsub_channels=0 used_cpu_user_children=21375.34 hz=10 aof_last_rewrite_time_sec=2 aof_last_write_status=ok aof_base_size=82883253 used_cpu_user=18460.42 keyspace_misses=286602797c tcp_port=6379 total_commands_processed=797581196c mem_fragmentation_ratio=1.37 aof_current_size=146485850 rdb_current_bgsave_time_sec=-1 client_longest_output_list=0 instantaneous_ops_per_sec=114 evicted_keys=0c used_memory_peak=215106272B expired_keys=58977c total_keys=28497 total_expires=7 response_time=0.003802s hitrate=12.8281% memory_utilization=6.49013519287109%

[root@wgq plugins]#

 

8,查看redis监控服务状态

先又一次载入nagios,使刚加入的redis监控配置生效

[root@wgq objects]# service nagios reload

Running configuration check...

Reloading nagios configuration...

done

[root@wgq objects]#

redis监控服务界面。例如以下图所看到的:



9,操作过程中的报错处理过程

报错:

[root@wgq_line_cache_3_41 plugins]# ./check_redis.pl --help

Can't locate Redis.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./check_redis.pl line 421.

BEGIN failed--compilation aborted at ./check_redis.pl line 421.

[root@wgq_line_cache_3_41 plugins]#

 

[root@wgq_line_cache_3_41 plugins]# perl -MCPAN -e shell

Terminal does not support AddHistory.

 

cpan shell -- CPAN exploration and modules installation (v1.9402)

Enter 'h' for help.

 

cpan[1]> install Redis

Can't locate Module/Build/Tiny.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Build.PL line 2.

BEGIN failed--compilation aborted at Build.PL line 2.

Warning: No success on command[/usr/bin/perl Build.PL --installdirs site]

Warning (usually harmless): 'YAML' not installed, will not store persistent state

  DAMS/Redis-1.976.tar.gz

  /usr/bin/perl Build.PL --installdirs site -- NOT OK

Running Build test

  Make had some problems, won't test

Running Build install

  Make had some problems, won't install

Could not read '/root/.cpan/build/Redis-1.976-Zhz6xI/META.yml'. Falling back to other methods to determine prerequisites……

 

YAML是以数据为中央的标记语言,其使用ASCII码(如连字符、问号、冒号、逗号等)构造数据块(标量值或哈希码)。和XML同样。YAML也是一种机器可识别语言,并能和多种脚本语言相结合,当中一种便是Perl,须要安装YAML,例如以下运行:

cpan[2]>install YAML

……

Appending installation info to /usr/lib64/perl5/perllocal.pod

  INGY/YAML-1.12.tar.gz

  /usr/bin/make install  -- OK

CPAN: YAML loaded ok (v1.12)

PS:这里可能会安装失败。失败原因是网络连接。能够多运行几次install YAML就会成功。

再继续运行install Redis,有例如以下提示信息

cpan[4]> install Redis

Running install for module 'Redis'

Running Build for D/DA/DAMS/Redis-1.976.tar.gz

  Has already been unwrapped into directory /root/.cpan/build/Redis-1.976-cUL4rt

  '/usr/bin/perl Build.PL --installdirs site' returned status 512, won't make

Running Build test

  Make had some problems, won't test

Running Build install

  Make had some problems, won't install

 

cpan[5]>

Build失败,Build.PL故障了,须要又一次安装下运行命令install Build

cpan[5]> install Build

成功后。再运行install Redis

cpan[6]> install Redis

Redis安装运行成功。

 

----------------------------------------------------------------------------------------------------------------

<版权全部,文章同意转载。但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址: http://blog.itpub.net/26230597/viewspace-1294684/
原作者:黄杉 (mchdba)

----------------------------------------------------------------------------------------------------------------


 

参考文件:http://exchange.nagios.org/directory/Plugins/Databases/check_redis-2Epl/details







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5032223.html,如需转载请自行联系原作者


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
缓存 监控 NoSQL
Redis 的监控指标有哪些?别说你不知道
Redis 的监控指标有哪些?别说你不知道
42 1
|
2月前
|
缓存 监控 NoSQL
Redis 的监控指标
Redis 的监控指标
40 0
|
2月前
|
弹性计算 NoSQL Redis
阿里云ECS使用docke搭建redis服务
阿里云ECS使用docke搭建redis服务
189 1
|
1天前
|
存储 NoSQL Redis
【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://github.com/LuBu0505/redis-copy-net8
|
7天前
|
弹性计算 NoSQL 网络安全
软件开发常见之云数据库Redis连接不上如何解决,修改配置后,需要重启下redis服务,配置才能生效呢,是重启,而不是重载配置,最后导致的问题是点击了的重启,配置修改了之后必须点击重启,而不是修改
软件开发常见之云数据库Redis连接不上如何解决,修改配置后,需要重启下redis服务,配置才能生效呢,是重启,而不是重载配置,最后导致的问题是点击了的重启,配置修改了之后必须点击重启,而不是修改
|
7天前
|
缓存 监控 NoSQL
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
|
7天前
|
NoSQL Redis Windows
Windows设置Redis服务使其开机自启
Windows设置Redis服务使其开机自启
19 0
|
10天前
|
NoSQL 网络协议 Linux
【AKS+Redis】AKS中客户端(ioredis)遇见Azure Redis服务Failover后链接中断的可能性
在AKS中,NodeJS应用使用ioredis连接Redis时,在Redis升级或故障转移时可能出现长时间无法恢复连接的问题。这可能由于TCP重连机制,默认可能等待13分钟。为解决此问题,可以调整Linux的TCP设置(如`net.ipv4.tcp_retries2`设为5),并利用ioredis的`retryStrategy`选项自定义重连策略,减少延迟。参考[ioredis文档](https://github.com/redis/ioredis?tab=readme-ov-file#auto-reconnect)以优化重连行为。
|
2月前
|
存储 缓存 NoSQL
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
43 0
|
2月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
441 0