zabbix利用API添加Web頁面監控代碼實現(1)

網上看到的,自己踩了下坑改了改,挺好用的:

#!/usr/bin/env python
# coding:utf-8
from pyzabbix import ZabbixAPI
import sys
from re import compile,IGNORECASE

reload(sys)
sys.setdefaultencoding('utf8')

ZABBIX_SERVER = "http://10.131.171.37/zabbix"
USER = "Admin"
PASSWORD = "zabbix"
HOSTNAME = "10.131.171.36" 
URL="http://10.131.171.37/zabbix/overview.php"
def login(ZABBIX_SERVER,USER,PASSWORD):
  zapi = ZabbixAPI(ZABBIX_SERVER)
  zapi.login(USER,PASSWORD)
  return zapi
def gethostid(auth,HOSTNAME):
  request = ZabbixAPI.do_request(auth, 'host.get', params={ "filter": {"host":HOSTNAME}})
  if request['result']:
    return request['result'][0]['hostid']
  else:
    print ("找不到該主機")
    sys.exit(1)
def getapplicationid(auth,hostid):
  try:
    request = ZabbixAPI.do_request(auth, 'application.create', params={"name": u"WebUrl監控","hostid": hostid})
  except Exception as e:
    print(e)
  request = ZabbixAPI.do_request(auth, 'application.get', params={"hostids": hostid})
  for num in xrange(0,len (request['result'])):
    if request['result'][num]['name'] == "WebUrl監控":
      print(request)
      return request['result'][num]['applicationid']
def create_web_scenario(auth,URL,hostid,applicationid):
  request = ZabbixAPI.do_request(auth, 'httptest.get', params={ "filter": {"name": URL}})
  if request['result']:
    print('該web監控已經添加過了' )
  else:
    try:
      ZabbixAPI.do_request(auth, 'httptest.create',params={"name": URL,"hostid": hostid,"applicationid": applicationid, "delay": '60',"retries": '3', "steps": [ { 'name': URL, 'url': URL, 'no': '1'} ] } )
    except Exception as e:
      print(e)
def create_trigger(auth,HOSTNAME,URL):
  expression="{"+"{0}:web.test.rspcode[{1}].last()".format(HOSTNAME,URL)+"}"+"<>200"
  try:
    ZabbixAPI.do_request(auth, 'trigger.create', params={"description": "從監控機訪問{0}出現問題".format(URL),"expression": expression,"priority":5})  
  except Exception as e:
    print(e)

auth = login(ZABBIX_SERVER,USER,PASSWORD)
hostid = gethostid(auth,HOSTNAME)
applicationid=getapplicationid(auth,hostid)
create_web_scenario(auth,URL,hostid,applicationid)
create_trigger(auth,HOSTNAME,URL)


參考地址:
https://blog.51cto.com/superbigsea/1767957
https://blog.csdn.net/weixin_43790276/article/details/90664236

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章