<code>1.</code><code>第一種 目前用的</code>
<code>[root@node zabbix_agentd.conf.d]</code><code># cat web_site_discovery.conf </code>
<code>UserParameter</code><code>=</code><code>web.site.discovery,</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>scripts</code><code>/</code><code>web_site_code_status web_site_discovery </code>
<code>UserParameter</code><code>=</code><code>web.site.code[</code><code>*</code><code>],</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>scripts</code><code>/</code><code>web_site_code_status web_site_code $</code><code>1</code>
<code>cat </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>scripts</code><code>/</code><code>web_site_code_status</code>
<code>#!/bin/bash </code>
<code># function:monitor tcp connect status from zabbix </code>
<code># License: GPL </code>
<code># mail:[email protected] </code>
<code># version:1.0 date:2012-12-09 </code>
<code>source </code><code>/</code><code>etc</code><code>/</code><code>bashrc ></code><code>/</code><code>dev</code><code>/</code><code>null </code><code>2</code><code>>&</code><code>1</code>
<code>source </code><code>/</code><code>etc</code><code>/</code><code>profile ></code><code>/</code><code>dev</code><code>/</code><code>null </code><code>2</code><code>>&</code><code>1</code>
<code>#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/ </code>
<code>WEB_SITE_discovery () { </code>
<code>WEB_SITE</code><code>=</code><code>($(cat </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>scripts</code><code>/</code><code>WEB.txt|grep </code><code>-</code><code>v </code><code>"^#"</code><code>)) </code>
<code> </code><code>printf </code><code>'{\n'</code>
<code> </code><code>printf </code><code>'\t"data":[\n'</code>
<code>for</code><code>((i</code><code>=</code><code>0</code><code>;i<${</code><code>#WEB_SITE[@]};++i)) </code>
<code>{ </code>
<code>num</code><code>=</code><code>$(echo $((${</code><code>#WEB_SITE[@]}-1))) </code>
<code> </code><code>if</code> <code>[ </code><code>"$i"</code> <code>!</code><code>=</code> <code>${num} ]; </code>
<code> </code><code>then </code>
<code> </code><code>printf </code><code>"\t\t{ \n"</code>
<code> </code><code>printf </code><code>"\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$i]}\"},\n"</code>
<code> </code><code>else</code>
<code> </code><code>printf </code><code>"\t\t{ \n"</code>
<code> </code><code>printf </code><code>"\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$num]}\"}]}\n"</code>
<code> </code><code>fi </code>
<code>} </code>
<code>web_site_code () { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>-</code><code>o </code><code>/</code><code>dev</code><code>/</code><code>null </code><code>-</code><code>s </code><code>-</code><code>w </code><code>%</code><code>{http_code} http:</code><code>/</code><code>/</code><code>$</code><code>1</code>
<code>case </code><code>"$1"</code> <code>in</code>
<code>web_site_discovery) </code>
<code>WEB_SITE_discovery </code>
<code>;; </code>
<code>web_site_code) </code>
<code>web_site_code $</code><code>2</code>
<code>*</code><code>) </code>
<code>echo </code><code>"Usage:$0 {web_site_discovery|web_site_code [URL]}"</code>
<code>esac</code>
<code>2.</code><code>第二種 監控網站通路時間</code>
<code>[root@node zabbix_agentd.conf.d]</code><code># cat web_status.conf </code>
<code>UserParameter</code><code>=</code><code>get_web_name,</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>web_monitor.py web_name_discovery</code>
<code>UserParameter</code><code>=</code><code>get_web_status[</code><code>*</code><code>],</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>web_monitor.py get_web_status $</code><code>1</code> <code>$</code><code>2</code>
<code>cat </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>web_monitor.py</code>
<code>#!/usr/bin/env python</code>
<code># -*- coding: utf-8 -*-</code>
<code>import</code> <code>os,sys</code>
<code>import</code> <code>time</code>
<code>import</code> <code>sys</code>
<code>import</code> <code>pycurl</code>
<code>import</code> <code>json</code>
<code>urllist</code><code>=</code><code>[</code><code>'a.com'</code><code>,</code><code>'b.com'</code><code>]</code>
<code>class</code> <code>Test:</code>
<code> </code><code>def</code> <code>__init__(</code><code>self</code><code>):</code>
<code> </code><code>self</code><code>.contents </code><code>=</code> <code>''</code>
<code> </code><code>def</code> <code>callback(</code><code>self</code><code>,curl):</code>
<code> </code><code>self</code><code>.contents </code><code>=</code> <code>self</code><code>.contents </code><code>+</code> <code>curl</code>
<code>def</code> <code>test_gzip(url):</code>
<code> </code><code>data </code><code>=</code> <code>{}</code>
<code> </code><code>t </code><code>=</code> <code>Test()</code>
<code> </code><code>c </code><code>=</code> <code>pycurl.Curl()</code>
<code> </code><code>c.setopt(pycurl.WRITEFUNCTION,t.callback)</code>
<code> </code><code>c.setopt(pycurl.ENCODING, </code><code>'gzip'</code><code>)</code>
<code> </code><code>c.setopt(pycurl.URL,url)</code>
<code> </code><code>c.perform()</code>
<code> </code><code>data[</code><code>'HTTP_CODE'</code><code>]</code><code>=</code><code>c.getinfo(c.HTTP_CODE)</code>
<code> </code><code>data[</code><code>'NAMELOOKUP_TIME'</code><code>]</code><code>=</code><code>(c.getinfo(c.NAMELOOKUP_TIME))</code><code>*</code><code>1000</code>
<code> </code><code>data[</code><code>'CONNECT_TIME'</code><code>]</code><code>=</code><code>(c.getinfo(c.CONNECT_TIME))</code><code>*</code><code>1000</code>
<code> </code><code>data[</code><code>'PRETRANSFER_TIME'</code><code>]</code><code>=</code><code>(c.getinfo(c.PRETRANSFER_TIME))</code><code>*</code><code>1000</code>
<code> </code><code>data[</code><code>'SPEED_DOWNLOAD'</code><code>]</code><code>=</code><code>c.getinfo(c.SPEED_DOWNLOAD)</code>
<code> </code><code>return</code> <code>data</code>
<code>def</code> <code>web_name_discovery():</code>
<code> </code><code>web_list</code><code>=</code><code>[]</code>
<code> </code><code>web_dict</code><code>=</code><code>{</code><code>"data"</code><code>:</code><code>None</code><code>}</code>
<code> </code><code>for</code> <code>url </code><code>in</code> <code>urllist:</code>
<code> </code><code>url_dict</code><code>=</code><code>{}</code>
<code> </code><code>url_dict[</code><code>"{#NAME}"</code><code>]</code><code>=</code><code>url</code>
<code> </code><code>web_list.append(url_dict)</code>
<code> </code><code>web_dict[</code><code>"data"</code><code>]</code><code>=</code><code>web_list</code>
<code> </code><code>jsonStr </code><code>=</code> <code>json.dumps(web_dict, sort_keys</code><code>=</code><code>True</code><code>, indent</code><code>=</code><code>4</code><code>)</code>
<code> </code><code>return</code> <code>jsonStr</code>
<code>def</code> <code>get_web_status():</code>
<code> </code><code>data</code><code>=</code><code>test_gzip(sys.argv[</code><code>2</code><code>])</code>
<code> </code><code>return</code> <code>data[sys.argv[</code><code>3</code><code>]]</code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>if</code> <code>sys.argv[</code><code>1</code><code>] </code><code>=</code><code>=</code> <code>"web_name_discovery"</code><code>:</code>
<code> </code><code>print</code> <code>web_name_discovery()</code>
<code> </code><code>elif</code> <code>sys.argv[</code><code>1</code><code>] </code><code>=</code><code>=</code> <code>"get_web_status"</code><code>:</code>
<code> </code><code>print</code> <code>get_web_status()</code>
<code>3.</code><code>第三種</code>
<code>[root@node zabbix_agentd.conf.d]</code><code># cat warn_status.conf </code>
<code>UserParameter</code><code>=</code><code>get_warn_name,</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>warn_web.py</code>
<code>UserParameter</code><code>=</code><code>get_warn_status[</code><code>*</code><code>],</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>warn_monitor.py $</code><code>1</code>
<code>cat </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>warn_web.py</code>
<code>import</code> <code>subprocess</code>
<code>args </code><code>=</code> <code>'''awk -F' ' '{print $1}' /usr/local/zabbix/scripts/warn.txt|grep -v "#"'''</code>
<code>t </code><code>=</code> <code>subprocess.Popen(args, shell</code><code>=</code><code>True</code><code>, stdout</code><code>=</code><code>subprocess.PIPE).communicate()[</code><code>0</code><code>]</code>
<code>lwarns </code><code>=</code> <code>[]</code>
<code>for</code> <code>mongo </code><code>in</code> <code>t.split(</code><code>'\n'</code><code>):</code>
<code> </code><code>if</code> <code>len</code><code>(mongo) !</code><code>=</code> <code>0</code><code>:</code>
<code> </code><code>lwarns.append({</code><code>'{#WARN_HOST}'</code><code>: mongo})</code>
<code>print</code> <code>json.dumps({</code><code>'data'</code><code>: lwarns}, indent</code><code>=</code><code>4</code><code>, separators</code><code>=</code><code>(</code><code>','</code><code>, </code><code>':'</code><code>))</code>
<code>cat </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>bin</code><code>/</code><code>warn_monitor.py</code>
<code>import</code> <code>urllib2,sys</code>
<code>if</code> <code>len</code><code>(sys.argv) </code><code>=</code><code>=</code> <code>2</code><code>:</code>
<code> </code><code>argv1 </code><code>=</code> <code>sys.argv[</code><code>1</code><code>]</code>
<code>def</code> <code>http_get():</code>
<code> </code><code>url </code><code>=</code> <code>argv1 </code><code># 頁面的位址</code>
<code> </code><code>response </code><code>=</code> <code>urllib2.urlopen(url) </code><code># 調用urllib2向伺服器發送get請求</code>
<code> </code><code>return</code> <code>response.read() </code><code># 擷取伺服器傳回的頁面資訊</code>
<code>ret </code><code>=</code> <code>http_get()</code>
<code>retj</code><code>=</code><code>json.loads(ret)</code>
<code>if</code> <code>retj[</code><code>'action'</code><code>] </code><code>=</code><code>=</code> <code>"NONE"</code><code>:</code>
<code> </code><code>print</code> <code>0</code>
<code>else</code><code>:</code>
<code> </code><code>print</code> <code>1</code>
<code>4.</code><code>配置>主機(需聯網)>web場景>建立web場景</code>
<code>5.shell</code><code>+</code><code>nc</code><code>+</code><code>namp等工具</code><code>+</code><code>crontab</code>
<code>#!/bin/bash</code>
<code>#this is a jiankong qutouwang bash</code>
<code>nc </code><code>-</code><code>z </code><code>-</code><code>v </code><code>-</code><code>w </code><code>10</code> <code>80</code> <code>&></code><code>/</code><code>dev</code><code>/</code><code>null</code>
<code>if</code> <code>[ $? </code><code>-</code><code>ne </code><code>0</code> <code>]</code>
<code>then nmap www.xxx.com </code><code>-</code><code>p </code><code>80</code><code>|grep </code><code>'80/tcp open http'</code>
<code>then</code>
<code>echo </code><code>" is already stopd"</code> <code>| mail </code><code>-</code><code>s </code><code>"www.xxx.com "</code> <code>[email protected]</code>
<code>fi</code>
<code>#https</code>
<code>nc </code><code>-</code><code>z </code><code>-</code><code>v </code><code>-</code><code>w </code><code>10</code> <code>443</code> <code>&></code><code>/</code><code>dev</code><code>/</code><code>null</code>
<code>then nmap </code><code>-</code><code>p </code><code>443</code><code>|grep </code><code>'443/tcp open https'</code>
<code>echo </code><code>"www.xxx.com https is already stopd"</code> <code>| mail </code><code>-</code><code>s </code><code>" "</code> <code>[email protected]</code>
後面兩種很實用。
本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1961209,如需轉載請自行聯系原作者