您的位置:首页 > 理论基础 > 计算机网络

用check_tcp来监控tokyotyrant和redis

2013-11-21 15:30 323 查看
随着公司开始启用 tokyocabinet 和 tokyotyrant,相关的运维工作也开始展开,首当其冲的就是ttserver的监控问题,为了尽快将ttserver 加入到监控组里面
我先写了一个简单的脚本

放到了nagios的插件里 用来监控ttserver 的状态,只是通过检查pid 和 port两个参数来判断ttserver是否活着

ttserver 的启动命令如下

ttserver -host 192.168.1.9 -port 11209 -thnum 8 -dmn -pid /usr/local/ttserver/session/ttserver.pid -log /usr/local/ttserver/logs/ttserver_session.log

以下是脚本内容

check_tt.sh
#!/bin/bash
#author storysky in 2011.07.20
#check ttserver status
pid1=`cat /usr/local/ttserver/session/ttserver.pid`
port=`ps aux |awk '/ttserver/&&!/awk/{print $15}'`
pid2=`/usr/local/ttserver/bin/tcrmgr inform -port "$port" -st 192.168.1.9 |awk '/pid/{print $2}'`
if [ $pid1 -eq $pid2 ] && [ $port -eq 11209 ];
then
echo "OK TTserver is running"
exit 0
else
echo "Critical TTserver is error"
exit 2
fi


这个方法虽然简陋了点 但后来在开发人员调试的时候迅速的报了几次警,看来还是挺管用的。但是对于ttserver的响应时间什么的就无法监控了,于是就有了个更好的办法那就是nagios 自身的多功能监控脚本

check_tcp

先让我们来了解下 ttserver 的一个命令吧,我是从这里得到的启发

$ tcrmgr inform -port 11209 -st 192.168.1.9

version 1.1.41

libver 324

protver 0.91

os Linux

time 132333038.420367

pid 2347

sid 1

type hash

path /usr/local/ttserver/session/tt.tch

rnum 367482

size 354156240

bigend 0

mhost 192.168.1.9

mport 11209

rts 1307964037905658

delay 15366340.514709

fd 21

loadavg 0.000000

memsize 320708608

memrss 67158016

ru_user 609.663317

ru_sys 465.347256

ru_real 678848.080386

cnt_put 223983

.........

以上就是 inform 参数的输出结果,内容太多省略一部分,第一个脚本里的$pid2 变量就是从这里面取的,但是如果我们telnet 11209这个端口呢?会得到另外一些信息,如下图





通过输入 stats 得到参数 输入quit 退出

这样就可以利用check_tcp 来得到ttserver的响应时间、uptime等信息,具体的命令格式如下:

check_tcp -H 192.168.1.9 -p 11209 -t 5 -E -s 'stats\r\nquit\r\n' -e 'uptime' -M crit

下图为命令的输出结果:呵呵够详细吧 更重要的是有了相应时间,而且你也可以对telnet 或 tcrmgr inform 结果进行各种过滤来得到想要的参数设置自己的阀值来做更详细的监控~~~





加入到nrpe.cfg 里面

command[check_ttserver_11209]=/usr/local/nagios/libexec/check_tcp -H 192.168.1.9 -p 11209 -t 5 -E -s 'stats\r\nquit\r\n' -e 'uptime' -M crit

OK,试试吧

后来我想了想既然ttserver可以这么监控,那redis肯定也没问题 只不过redis 不支持 stats 需要改成info 命令格式和上面一样
/usr/local/nagios/libexec/check_tcp -H 172.16.1.9 -p 9736 -t 5 -E -s 'info\r\nquit\r\n' -e 'uptime' -M crit
TCP OK - 0.003 second response time on port 9736 [$1085
redis_version:2.2.14
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
process_id:10642
uptime_in_seconds:87399
uptime_in_days:1
lru_clock:256947
used_cpu_sys:488.58
used_cpu_user:398.64
used_cpu_sys_children:13.43
used_cpu_user_children:1.81
connected_clients:501
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:6
blocked_clients:0
used_memory:1982476704
used_memory_human:1.85G
used_memory_rss:2612875264
mem_fragmentation_ratio:1.32
use_tcmalloc:0
loading:0
aof_enabled:1
changes_since_last_save:31599275
bgsave_in_progress:0
last_save_time:1323687835
bgrewriteaof_in_progress:0
total_connections_received:524
total_commands_processed:40577119
expired_keys:0
evicted_keys:0
keyspace_hits:33546769
keyspace_misses:6336587
.....中间省略
+OK]|time=0.002756s;;;0.000000;5.000000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: