查看memcache的状态并监控命中率

一、查看memcache的状态:

如何查看memcache服务器端版本: ./memcached -h

memcache的运行状态可以方便的用 stats 命令显示。
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:


pidmemcache服务器的进程ID
uptime服务器已经运行的秒数
time服务器当前的unix时间戳
versionmemcache版本
pointer_size当前操作系统的指针大小(32位系统一般是32bit)
rusage_user进程的累计用户时间
rusage_system进程的累计系统时间
curr_items服务器当前存储的items数量
total_items从服务器启动以后存储的items总数量
bytes当前服务器存储items占用的字节数
curr_connections当前打开着的连接数
total_connections从服务器启动以后曾经打开过的连接数
connection_structures服务器分配的连接构造数
cmd_getget命令(获取)总请求次数
cmd_setset命令(保存)总请求次数
get_hits总命中次数
get_misses总未命中次数
evictions为获取空闲内存而***的items数(分配给memcache的空间用满后需要***旧的items来得到空间分配给新的items)
bytes_read总读取字节数(请求字节数)
bytes_written总发送字节数(结果字节数)
limit_maxbytes分配给memcache的内存大小(字节)
threads当前线程数


二、nagios监控memcache的插件:(只以命中率大于和小于为例两种状态。)

vim check_memcache

#!/bin/bash


if [ $# -ne 1 ]

then

echo "Usage:$0 -c num1"

exit 0

fi


cmd_get=`/usr/local/nagios/libexec/check_tcp -H localhost -p 8090 -E -s 'stats\r\nquit\r\n' -e 'uptime' |grep -o "cmd_get [0-9]*"|awk '{print $2}'`

get_hits=`/usr/local/nagios/libexec/check_tcp -H localhost -p 8090 -E -s 'stats\r\nquit\r\n' -e 'uptime' |grep -o "get_hits [0-9]*"|awk '{print $2}'`


hit_rate=`echo "$get_hits*100/$cmd_get"|bc`


if [[ $hit_rate -lt $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



------上面脚本必须用一次grep -o 在awk 只显示需要的内容,如果没有可能会应为换行的问题报错:

(standard_in) 1: illegal character: ^M


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.


取值法二:或者不用check_tcp检查 用telnet也可以取到值:

eg:

[root@darkyin coreseek-3.2.14]# (echo "stats";sleep 0.5) | telnet 192.168.1.249 11211 2>/dev/null | grep "STAT $item\b" 

STAT pid 2224

STAT uptime 967296

STAT time 1431672792

STAT version 1.4.15

STAT libevent 2.0.20-stable

STAT pointer_size 64

STAT rusage_user 16.844439

STAT rusage_system 19.094097

STAT curr_connections 10

STAT total_connections 27188

STAT connection_structures 34

STAT reserved_fds 20

STAT cmd_get 165423

STAT cmd_set 17104

STAT cmd_flush 0

STAT cmd_touch 0

STAT get_hits 150123

STAT get_misses 15300

STAT delete_misses 1560

STAT delete_hits 138

STAT incr_misses 0

STAT incr_hits 0

STAT decr_misses 0

STAT decr_hits 0

STAT cas_misses 0

STAT cas_hits 0

STAT cas_badval 0

STAT touch_hits 0

STAT touch_misses 0

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 50415223

STAT bytes_written 6965258245

STAT limit_maxbytes 268435456

STAT accepting_conns 1

STAT listen_disabled_num 0

STAT threads 4

STAT conn_yields 0

STAT hash_power_level 16

STAT hash_bytes 524288

STAT hash_is_expanding 0

STAT bytes 4652850

STAT curr_items 1017

STAT total_items 17104

STAT expired_unfetched 3457

STAT evicted_unfetched 0

STAT evictions 0

STAT reclaimed 5477