天天看点

zabbix企业应用之low level discovery监控memcache

下面是效果图:

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/ &amp;&amp; /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>&amp;&amp; </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>&gt;&gt;/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>&gt;&amp;</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,如需转载请自行联系原作者