zabbix利用lld监控memcached

2018年9月26日

一、引言

很多人在工作中一般喜欢把Redis、Memcached、MongoDB等数据库按照实例的方式对外提供服务。一般都是一台高配的服务器上开启多个实例给每个业务使用。如果一台服务器有几个实例,那如果集群呢,如果要监控,你得手动添加到什么时候,而且可能会出现手敲的错误,导致诸多的不顺利,因此就用到了这个自动发现功能。

二、监控采集依据

类似吞吐量,缓存的查询次数,命中率之类的

三、主要监控指标解析,通过stats命令进行采集

uptime                  ##memcached运行时长
curr_connections        ##当前的连接数
total_connections       ##曾经打开的连接总数
connection_structures   ##服务器分配的连接数
cmd_get                 ##执行get命令总数
cmd_set                 ##执行set命令总数
get_hits                ##get命中次数
get_misses              ##get未命中次数
bytes_read              ##读取字节总数
bytes_written           ##写入字节总数
bytes                   ##服务器当前存储占用的内存(字节)
limit_maxbytes          ##分配的内存大小(字节)
evictions               ##为获取内存而删除的item个数
[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

四、安装telnet

yum -y install telnet

五、在被监控端上编写自动发现脚本

1、创建zabbix脚本存放目录

mkdir -p /etc/zabbix/shell

2、编写自动发现memcached脚本

vim /etc/zabbix/shell/memcached_discovery.py

#!/usr/bin/env pythonimport os

import json

t=os.popen("""sudo netstat -nltp|awk -F: '/memcached/&&/LISTEN/{print $2}'|awk '{print $1}'| grep -v grep | grep -v '^$' """)

ports = []

for port in t.readlines():

r = os.path.basename(port.strip())

ports += [{'{#MCPORT}':r}]

print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

3、给予脚本执行权限

chmod +x /etc/zabbix/shell/memcached_discovery.py

4、允许zabbix用户无密码运行netstat

vim /etc/sudoers

#Defaults requiretty #注释掉
zabbix ALL=(root) NOPASSWD:/bin/netstat #添加

5、编辑zabbix_agentd的配置文件支持自定义脚本

vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1

6、编辑zabbix_agentd的配置文件添加zabbix配置文件目录

vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.conf.d/

7、创建key文件

vim /etc/zabbix/zabbix_agentd.conf.d/memcached_status.conf

UserParameter=memcached.discovery[*],python /etc/zabbix/shell/memcached_discovery.py $1
UserParameter=memcached[*],(echo stats; sleep 0.1) | telnet 127.0.0.1 $1 2>&1 | awk '/STAT $2 / {print $NF}'

参数说明:
其中的格式为UserParameter=<key>,<command>

<key>:就是在web端添加监控脚本时的key值
<command>:就是该key值对应的执行脚本,也就是脚本执行路径

8、重启zabbix_agentd服务

service zabbix_agentd restart

9、在zabbix server端进行测试

zabbix_get -s 127.0.0.1 -p10050 -k"memcached.discovery[*]"zabbix_get -s 192.168.10.27 -p10050 -k"memcached[11211,uptime]"

zabbix_get -s 192.168.10.27 -p10050 -k"memcached[11211,bytes_written]"

模版zbx_memcached_templates

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注