“Zabbix通过Python/Shell对HTTP服务状态的监控”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
第40行: 第40行:
  
 
==py3版本脚本==
 
==py3版本脚本==
 +
<pre>
  
 +
#!/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)
 +
 +
</pre>
  
 
=整合到Zabbix=
 
=整合到Zabbix=

2020年4月10日 (五) 07:44的版本

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)

整合到Zabbix

首先在ZabbixAgent配置文件中配置一条UserParameter

# zabbix client
UserParameter=mon.web[*],/data/mon/mon.web.py $1

然后配置item:


名 api status code
键值  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[1]"

404

see also

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