相信很多运维童鞋都有遇到过这样的需求,需要监控某个网站或者URL的状态码,如果返回的不是指定的状态码,那就触发告警。今天一起学习下,怎么通过Python和Shell来实现该需求,并怎么整合到Zabbix当中去。
Shell我们首先来看Shell版本如何实现吧。
#!/bin/bash # 定义位置变量 url=$1 # 定义检查函数 monitor_http(){ status_code=$(curl -m 5 -s -o /dev/null -w %{http_code} $url) echo $status_code } # 调用http监测函数 monitor_http
通过Shell的实现方式呢,主要就是curl的使用,来看看这几个参数的说明:
Python的版本可能相对复杂了一点点,这里我们主要通过urllib2模块来实现:
#!/usr/bin/python # -*- coding: utf-8 -*- import urllib2 import sys def monitor_http(url): response = None try: response = urllib2.urlopen(url,timeout=5) #print response.info() # header print response.getcode() except urllib2.URLError as e: if hasattr(e, ‘code’): print e.code elif hasattr(e, ‘reason’): print e.reason finally: if response: response.close() url = sys.argv[1] monitor_http(url)
代码其实还是很简单的,urllib2这里不多说了哈,也可以使用pyCurl模块来实现。
如何整合到Zabbix整合到Zabbix,就可以实现告警了。
首先在ZabbixAgent配置文件中配置一条UserParameter,如下:
UserParameter=monitor.http[*],/data/app/zabbix/bin/monitor_http.py $1
然后配置item:
注意Key的配置:
monitor.http[http://www.qq.com]
接下来配置一个Trigger:
这里我们定义http状态码不为200时发出告警,其实整个配置都不难,这里也可以当作是Zabbix自定义监控的一个应用案例。
以上是使用Python/Shell对HTTP服务进行监控的详细内容。更多信息请关注PHP中文网其他相关文章!