天天看點

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,如需轉載請自行聯系原作者