- 论坛徽章:
- 2
|
本帖最后由 7looki 于 2012-11-16 15:48 编辑
合同已经到期了, 没有打算续签, 想好好休息一下, 过完年再出来找工作. 这几天在办社保之类的手续, 在公司天天打酱油, 就写了下面的这个脚本.
本人能力有限, 学 Perl 还不到 3 个月, 脚本某些地方写的比较丑陋, 望各位大牛多多指点.
check_redis_used_memory.tar.gz
(1.96 KB, 下载次数: 232)
这个脚本主要是监控 Redis 的内存使用量.
写这个监控脚本的主要原因有两个:
(1) 因为网上找的几个脚本只支持本地监控, 不能监控远程主机.
(2) 因为网上找的几个脚本都是Redis没有连接密码的情况下使用的, 如果Redis设置了连接密码, 则不能监控了.
基于以上两点, 写了这个监控脚本.
几点说明:
测试环境:
System : CentOS 5.8 x86_64
Nagios : Nagios 3.4.1
Plugins : Nagios Plugins 1.4.16
Redis : Redis 2.4.15
Perl : Perl 5.8.8
1. 请先确认已经安装了Nagios的插件(Nagios Plugins);
2. 修改这个脚本的第28行, 替换对应的目录, 默认目录是: /usr/local/nagios/libexec
3. 此脚本需要Perl中的Redis模块,可通过以下方式安装:
shell> perl -MCPAN -e shell
CPAN> install Redis
4. 此脚本中, Redis 内存使用量是按 Byte 监控的, 所以 WARNING 和 CRITICAL 只支持纯数字, 单位是 Byte, 且 WARNING 必须小于 CRITICAL.
5. -H 的选项为 hostname或者IP:端口, 例如: -H 192.168.1.200:6379 或 -H localhost:6379
当初写脚本的时候, 就没有打算将 IP和端口 分开, 并不是不会写, 只是个人喜欢这种方式.
PS: 不喜欢这种方式的可以绕道.
-P 为连接 Redis 时需要的密码, 视实际情况而定, 可有可无
6. 简单的几个示例:
定义check_redis_used_memory, 在 /usr/local/nagios/etc/objects/commands.cfg 最后添加以下内容:
# 'check_redis_used_memory' command definition
# 连接Redis时需要密码
define command{
command_name check_redis_used_memory
command_line /usr/local/nagios/libexec/check_redis_used_memory -H $ARG1$ -P $ARG2$ -w $ARG3$ -c $ARG4$
}
# 'check_redis_used_memory' command definition
# 连接Redis时不需要密码
define command{
command_name check_redis_used_memory_no_passwd
command_line /usr/local/nagios/libexec/check_redis_used_memory -H $ARG1$ -w $ARG2$ -c $ARG3$
}
------------------------------------------------------------------------------------------------------------------------------------------
配置示例, 在 /usr/local/nagios/etc/objects/localhost.cfg 最后添加以下配置
配置示例1,需要密码:
define service{
use local-service
host_name localhost
service_description Redis used memory 6380
check_command check_redis_used_memory!127.0.0.1:6380!redispasswd!3000000!5000000!
}
配置示例2,不需要密码:
define service{
use local-service
host_name localhost
service_description Redis used memory 6370
check_command check_redis_used_memory_no_passwd!127.0.0.1:6379!3000000!5000000!
}
相关截图:
------------------------------------------------------------------------------------------------------------------------------------------
修改一下, 调整一下 WARNING 和 CRITICAL:
配置示例1修改为:
define service{
use local-service
host_name localhost
service_description Redis used memory 6380
#check_command check_redis_used_memory!127.0.0.1:6380!redispasswd!3000000!5000000!
check_command check_redis_used_memory!127.0.0.1:6380!redispasswd!1000000!2000000!
}
配置示例2修改为:
define service{
use local-service
host_name localhost
service_description Redis used memory 6370
#check_command check_redis_used_memory_no_passwd!127.0.0.1:6379!3000000!5000000!
check_command check_redis_used_memory_no_passwd!127.0.0.1:6379!2000000!3000000!
}
相关截图:
监控远程的主机, 只需要配置相应的IP和端口及密码等就可以了, 例如:
define service{
use local-service
host_name Redis Server
service_description Redis used memory
check_command check_redis_used_memory!192.168.1.200:6379!redispasswd!1000000!2000000!
}
--END--
|
|