從0開始的zabbix API生活


zabbix的API

image.png

api體系:  cobbler的api,zabbix的api,saltstack的api
php

不只有api還有吩咐的例子,只有會簡單的python就能夠了html

在cmdb中錄入ip,角色,dns自動解析,cobbler自動裝機。zabbix自動添加這個角色的模板。
python

複雜的cmdb至少有五六十列,根據不一樣的維度進行不一樣的劃分。git


api的共性就是先是獲取tocken而後帶着tocken工做。json


 API最大的好處有兩點:一是鏈接世界,二是避免重複。
咱們身處的時代處處是分享、轉載、評論,這裏面的核心都是API的使用,能夠說API無處不在。同時對於產品設計而言,API既能夠豐富產品功能,又能使開發更加方便,避免重複造輪子api

更多api調用例子參考zabbix手冊:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/host/get
一、 獲取主機的信息
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


二、獲取主機組的信息;
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


加主機也是一個事件。服務器

自動註冊能夠開啓或者關閉。app

自動發現有個坑好比vip怎麼算,並且link的模板不多,因此真正作自動化咱們都是採用zabbix的api(服務化),能夠管理或者查詢,
python2.7

id就是此次請求的標識,不是主機的標識
curl

zabbix中的filter是過濾的


經過zabbix的api判斷是否添加監控是很容易的

image.png


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月

image.png

通常把一個工程看成是一個collections。而後能夠建立文件夾(實現請求的分類與歸檔)
json格式的請求
get操做的請求參數已經在url中攜帶了
body是做爲請求體來傳輸內容

image.png

image.png

 binary就是用來上傳文件的

form data選擇是file就能夠上傳文件
使用簽發的tocken與參數傳遞
頭域信息中tocken的設置


postman到zabbix家

image.png

image.png


POST和GET都是向服務器提交數據,而且都會從服務器獲取數據。
區別:
一、傳送方式:get經過地址欄傳輸,post經過報文傳輸。

二、傳送長度:get參數有長度限制(受限於url長度),而post無限制

CURL命令模擬Http Get/Post請求


post方法簡單使用

  一、帶數據的post  二、帶header的post  三、帶json的post  四、帶參數的post  五、普通文件上傳  六、定製化文件上傳  七、多文件上傳

相關文章
相關標籤/搜索