查看memcache的状态并监控命中率 一、查看memcache的状态: 如何查看memcache服务器端版本: ./memcached -h memcache的运行状态可以方便的用 stats 命令显示。
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:
pid | memcache服务器的进程ID | uptime | 服务器已经运行的秒数 | time | 服务器当前的unix时间戳 | version | memcache版本 | pointer_size | 当前操作系统的指针大小(32位系统一般是32bit) | rusage_user | 进程的累计用户时间 | rusage_system | 进程的累计系统时间 | curr_items | 服务器当前存储的items数量 | total_items | 从服务器启动以后存储的items总数量 | bytes | 当前服务器存储items占用的字节数 | curr_connections | 当前打开着的连接数 | total_connections | 从服务器启动以后曾经打开过的连接数 | connection_structures | 服务器分配的连接构造数 | cmd_get | get命令(获取)总请求次数 | cmd_set | set命令(保存)总请求次数 | get_hits | 总命中次数 | get_misses | 总未命中次数 | evictions | 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items) | bytes_read | 总读取字节数(请求字节数) | bytes_written | 总发送字节数(结果字节数) | limit_maxbytes | 分配给memcache的内存大小(字节) | threads | 当前线程数 |
二、nagios监控memcache的插件:(只以命中率大于和小于为例两种状态。) vim check_memcache #!/bin/sh
if [ $# -ne 1 ]
then
echo "Usage:$0 -c num2"
exit 0
fi
cmd_get=`/usr/local/nagios/libexec/check_tcp -H localhost -p 11211 -E -s 'stats\r\nquit\r\n' -e 'uptime' |grep cmd_get | awk '{print $3+0}'`
get_hits=`/usr/local/nagios/libexec/check_tcp -H localhost -p 11211 -E -s 'stats\r\nquit\r\n' -e 'uptime' |grep get_hits | awk '{print $3+0}'`
hit_rate=`echo "$get_hits*100/$cmd_get"|bc`
if [ $hit_rate -gt $1 ];then
echo "OK - hit rate is $hit_rate | hit_rate=$hit_rate; cmd_get=$cmd_get; get_hits=$get_hits"
exit 0
else echo "CRITICAL - hit rate is $hit_rate | hit_rate=$hit_rate; cmd_get=$cmd_get; get_hits=$get_hits" exit 2
fi
3、测试命中率大于80%为正常为例; eg: sh check_memcache 80
root@ip-10-250-114-95:/liang# sh check_memcache 80 OK - hit rate is 99 | hit_rate=99; cmd_get=142547; get_hits=141880
---以上证明命中率99%,即状态为OK.
|