下面是效果图:
1、Memcached 11211 of port Items Status
<a href="http://s3.51cto.com/wyfs02/M01/23/C4/wKioL1NDUbGA5Se_AAOddTSYubo391.jpg" target="_blank"></a>
2、Memcached 11211 of Port Status
<a href="http://s3.51cto.com/wyfs02/M01/23/C4/wKioL1NDUfPiSca4AAOAtDOpOvE404.jpg" target="_blank"></a>
3、Memcached 11211 of port Threads Status
<a href="http://s3.51cto.com/wyfs02/M00/23/C3/wKiom1NDUl-hpAsyAAL4dz1oIb4812.jpg" target="_blank"></a>
4、Memcached 11211 of port Uptime
<a href="http://s3.51cto.com/wyfs02/M02/23/C4/wKioL1NDUmqx15FqAAOP8pIhtqY809.jpg" target="_blank"></a>
5、Memcached 11211 of port Connections
<a href="http://s3.51cto.com/wyfs02/M01/23/C3/wKiom1NDUsPRXXeiAAPw6JCqAJw955.jpg" target="_blank"></a>
6、Memcached 11211 of port CMD Status(hits/misses)
<a href="http://s3.51cto.com/wyfs02/M00/23/C4/wKioL1NDUs_xx_OPAAPy4wRm2WE687.jpg" target="_blank"></a>
7、Memcached 11211 of port Bytes read/write
<a href="http://s3.51cto.com/wyfs02/M02/23/C3/wKiom1NDUyyA5dmHAAOl77Z5Gfo104.jpg" target="_blank"></a>
8、Memcached 11211 of port Bytes use
<a href="http://s3.51cto.com/wyfs02/M01/23/C4/wKioL1NDUzPQ_3_FAAOzM8ktoic580.jpg" target="_blank"></a>
9、Memcached 11211 of port Cmd flush/get/set
<a href="http://s3.51cto.com/wyfs02/M02/23/C4/wKioL1NDU13iICBlAANTIVZ6P6c807.jpg" target="_blank"></a>
10、Memcached 11211 of port Auth Status
<a href="http://s3.51cto.com/wyfs02/M01/23/C3/wKiom1NDU7ih82uEAANJVR0DnuM755.jpg" target="_blank"></a>
如何实现:
一、客户端
1、监控内容的json化
在客户端里,需要把监控的内容json化展示,然后服务端可以通过正则来过滤出结果
下面在是我的json展示
<a href="http://s3.51cto.com/wyfs02/M00/23/C3/wKiom1NDWFSyeTmTAAB_QbSYAYQ940.jpg" target="_blank"></a>
脚本内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<code>[root@puppet bin]# cat memcache_low_discovery.sh</code>
<code>#!/bin/bash</code>
<code>#Fucation:zabbix low-level discovery</code>
<code>memcache() {</code>
<code> </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/[m]emcached/ && /0.0.0.0/ {print $5}'</code><code>))</code>
<code> </code><code>printf </code><code>'{\n'</code>
<code> </code><code>printf </code><code>'\t"data":[\n'</code>
<code> </code><code>for</code> <code>key </code><code>in</code> <code>${!port[@]}</code>
<code> </code><code>do</code>
<code> </code><code>if</code> <code>[[ </code><code>"${#port[@]}"</code> <code>-gt </code><code>1</code> <code>&& </code><code>"${key}"</code> <code>-ne </code><code>"$((${#port[@]}-1))"</code> <code>]];then</code>
<code> </code><code>printf </code><code>'\t {\n'</code>
<code> </code><code>printf </code><code>"\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"},\n"</code>
<code> </code><code>else</code> <code>[[ </code><code>"${key}"</code> <code>-eq </code><code>"((${#port[@]}-1))"</code> <code>]]</code>
<code> </code><code>printf </code><code>"\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"}\n"</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code>printf </code><code>'\t ]\n'</code>
<code> </code><code>printf </code><code>'}\n'</code>
<code>}</code>
<code>$</code><code>1</code>
把此文件存放到/usr/local/zabbix/bin里,然后给与755权限,并修改用户与组为zabbix,同时允许zabbix用户无密码运行netstat
<code>echo </code><code>"zabbix ALL=(root) NOPASSWD:/bin/netstat"</code><code>>>/etc/sudoers</code>
#Disable requiretty
<code>sed -i </code><code>'s/^Defaults.*.requiretty/#Defaults requiretty/'</code><code>/etc/sudoers</code>
2、修改zabbix_agentd.conf文件
在zabbix_agentd.conf最后添加以下内容
<code>UserParameter=memcached_stats[*],(echo stats; sleep </code><code>0.1</code><code>) | telnet </code><code>127.0</code><code>.</code><code>0.1</code> <code>$</code><code>1</code> <code>2</code><code>>&</code><code>1</code> <code>| awk </code><code>'/STAT $2 / {print $NF}'</code>
<code>UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/memcache_low_discovery.sh $</code><code>1</code>
3、重启zabbix服务
<code>ps -ef|grep zabbix|grep -v grep|awk </code><code>'{print $2}'</code><code>|xargs kill -</code><code>9</code>
<code>/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf</code>
二、服务端
1、模板导入
把Template memcached Auto Discovery导入到zabbix里(模板在附件),具体操作不介绍。
2、设置正则
在“管理”=》“一般”=》“正则表达式”里,选择“新的正则表达式”
然后设置类似如下
<a href="http://s3.51cto.com/wyfs02/M01/23/C4/wKioL1NDWdjSjqi3AAI6xrlEnmY615.jpg" target="_blank"></a>
3、主机关联模板
把需要监控memcache实例的主机管理模板即可监控,默认是3600秒后自动更新,如下图
<a href="http://s3.51cto.com/wyfs02/M00/23/C4/wKiom1NDWkqzormZAAKo7We5wr4803.jpg" target="_blank"></a>
为什么设置3600秒?原因是如果设置时间过短,比如你设置60s,一个是服务器的压力大,一个是如果你检测的端口突然当掉了,还没有来的急报警,主机通过json来获取不到这个信息,就认为没有这个端口,模板里会自动关闭这个监控项的内容(默认保留30天,然后自动删除),这样报警功能就基本没有了,所以还是发现的间隔时间长一些比较好。
<a href="http://down.51cto.com/data/2364272" target="_blank">附件:http://down.51cto.com/data/2364272</a>
本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1392007,如需转载请自行联系原作者