zabbix api 維護(hù)模式

zabbix 調(diào)用api設(shè)置維護(hù)模式

#!/usr/bin/env python
# -*-coding:utf-8-*-
import urllib
import urllib2
import json
import sys
import platform
import time
 
 
def auth(uid, username, password, api_url):
    """
    zabbix認(rèn)證
    :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}  # 用戶賬號(hào)密碼
    jdata = json.dumps(dict_data)  # 格式化json數(shù)據(jù)
    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}  # 用戶賬號(hào)密碼
    jdata = json.dumps(dict_data)  # 格式化json數(shù)據(jù)
    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}  # 主機(jī)名
    dict_data['auth'] = auth_code  # auth串
    jdata = json.dumps(dict_data)  # 格式化json數(shù)據(jù)
    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數(shù)據(jù)
    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)  # 認(rèn)證
    if res['result']:
        auth_code = res['result']  # 認(rèn)證串
        hostname = platform.node()  # 主機(jī)名
        res = get_hostid(hostname, auth_code, uid, api_url)
        if res['result']:
            period = 600  # 維護(hù)時(shí)長(zhǎng)
            active_since = int(time.time())  # 開始時(shí)間
            active_till = int(time.time()) + period  # 結(jié)束時(shí)間
            hostid = res['result'][0]['hostid']  # 主機(jī)
            res = create_maintenance('AutoMaintenance_' + hostname + '_' + str(active_since), hostid, active_since, active_till, period,
                                     auth_code, api_url)  # 創(chuàng)建維護(hù)
            logout(uid, auth_code, api_url)  # 退出登錄
            print res
    else:
        pass

備注:以上腳本適用于zabbix2.4及以下版本
需要修改uid、username、password、api_url以及res中的auth函數(shù)的uid值,通過(guò)修改period的值來(lái)修改維護(hù)時(shí)長(zhǎng)。

該腳本通過(guò)platform模塊獲取到agent的主機(jī)名,確保server端的主機(jī)名與客戶端一致,且存在,否則設(shè)置不成功。

設(shè)置完成后可在Configuration->Maintenance頁(yè)面中查看設(shè)置的維護(hù)模板。

可以通過(guò)在Configuration->Hosts頁(yè)面中查看是否生效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Zabbix簡(jiǎn)介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 8,330評(píng)論 0 37
  • 1.寫在前面 本文主要介紹的是zabbix的編譯安裝過(guò)程,包含它的基礎(chǔ)環(huán)境LNMP,雖然zabbix官方一般推薦的...
    天之藍(lán)色閱讀 2,663評(píng)論 0 16
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 感恩高子杰老師帶給我們的情緒管理的課程,感恩同事們的專心和配合。 感恩小霞送我的面膜和無(wú)條件的信任。 感恩辦公室同...
    蘭草心閱讀 153評(píng)論 0 0
  • Everyone is trying her/his best to find herself/himself,...
    娜娜是最美的小仙女閱讀 237評(píng)論 1 0

友情鏈接更多精彩內(nèi)容