监控memcache的原理跟监控redis差不多,都是通过一个类似info的东西可以查询到memcache的状态值,然后通过脚本去获取这些值给zabbix,当发现某值不正常就发出告警。
查询当年memcache状态的命令是echo stats |nc 127.0.0.1 11211
,如果没有nc
命令,那就yum install -y nc
。
获得到的结果是这个样子的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55[root@lconline-ec2 ~]# echo stats |nc 127.0.0.1 11211
STAT pid 1859 memcache服务进程ID
STAT uptime 491093 服务器已运行秒数
STAT time 1522740969 服务器当前Unix时间戳
STAT version 1.4.25 memcache版本
STAT libevent 1.4.13-stable
STAT pointer_size 64 操作系统指针大小
STAT rusage_user 14.321822 进程累计用户时间
STAT rusage_system 14.095857 进程累计系统时间
STAT curr_connections 5 当前连接数量
STAT total_connections 51010 Memcached运行以来连接总数
STAT connection_structures 8 Memcached分配的连接结构数量
STAT reserved_fds 20
STAT cmd_get 0 get命令请求次数
STAT cmd_set 0 set命令请求次数
STAT cmd_flush 0 flush命令请求次数
STAT cmd_touch 0 touch命令请求次数
STAT get_hits 0 get命令命中次数
STAT get_misses 0 get命令未命中次数
STAT delete_misses 0 delete命令未命中次数
STAT delete_hits 0 delete命令命中次数
STAT incr_misses 0 incr命令未命中次数
STAT incr_hits 0 incr命令命中次数
STAT decr_misses 0 decr命令未命中次数
STAT decr_hits 0 decr命令命中次数
STAT cas_misses 0 cas命令未命中次数
STAT cas_hits 0 cas命令命中次数
STAT cas_badval 0 使用擦拭次数
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0 认证命令处理的次数
STAT auth_errors 0 认证失败数目
STAT bytes_read 357040 读取总字节数
STAT bytes_written 60197691 发送总字节数
STAT limit_maxbytes 1073741824 分配的内存总大小(字节)
STAT accepting_conns 1 服务器是否达到过最大连接(0/1)
STAT listen_disabled_num 0 失效的监听数
STAT time_in_listen_disabled_us 0
STAT threads 4 当前线程数
STAT conn_yields 0 连接操作主动放弃数目
STAT hash_power_level 16
STAT hash_bytes 524288 当前存储占用的字节数
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 0 当前存储占用的字节数
STAT curr_items 0 当前存储的数据总数
STAT total_items 0 启动以来存储的数据总数
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0 LRU释放的对象数目
STAT reclaimed 0 已过期的数据条目来存储新数据的数目
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END
修改zabbix_agentd.conf
,添加一个新的自定义项:
1
UserParameter=memcached.stat[*],(echo stats; sleep 1) | telnet 127.0.0.1 11211 2>&1 | awk '/STAT $1 / {print $NF}'
然后重启zabbix-agent
,模板就用github里的就好,看到的效果如下: