1. 程式人生 > >利用python3 調用zabbix接口完成批量加聚合圖形(screens)

利用python3 調用zabbix接口完成批量加聚合圖形(screens)

理解 sort 接口 graphs AR gin ram 主機 content

在上一篇博客中,我們完成的利用python3 調用zabbix接口批量增加主機,增加主機的item,增加主機的圖形!

接下來我們完成批量增加主機的screen

首先我們要增加screen需要哪些參數呢?官方的解釋如下:

{
    "jsonrpc": "2.0",
    "method": "screen.create",
    "params": {
        "name": "Graphs",
        "hsize": 3,
        "vsize": 2,
        "screenitems": [
            {
                "resourcetype": 0,
                "resourceid": "612",
                "rowspan": 0,
                "colspan": 0,
                
            }
        ]
    },
    "auth": "038e1d7b1735c6a5436ee9eae095879e",
    "id": 1
}

這裏面的參數大致意思如下:

  hsize:水平尺寸 可以簡單的理解為 這個聚合圖形最多可以有多少行

  vsize:垂直尺寸 同理,這個聚合圖形最多可以有多少列

  resourcetye :圖形的類型 0 代表graph 1 簡單graph 2 文本 。。。。

  resourceid :ID of the screen that the item belongs to. 也就是說需要加入的圖形它的ID是說少

  rowspan:屏幕項目將跨越的行數。

  colspan:屏幕項目將跨越的列數。 意思就是圖形占多少行多少列 這裏 默認為0就行 不需要太大

  x:

  y: 這裏的x y代表的是圖形的坐標 0 0 就是第一行第一列 0 1 第一行第二列 依次類推(這裏需要依靠前面設置的hsize,vsize不能超過了),我在測試的時候這裏面體比較大,想要把多個監控放在一行:解決辦法是x相同y不同

  auth : 認證信息

  id : 識別方法

了解了方法之後我們發現想要添加聚合圖形,我們得 auth 以及 resourceid 這兩個重要參數!所以我們第一步就是去找到這兩個參數!!

    def __init__(self):
        self.url = http://192.168.230.164/zabbix/api_jsonrpc.php
        self.headers = {Content-Type: application/json}
        auth = {
            "jsonrpc": "2.0",
            
"method": "user.login", "params": { "user": "Admin", ###驗證 "password":"zfno11" }, "id": 1, "auth":None, } response = requests.post(self.url, data=json.dumps(auth), headers=self.headers) print(response.text) authid = json.loads(response.text)[result] ### auth的id print(authid)

上面的方法得到了authid

然後獲取resourceid 也就是圖形的ID

 def get_graid(self,authid):
        neirong={
                "jsonrpc": "2.0",
                "method": "graph.get",
                "params": {
                    "output": "extend",
                    "hostids": 10255,
                    "sortfield": "name"
                },
                "auth": authid,
                "id": 1
        }
        response1 = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)print(response1.text)

這裏面需要填寫我們的hostid hostid的獲取方法在上一章裏面已經提到了,這裏直接用就行了。

然後我們:

 def create_screen(self,authid):
        neirong={
                "jsonrpc": "2.0",
                "method": "screen.create",
                "params": {
                    "name": "Graphs12",
                    "hsize": 2,
                    "vsize": 2,
                    "screenitems": [
                        {
                            "resourcetype": 0,
                            "resourceid": "790",
                            "rowspan": 2,
                            "colspan": 2,
                            "x" : 0,
                            "y" : 0
                        },
                        {
                            "resourcetype": 0,
                            "resourceid": "793",
                            "x" :1,
                            "y" :0
                        }
                    ]
                },
                "auth": authid,
                "id": 1
            }
        response1 = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)
        print(response1)
        print(response1.text)
        print("OK")

通過這樣就可以把screen的圖形加上了!

  

    

利用python3 調用zabbix接口完成批量加聚合圖形(screens)