Python调用Zabbix Api入门实战

一、 Zabbix API认证实战

Zabbix Api
Zabbix具有丰富的Api功能
可通过Api添加主机组、主机、获取监控数据等
使用Python操作Zabbix Api

API使用帮助文档
(https://www.zabbix.com/documentation/3.0/manual/api)

登录认证说明zabbix_base.py

import json
from urllib.request import Request,urlopen
zabbix_url="http://192.168.67.132/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}

zabbix_user   = "Admin"
zabbix_pass   = "xxxxxx"
data = {
  "jsonrpc":"2.0",
  "method":"user.login",
  "params":{
    "user":zabbix_user,
    "password":zabbix_pass
  },
  "id":0  #任意
}

data = json.dumps(data).encode('utf-8')
req = Request(zabbix_url, headers=zabbix_header, data=data)
#print(req)  #
result = urlopen(req).read()
print(result) #获取到的Token值

登录结果说明

#{"jsonrpc":"2.0","result":"xxx","id":0}
#{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Login name or password is incorrect."},"id":0}

请求Zabbix进行封装

import json
from urllib.request import Request,urlopen
zabbix_url = "http://192.168.67.132/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}

def zabbix_api_common(data):
  data = json.dumps(data).encode('utf-8')
  req = Request(zabbix_url, headers=zabbix_header, data=data)
  # print(req)  #
  result = urlopen(req).read()
  return json.loads(result)

zabbix_user   = "Admin"
zabbix_pass   = "xxxxxx"
data = {
  "jsonrpc":"2.0",
  "method":"user.login",
  "params":{
    "user":zabbix_user,
    "password":zabbix_pass
  },
  "id":0
}

if __name__ == "__main__":
  result = zabbix_api_common(data)
  print(result["result"])

对Zabbix登录进行封装

import json
from urllib.request import Request,urlopen
zabbix_url = "http://192.168.67.132/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}

def zabbix_api_common(data):
  data = json.dumps(data).encode('utf-8')
  req = Request(zabbix_url, headers=zabbix_header, data=data)
  # print(req)  #
  result = urlopen(req).read()
  return json.loads(result)

def get_token():
    zabbix_user   = "Admin"
    zabbix_pass   = "xxxxxx"
    data = {
      "jsonrpc":"2.0",
      "method":"user.login",
      "params":{
        "user":zabbix_user,
        "password":zabbix_pass
      },
      "id":0
    }
    result = zabbix_api_common(data)
    return (result["result"])

if __name__ == "__main__":
  result = get_token()
  print(result)

二、Zabbix Api获取主机信息

API参考手册:(https://www.zabbix.com/documentation/3.0/manual/api/reference/hostgroup/get)

Zabbix Api获取主机组zabbix_group.py

import zabbix_base
token = zabbix_base.get_token()
data = {
    "jsonrpc": "2.0",
    "method": "hostgroup.get",
    "params": {
        "output": "extend",
    },
    "auth": token,
    "id": 0
}
result = zabbix_base.zabbix_api_common(data)
print(result)

只获取组ID+组名字

import zabbix_base
token = zabbix_base.get_token()
data = {
    "jsonrpc": "2.0",
    "method": "hostgroup.get",
    "params": {
        "output": ['name'],
    },
    "auth": token,
    "id": 0
}
result = zabbix_base.zabbix_api_common(data)
print(result)
for i in result['result']:
    print(i)

加入过滤,官方文档

data = {
    "jsonrpc": "2.0",
    "method": "hostgroup.get",
    "params": {
        "output": ['name'],
        "filter": {
            "name": [
                "shijiange"
            ]
        }
    },
    "auth": token,
    "id": 0

查询主机组及主机信息zabbix_group.py

data = {
    "jsonrpc": "2.0",
    "method": "hostgroup.get",
    "params": {
        "output": ['name'],
        "selectHosts": ["host"],
    },
    "auth": token,
    "id": 0
}

三、Zabbix Api获取模板信息

Zabbix Api获取模板信息

import zabbix_base

token = zabbix_base.get_token()
data = {
    "jsonrpc": "2.0",
    "method": "template.get",
    "params": {
        "output": ["host"],
    },
    "auth": token,
    "id": 1
}
result = zabbix_base.zabbix_api_common(data)
for i in result['result']:
    print(i)

四、Zabbix Api创建监控主机

Api添加主机组

groupname = "shijiangeapigroup"
data={
  "jsonrpc": "2.0",
  "method": "hostgroup.create",
  "params": {
    "name": groupname
  },
  "auth": token,
  "id": 1
}

Api添加主机,如果是Linux建议大家还是自动注册

hostname='zabbixapihost'
hostip = '1.1.1.1'
groupid = 24
templateid="10001"
data = {
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": hostname,
        "interfaces": [{
            "type": 1,
            "main": 1,
            "useip": 1,
            "ip": hostip,
            "dns": "",
            "port": "10050"
        }],
        "groups": [{
            "groupid": groupid
        }],
        "templates": [{
        "templateid": templateid
        }],
    },
    "auth": token,
    "id": 1
}
interfaces接口解析.png

你可能感兴趣的:(Python调用Zabbix Api入门实战)