zabbix的API

image.png

api体系:  cobbler的api,zabbix的api,saltstack的api

不仅有api还有吩咐的例子,只有会简单的python就可以了

在cmdb中录入ip,角色,dns自动解析,cobbler自动装机。zabbix自动添加这个角色的模板。

复杂的cmdb至少有五六十列,根据不同的维度进行不同的划分。


api的共性就是先是获取tocken然后带着tocken工作。


 API最大的好处有两点:一是连接世界,二是避免重复。
我们身处的时代到处是分享、转载、评论,这里面的核心都是API的使用,可以说API无处不在。同时对于产品设计而言,API既可以丰富产品功能,又能使开发更加方便,避免重复造轮子

更多api调用例子参考zabbix手册:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/host/get
1、 获取主机的信息
curl -s -X POST -H 'Content-Type: application/json' -d '           
{                                                                                
    "jsonrpc": "2.0",                                                                  
    "method": "host.get",
    "params": {
    "filter": {
            "host": [
                "888Y-6F-bangong-1"
            ]
        }
    },
    "auth": "2bed9416d8773ed714a300101d7ccd78",
    "id": 1
}' http://10.108.15.231/zabbix/api_jsonrpc.php | python -m json.tool


curl -s -X POST -H 'Content-Type: application/json' -d '           
{                                                                                
    "jsonrpc": "2.0",                                                                  
    "method": "host.get",
    "params": {
    "filter": {
            "host": [
                "888Y-6F-bangong-1"
            ]
        }
    },
    "auth": "2bed9416d8773ed714a300101d7ccd78",
    "id": 1
}' http://10.108.15.231/zabbix/api_jsonrpc.php | python -m json.tool


2、获取主机组的信息;
curl -s -X POST -H 'Content-Type: application/json' -d '           
{                                                                                
    "jsonrpc": "2.0",                                                                  
    "method": "host.get",
    "params": {
    "output": ["hostid"],
        "selectGroups": "extend",
        "filter": {
            "host": [
                "Zabbix server"
            ]
        }
    },
    "auth": "2bed9416d8773ed714a300101d7ccd78",
    "id": 1
}' http://10.108.15.231/zabbix/api_jsonrpc.php | python -m json.tool


加主机也是一个事件。

自动注册可以开启或者关闭。

自动发现有个坑比如vip怎么算,而且link的模板很少,所以真正做自动化我们都是采用zabbix的api(服务化),可以管理或者查询,

id就是这次请求的标识,不是主机的标识

zabbix中的filter是过滤的


通过zabbix的api判断是否添加监控是很容易的

从0开始的zabbix API生活_第1张图片


Pyzabbix:

pyzabbix的定制化APIhttps://gitee.com/kbsonlong/pyzabbix

https://www.cnblogs.com/richardzgt/articles/7889404.html#_label1

pyzabbixzabbixAPI第三方python包装

from pyzabbix import ZabbixAPI

zapi = ZabbixAPI("http://10.108.15.231/zabbix/api_jsonrpc.php")

zapi.login("Admin","zabbix")

print("Connected to Zabbix API Version %s" % zapi.api_version())


一个API的库:

#!/usr/bin/env python2.7
#coding=utf-8
import json
import urllib2
# based url and required header
url = "http://monitor.example.com/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
# auth user and password
data = json.dumps(
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": "Admin",
    "password": "zabbix"
},
"id": 0
})
# create request object
request = urllib2.Request(url,data)
for key in header:
    request.add_header(key,header[key])
# auth and get authid
try:
    result = urllib2.urlopen(request)
except URLError as e:
    print "Auth Failed, Please Check Your Name And Password:",e.code
else:
    response = json.loads(result.read())
    result.close()
    print "Auth Successful. The Auth ID Is:",response['result']
from pyzabbix.api import ZabbixAPI
 
# Create ZabbixAPI class instance
zapi = ZabbixAPI(url='http://10.108.15.231/zabbix/api_jsonrpc.php', user='Admin', password='zabbix')
 
# Get all monitored hosts
result1 = zapi.host.get(monitored_hosts=1, output='extend')
 
# Get all disabled hosts
result2 = zapi.do_request('host.get',
                          {
                              'filter': {'status': 1},
                              'output': 'extend'
                          })
 
# Filter results
hostnames1 = [host['host'] for host in result1]
hostnames2 = [host['host'] for host in result2['result']]
 
# Logout from Zabbix
zapi.user.logout()



与postman在一起的6月

从0开始的zabbix API生活_第2张图片

一般把一个工程当作是一个collections。然后可以创建文件夹(实现请求的分类与归档)
json格式的请求
get操作的请求参数已经在url中携带了
body是作为请求体来传输内容

从0开始的zabbix API生活_第3张图片

从0开始的zabbix API生活_第4张图片

 binary就是用来上传文件的

form data选择是file就可以上传文件
使用签发的tocken与参数传递
头域信息中tocken的设置


postman到zabbix家

从0开始的zabbix API生活_第5张图片

从0开始的zabbix API生活_第6张图片


POST和GET都是向服务器提交数据,并且都会从服务器获取数据。
区别:
1、传送方式:get通过地址栏传输,post通过报文传输。

2、传送长度:get参数有长度限制(受限于url长度),而post无限制

CURL命令模拟Http Get/Post请求


post方法简单使用

  1、带数据的post
  2、带header的post
  3、带json的post
  4、带参数的post
  5、普通文件上传
  6、定制化文件上传
  7、多文件上传