用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
这个方法虽然简陋了点 但后来在开发人员调试的时候迅速的报了几次警,看来还是挺管用的。但是对于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这个端口呢?会得到另外一些信息,如下图
![](http://img1.51cto.com/attachment/201112/161606357.jpg)
通过输入 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 结果进行各种过滤来得到想要的参数设置自己的阀值来做更详细的监控~~~
![](http://img1.51cto.com/attachment/201112/161720949.jpg)
加入到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 命令格式和上面一样
我先写了一个简单的脚本
放到了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这个端口呢?会得到另外一些信息,如下图
![](http://img1.51cto.com/attachment/201112/161606357.jpg)
通过输入 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 结果进行各种过滤来得到想要的参数设置自己的阀值来做更详细的监控~~~
![](http://img1.51cto.com/attachment/201112/161720949.jpg)
加入到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
相关文章推荐
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- 网络层(网际控制报文协议ICMP)
- 使用WinPcap编程——把网络数据包存储到一个文件中
- Android通过tcpdump抓包
- 刘东明老师中国邮政储蓄银行互联网金融网络营销培训
- HTTP协议
- Android检查网络状态
- tcpdump
- 内网IT风险管控解决方案
- linux网络编程系列-网络连接的建立
- linux网络编程系列-网络连接的建立
- JAVA-用HttpClient来模拟浏览器GET,POST
- http://liondinas.iteye.com/blog/223796
- 网络视频和移动营销 一根绳子上的蚂蚱
- socket网络编程的初学使用见解
- HttpContext.Current.Handler asp.net 获取前当前页的所有表单元素
- linux 内核参数调整优化网络
- IIS 使用多个https和通配证书解决方案
- java http请求工具类
- socket编程复习(6)-网络通信