天天看点

1 zabbix监控web

<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 &gt;</code><code>/</code><code>dev</code><code>/</code><code>null </code><code>2</code><code>&gt;&amp;</code><code>1</code> 

<code>source </code><code>/</code><code>etc</code><code>/</code><code>profile  &gt;</code><code>/</code><code>dev</code><code>/</code><code>null </code><code>2</code><code>&gt;&amp;</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&lt;${</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>配置&gt;主机(需联网)&gt;web场景&gt;创建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>&amp;&gt;</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>&amp;&gt;</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,如需转载请自行联系原作者