zabbix api 設定維護模式

來源:互聯網
上載者:User

標籤:bsp   logout   nod   格式化json   pre   資料   ict   read   ons   

  1. 通過zabbix提供的api進行維護模式的設定
#!/usr/bin/env python# -*-coding:utf-8-*-import urllibimport urllib2import jsonimport sysimport platformimport time  def auth(uid, username, password, api_url):    """    zabbix認證    :param uid:    :param username:    :param password:    :return:    """    dict_data = {}    dict_data[‘method‘] = ‘user.login‘  # 方法    dict_data[‘id‘] = uid  # 使用者id    dict_data[‘jsonrpc‘] = "2.0"  # api版本    dict_data[‘params‘] = {"user": username, "password": password}  # 使用者帳號密碼    jdata = json.dumps(dict_data)  # 格式化json資料    content = post_data(jdata, api_url)  # post json到介面    return content  # 返回資訊  def post_data(jdata, url):    """    POST方法    :param jdata:    :param url:    :return:    """    req = urllib2.Request(url, jdata, {‘Content-Type‘: ‘application/json‘})    response = urllib2.urlopen(req)    # content = response.read()    content = json.load(response)    return content  def create_maintenance(name, hostid, active_since, active_till, period, auth_code, api_url):    """    create maintenance    :return:    """    dict_data = {}    dict_data[‘method‘] = ‘maintenance.create‘  # 方法    dict_data[‘id‘] = uid  # 使用者id    dict_data[‘jsonrpc‘] = "2.0"  # api版本    dict_data[‘auth‘] = auth_code  # api版本    dict_data[‘description‘] = "UPDATE" + hostid  # api版本    # host    hostids = [hostid]    # timeperiods    timeperiods = [{"timeperiod_type": 0, "start_time": 64800, "period": period}]    dict_data[‘params‘] = {"name": name, "active_since": active_since, "timeperiods": timeperiods,                           "active_till": active_till, "hostids": hostids}  # 使用者帳號密碼    jdata = json.dumps(dict_data)  # 格式化json資料    content = post_data(jdata, api_url)  # post json到介面    print content    return content  # 返回資訊  def get_hostid(hostname, auth_code, uid, api_url):    """    use hostname get hostid    :param hostname:    :param auth:    :param uid:    :return:    """    dict_data = {}    dict_data[‘method‘] = ‘host.getobjects‘  # 方法    dict_data[‘id‘] = uid  # 使用者id    dict_data[‘jsonrpc‘] = "2.0"  # api版本    dict_data[‘params‘] = {"name": hostname}  # 主機名稱    dict_data[‘auth‘] = auth_code  # auth串    jdata = json.dumps(dict_data)  # 格式化json資料    content = post_data(jdata, api_url)  # post json到介面    print content    return content  # 返回資訊  def logout(uid, auth_code, api_url):    """    退出    :param uid:    :param auth_code:    :return:    """    dict_data = {}    dict_data[‘method‘] = ‘user.logout‘  # 方法    dict_data[‘id‘] = uid  # 使用者id    dict_data[‘jsonrpc‘] = "2.0"  # api版本    dict_data[‘params‘] = []    dict_data[‘auth‘] = auth_code  # auth串    jdata = json.dumps(dict_data)  # 格式化json資料    content = post_data(jdata, api_url)  # post json到介面    return content  # 返回資訊  if __name__ == ‘__main__‘:    # user info    uid = 1 # 使用者ID    username = ‘admin‘    password = ‘123456‘    api_url = "http://192.168.1.100/api_jsonrpc.php"    res = auth(1, username, password, api_url)  # 認證    if res[‘result‘]:        auth_code = res[‘result‘]  # 認證串        hostname = platform.node()  # 主機名稱        res = get_hostid(hostname, auth_code, uid, api_url)        if res[‘result‘]:            period = 600  # 維護時間長度            active_since = int(time.time())  # 開始時間            active_till = int(time.time()) + period  # 結束時間            hostid = res[‘result‘][0][‘hostid‘]  # 主機            res = create_maintenance(‘AutoMaintenance_‘ + hostname + ‘_‘ + str(active_since), hostid, active_since, active_till, period,                                     auth_code, api_url)  # 建立維護            logout(uid, auth_code, api_url)  # 退出登入            print res    else:        pass

需要修改uid、username、password、api_url以及res中的auth函數的uid值,通過修改period的值來修改維護時間長度。

該指令碼通過platform模組擷取到agent的主機名稱,確保server端的主機名稱與用戶端一致,且存在,否則設定不成功。

設定完成後可在Configuration->Maintenance頁面中查看設定的維護模板。

可以通過在Configuration->Hosts頁面中查看是否生效。

 

zabbix api 設定維護模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.