py脚本
py2版本
#!/usr/bin/python
# -*- coding: utf-8 -*-
#mon.web.py
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)
#usage python2 1.py 'http://www.baidu.com'
#就判 404吧
#UserParameter=mon.web[*],/data/app/zabbix/bin/monitor_http.py $1
py3版本脚本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#mon.web.py
import urllib
import sys
import urllib.request
#import urllib.error
import urllib.error
def monitor_http(url):
response = None
try:
#response = urllib.urlopen(url,timeout=5)
response = urllib.request.urlopen(url,timeout=5)
#print response.info() # header
print("%s" %(response.getcode()))
except Exception as e:
# except urllib.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)
#usage 有返回码的才对
# /data/mon/mon_web.py "http://market-socket.a.com"
#400
整合到Zabbix
首先在ZabbixAgent配置文件中配置一条UserParameter
# zabbix client
UserParameter=mon.web[*],/data/mon/mon.web.py $1
然后配置item:
名 api status code #zabbix_get 根据上面 的UserParameter 来配
键值 mon.web[http://market-api.cailuw.com]
接下来配置一个Trigger:
右边添加 双击 选择刚才有关的 监控项 特别是 respo 什么的那个 然后不等于 我这里是 404 一般正常应该是200
这里我们定义http状态码不为404(一般情形是200)时发出告警
on zbx server
zabbix_get -s 10.3.10.143 -k "mon.web[http://market-api.cailuw.com]"
404
see also
如何通过Python/Shell对HTTP服务状态的监控?
通过Python/Shell对HTTP服务状态的监控
使用的知识点补充
Python3中urllib使用介绍 和py2 urllib2的区别
详解 python3 urllib
Python3学习笔记(urllib模块的使用)
python3.x 的urllib使用例子