1. 程式人生 > >zabbix API基本使用方法介紹

zabbix API基本使用方法介紹

zabbix api python 自動化 token

前言:

以下內容根據zabbix 3.2官方文檔總結:https://www.zabbix.com/documentation/3.2/manual/api

此文檔只是簡單的介紹API的基本使用,關於一些完整功能或高級功能將在後續的博文中展現


調用Zabbix api使用的是HTTP的POST請求方式

其中請求的頭部為:

{"Content-Type": "application/json-rpc"}

請求的URL為:

http://zabbix.aek.com/api_jsonrpc.php

如果url中包含目錄需要把目錄寫上,如http://zabbix.aek.com/zabbix/api_jsonrpc.php,最後就是請求的數據(data),比如獲取Token,創建主機,獲取主機ID,獲取模板ID,獲取組ID,刪除主機等。


接下以以Python調用 API為例,例出用法案例:

測試連接是否成功

#!/usr/bin/python
#coding:utf:8

import requests
import json

url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
header = {"Content-Type": "application/json-rpc"}
data = {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":None,"params":{}}
request = requests.post(url=url, headers=header, data=json.dumps(data))
print(request.content)

上面的data用來測試是否可連接成功,官方文檔中auth的值為null,但在python中null用None表示,所以需要改成None。

成功後返回值大概如下:會顯示zabbix版本

{"jsonrpc":"2.0","result":"3.2.3","id":1}

獲取Token

#!/usr/bin/python
#coding:utf:8

import requests
import json

url = "http://zabbix.aek.com/zabbix/api_jsonrpc.php"
header = {"Content-Type": "application/json-rpc"}
data = {"jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "Admin",
            "password": "zabbix"
        },
        "id": 1,
        "auth": None
        }
request = requests.post(url=url, headers=header, data=json.dumps(data))
print(request.content)

成功後返回值如下:會返回一個Token

{"jsonrpc":"2.0","result":"391277f070a3ebc5b2afe9cf466cb74c","id":1}

最後以一個完整的Python腳本通過zabbix API獲取所有主機的信息為例:

#!/usr/bin/python
#coding:utf:8

import requests
import json

class Zabbix:

    def __init__(self, url, header, username, password):

        self.url = url
        self.header = header
        self.username = username
        self.password = password

    def getToken(self):
        #獲取Token並返回字符Token字符串

        data = {"jsonrpc": "2.0",
                "method": "user.login",
                "params": {
                    "user": self.username,
                    "password": self.password
                },
                "id": 1,
                "auth": None
                }
        token = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
        return json.loads(token.content)["result"]
    
    def getAllHost(self):
        #獲取所有主機信息

        data = {"jsonrpc": "2.0",
                "method": "host.get",
                "params": {
                    "output": [
                        "hostid",
                        "host",
                    ],
                    "selectGroups": "extend",
                    "selectInterfaces": [
                        "interfaceid",
                        "ip"
                    ]
                },
                "id": 2,
                "auth": self.getToken()
                }
        hosts = requests.post(url=self.url, headers=self.header, data=json.dumps(data))
        return json.loads(hosts.content)["result"]


if __name__ == "__main__":
    header = {"Content-Type": "application/json-rpc"}
    url="http://zabbix.aek.com/zabbix/api_jsonrpc.php"
    test = Zabbix(url=url, header=header, username="Admin", password="zabbix")
    print(test.getAllHost())

通過以上的學習相信大家對Zabbix API已經有一個初步的認識,後面將會通過API去完成主機的自動添加,自動化報表等使用

本文出自 “藍色_風暴” 博客,請務必保留此出處http://270142877.blog.51cto.com/12869137/1955120

zabbix API基本使用方法介紹