利用zabbix API進行管理

    zabbix 現在之所以那麼流行,個人感覺跟zabbix 強大的API有一個很大的關係,利用API可以幫我們完成很多事情:

    1、獲取相關組,主機信息。

    2、比如有人喜歡獲取歷史數據重新出圖。

    3、添加刪除主機,綁定刪除模板。

    4、添加刪除維護週期


這裏我使用pipy提供的zabbix_client模塊來進行,這樣就不用我們自己去寫登錄函數,只要在模塊開始指定用戶名密碼即可:


1、安裝zabbix_client:

 pip install zabbxi_client


2、API管理腳本,替換成自己用戶名密碼即可:

#coding:utf-8
import time
from zabbix_client import ZabbixServerProxy
class Zabbix():
    def __init__(self):
        self.zb = ZabbixServerProxy("http://192.168.10.100/zabbix")
        self.zb.user.login(user="Admin", password="zabbix")
     ############## 查詢組所有組獲取組id ###############
    def get_hostgroup(self):
        data = {
           "output":['groupid','name']
         }
        ret = self.zb.hostgroup.get(**data)
        return ret 
  
     ########### 通過組id獲取相關組內的所有主機 ###############
    def get_hostid(self,groupids=2):
        data = {
        "output": ["hostid", "name"],
        "groupids": groupids
        }
        ret = self.zb.host.get(**data)
        return ret
     ########## 通過獲取的hostid查找相關監控想itemid ###################
    def item_get(self, hostids="10115"):
        data = {
       "output":["itemids","key_"],
       "hostids": hostids,
        }
        ret = self.zb.item.get(**data)
        return ret
  ######### 通過itemid(傳入itemid和i0表示flast類型)獲取相關監控項的歷史數據 ###########
    def history_get(self, itemid, i ,limit=10):
        data = { "output": "extend",
          "history": i,
          "itemids": [itemid], 
          "limit": limit 
          }
        ret = self.zb.history.get(**data)
        return ret
  
   ###############添加主機並且指定到組(傳入主機名,IP地址和組ID)#####################
    def add_zabbix_host(self,hostname="test_zabbix",ip="192.168.10.100",groupid="2"):
        data = {
         "host": hostname,
         "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": ip,
                "dns": "",
                "port": "10050"
            }
         ],
         "groups": [
             {
                "groupid": groupid
             }
         ]
        }
        ret = self.zb.host.create(data)
        return ret
    #####################查看現有模板#######################
    def get_template(self):
        datalist = []
        datadict={}
        data = {
            "output":["templateid","name"]
        }
        ret =  self.zb.template.get(data)
        for i in ret:
            datadict[i['name']] = i['templateid']
            datalist.append(datadict)
        return datalist 
    
     #################### 關聯主機到模板##################################
    def link_template(self, hostid=10156, templateids=10001):
        data = {
            "hostid":hostid,
             "templates":templateids
        }      
  
        ret = self.zb.host.update(data)
        return ret
   
    ###################  添加維護週期,,######################################
 
    def create_maintenance(self,name="test",hostids=10156,time=2):
        data =  {
            "name": name,
            "active_since": 1458142800,
            "active_till": 1489678800,
            "hostids": [
                hostids
            ],
            "timeperiods": [
                {
                    "timeperiod_type": 0,
                    "period": 3600
                }
            ]
        }
        ret = self.zb.maintenance.create(data)
        self.host_status(10130, 1)
        return ret
    ################獲取維護週期,,#########################
    def get_maintenance(self):
        data = {
            "output": "extend",
            "selectGroups": "extend",
            "selectTimeperiods": "extend"
        }
        ret = self.zb.maintenance.get(data)
        return ret
    ##############獲取維護週期之後,通過傳入maintenanceid刪除維護週期###########
    def del_maintenance(self,maintenanceids):
        return self.zb.maintenance.delete(maintenanceids) 
    #########################添加維護週期時候需要吧zabbix_host設置成非監控狀態##################
    def host_status(self, hostid, status):
        data = {
            "hostid":hostid,
            "status":status
        }
        return self.zb.host.update(data)
    ###########通過hostids刪除主機id,順帶也刪除模板#########
    
    def host_del(self,hostids=10155):
        return self.zb.host.delete(hostids)
if __name__ == "__main__":
    zabbix_server = Zabbix()
    #print zabbix_server.get_hostgroup()
    #print zabbix_server.get_hostid()
    #print zabbix_server.item_get(10156)   
    #data = zabbix_server.history_get("24889",0) 
    #print zabbix_server.get_hostgroup()
    #print zabbix_server.add_zabbix_host()
    #data = zabbix_server.get_template()
    #print data[0]['Template OS Linux']
    #print zabbix_server.link_template()
    #print zabbix_server.create_maintenance()
   # print zabbix_server.host_del(10155)
    #print zabbix_server.get_maintenance()
    print zabbix_server.del_maintenance(15)

zabbix視頻請移步:http://www.roncoo.com/details/fb3050a5b34b42f39ccad83ebebc89c1


zabbix自動化課程目錄(需求更新中):


1、zabbix生產環境如何使用

2、saltstack批量部署zabbix_agent

3、zabbix API簡單使用講解

4、web UI講解

5、開始監控之添加一個簡單的linux監控

6、zabbix 強大的內置key講解

7、內置key的使用、 端口、用戶數、磁盤讀取狀態出圖

8、trigger表達式學習,實現用戶登錄數,端口檢查告警

9、zabbix郵件告警設置與維護週期

10、zabbix自定義Key添加,tcp狀態模板編寫

11、自定義監控之、監控nginx解析與實現

12、自定義監控之php-fpm監控

13、自定義監控之mysql狀態監控

14、自定義監控之緩存服務器memcached,redis監控

15、自動化之saltstack管理zabbix,批量推送key生效

16、zabbix自動發現綁定刪除模板,自動註冊

17、zabbix lld發現講解以及端口發現監控告警出圖

18、zabbix lld 發現web站點以及批量獲取狀態碼

19、zabbix lld複習和監控磁盤的運行狀況

20、zabbix生成環境規範和按月生成報表資源統計

21、微信公衆號告警


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