zabbixAPI的包裝pyzabbix-創(chuàng)新互聯(lián)

pyzabbix是zabbixAPI的第三方python包裝。從網(wǎng)上莫名其妙地搞到了一份源碼,看了一下之后發(fā)現(xiàn)實現(xiàn)方法還蠻巧妙的,感覺挺好的就記下來了。那些個源碼本身其實也是一個個單獨操作的腳本,可以用命令行參數(shù)直接操作。pyzbx用了json來encode和decode請求數(shù)據(jù)和返回數(shù)據(jù),并且用了urllib2中的一些方法來進行通訊

成都創(chuàng)新互聯(lián)主營迎江網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app軟件開發(fā),迎江h(huán)5微信小程序開發(fā)搭建,迎江網(wǎng)站營銷推廣歡迎迎江等地區(qū)企業(yè)咨詢

如果不是直接用它的腳本,而是自己定制相關程序的話基本上只用到ZabbixAPI這個類:

from pyzabbix import ZabbixAPI

zapi = ZabbixAPI("server")    #server是指zabbixweb界面的url,比如http://192.168.1.101/zabbixzapi.login("username","password")    #指的是zabbix系統(tǒng)里的用戶名和密碼,不是服務器本身的用戶名和密碼

之后就可以用zapi這個對象來實現(xiàn)程序和zabbixAPI之間的通訊了。

官方文檔地址:http://www.zabbix.com/documentation/2.4/manual/api

zapi主要可以用的方法:

zapi.host.get , zapi.host.create , zapi.hostgroup.get , zapi.host.update , ........等等。可以看到,這些方法和API的分類是一致的,這是寫了這個pyzabbix模塊的人包裝得很巧妙的おかげ,用起來就方便很多了。 此外,這些方法大多都支持string/list的雙重參數(shù)格式。意思就是說,當你想操作多次,但是又不想一條一條語句寫的時候,可以直接傳一個list進去,它會自動給你解析出來的。

■  使用方法:

zapi.hostgroup.get(filter={‘groupid‘:‘xxx‘},output=[‘name‘,‘groupid‘],selectHosts=[‘name‘,‘hostid‘])

類似這樣的語句。一個方法對應了官方API說明中的一種操作,這種對應關系很好懂,比如hostgroup.get就是獲取主機組的信息,host.update就是更新主機的一些信息等等。至于每個方法的參數(shù),就是和這個方法對應的那個API操作里規(guī)定的請求json串有關了??磶讉€請求串和方法參數(shù)的對應就會有感覺了= =。。字段是參數(shù)名,而字段值是參數(shù)值。

比如詳細解釋一下上面這條語句,它的意思就是

我要獲取一些主機組的信息。

這個(些)主機組的groupid是xxx(filter的功能,如果不寫filter,系統(tǒng)就默認把所有組的信息都返回給你了,當然通過指定groupid過濾出來的組肯定只有一個咯,但是返回來的json串仍然是個列表的形式,即使只有一項,這個后面還會說到)

我要得到的是這個(些)組的name和groupid字段(output的功能,output一定得是一個列表,可以是空,但是無論如何至少一定會返回groupid這個字段。如果寫[‘extend‘]則是把所有字段的信息都返回)

此外我還要獲取一些這個主機組里主機的信息,那么可以用selectHosts這個參數(shù),列表中的值指定了我想知道的這些主機哪些字段的信息。

最后返回回來的json可能是這樣的:

[
    {
        "hosts": [
            {
                "hostid": "10001", 
                "name": "主機1"
            }, 
            {
                "hostid": "10002", 
                "name": "主機2"
            }
        ], 
        "groupid": "10", 
        "name": "主機組1"
    }
]

   *不要問為什么hosts不是寫在output里的一個參數(shù)= =。它的API就是這么設計的,即使是寫json請求串也是要把selectHosts和output分開兩個字段寫的。。

このように,利用這類包裝好的方法來獲取json串,然后從json串里解析出我想要的信息就是一般的做法了。get基本上就是這樣了,其他的什么create啦,update啦,主要還是要結(jié)合官方給出的請求串的格式以及可用字段,然后思考一下我的參數(shù)該怎么寫,測試一下就好了??傮w來時pyzabbix并不難用,只是zabbixAPI本身有些邏輯比較異于常理,需要適應適應。。

■  以下是一些我在使用過程中碰到的一些需要注意的地方:

● 本身參數(shù)不存在,或者參數(shù)的值不合法的情況下(比如在上面那條語句中加個testpara="testvalue"之類的或者把output寫成[‘name‘,‘groupid‘,‘testitem‘]),zabbixAPI不會報錯,而是默認忽略這個參數(shù),這一點比較坑,需要注意的。

● 主機有一個屬性是status,這個屬性可以在host.update中使用來實現(xiàn)通過api enable和disable某個主機的操作。但是需要注意的是這個status的值是u‘0‘或者u‘1‘,不是int也不是str,是unicode

● host.update的時候在確定要update哪臺主機的時候用的不是filter參數(shù)(事實上可能出了get方法以外,其他的用的都不是filter),而是直接有個hostid參數(shù)來指定一個hostid,從而確定一臺特定的主機。這么做的依據(jù)是因為hostid是主機與生俱來且唯一的,可以這么做。。

●host在create的時候可以加上macros參數(shù)來添加宏。比如macros=[{‘macro‘:‘{$INSTANCE}‘,‘value‘:‘frankid‘},{‘macro‘:‘{$ACCOUNT}‘,‘value‘:‘test_account‘}]

●未完待續(xù)。。。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站標題:zabbixAPI的包裝pyzabbix-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article34/hocpe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、服務器托管、網(wǎng)頁設計公司、自適應網(wǎng)站、企業(yè)建站、面包屑導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計