欢迎您光临本站,如有问题请及时联系我们。

如何通过Python/Shell对HTTP服务状态的监控?

  Shell


  我们首先来看Shell版本如何实现吧。


  #!/bin/bash


  #定义位置变量


  url=$1


  #定义检查函数


  monitor_http(){


  status_code=$(curl-m5-s-o/dev/null-w%{http_code}$url)


  echo$status_code


  }


  #调用http监测函数


  monitor_http


  通过Shell的实现方式呢,主要就是curl的使用,来看看这几个参数的说明:


  -m设置curl不管访问成功或失败,最大消耗的时间为5秒,5秒连接服务为相应则视为无法连接

  -s设置静默连接,不显示连接时的连接速度、时间消耗等信息

  -o将curl下载的页面内容导出到/dev/null(默认会在屏幕显示页面内容)

  -w设置curl命令需要显示的内容%{http_code},指定curl返回服务器的状态码

  Python


  Python的版本可能相对复杂了一点点,这里我们主要通过urllib2模块来实现:


  #!/usr/bin/python


  #-*-coding:utf-8-*-


  importurllib2


  importsys


  defmonitor_http(url):


  response=None


  try:


  response=urllib2.urlopen(url,timeout=5)


  #printresponse.info()#header


  printresponse.getcode()


  excepturllib2.URLErrorase:


  ifhasattr(e,‘code’):


  printe.code


  elifhasattr(e,‘reason’):


  printe.reason


  finally:


  ifresponse:


  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:


  Zabbix


  注意Key的配置:


  monitor.http[http://www.qq.com]


  接下来配置一个Trigger:


  Trigger


  这里我们定义http状态码不为200时发出告警,其实整个配置都不难,这里也可以当作是Zabbix自定义监控的一个应用案例。


来源:本文由E8运维原创撰写,欢迎分享本文,转载请保留出处和链接!