zabbix api的使用


 

1、zabbix api介紹

Zabbix API允許以編程方式檢索和修改Zabbix的配置,並提供對歷史數據的訪問。它廣泛用於:

創建新的應用程序以使用Zabbix

將Zabbix與第三方軟件集成

自動執行常規任務

Zabbix API是基於Web的API,作為Web前端的一部分提供。它使用JSON-RPC 2.0協議,這意味着兩件事:

該API包含一組獨立的方法;

客戶端和API之間的請求和響應使用JSON格式進行編碼。

調用api的過程:發送一個http請求,請求方法,提交數據,請求url

zabbix api的使用可以查閱官方文檔https://www.zabbix.com/documentation/3.4/zh/manual/api

 

2、獲取token

使用curl命令模擬登錄獲取到一個token

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "Admin",

"password": "zabbix"

},

"id": 1,

"auth": null

}' http://10.0.0.63/zabbix/api_jsonrpc.php

這里獲取到的token值為29752350d3a88fc18e79b3e655b1506b

或者執行以下shell腳本獲取token

[root@zabbix scripts]# vim zabbix-get-token.sh

#!/bin/bash

admin=Admin #zabbix用戶

pass=zabbix #密碼

ZBX='10.0.0.63' #zabbix-server的地址

curl -s -X POST -H 'Content-Type:application/json' -d'

{

"jsonrpc": "2.0",

"method": "user.login",

"params": {

"user": "'$admin'",

"password": "'$pass'"

},

"id": 1

"auth": null

}' http://$ZBX/zabbix/api_jsonrpc.php|grep -Po 'result[" :]+\K[^"]+'

 

3、格式及參數說明

zabbix-api的json格式主要包括以下內容:

jsonrpc - API使用的JSON-RPC協議的版本; Zabbix API實現JSON-RPC版本2.0;

method - 調用的API方法;

params - 將被傳遞給API方法的參數;

auth -用戶認證令牌;

id - 請求的任意標識符;

zabbix表結構

hosts主要表結構和各字段的意思

hostid 主機ID/模版ID readonly

proxy_hostid 代理主機ID,即這台主機通過該代理主機去監控

host 主機名,監控agent端ID字段

status 主機狀態

0 已啟用,監視這台主機

1 停用的,不監視這台主機

3 模版

5 主動模式 創建代理時使用

6 被動模式 創建代理時使用

available 客戶端agent主機是否可用 readonly

0 未知或模版

1 可用

2 不可用

description 描述主機

disable_until 下一次輪詢一個不可用主機的時間,默認只讀readonly

ipmi_authtype 認證算法

-1 默認

0 無

1 MD2

2 MD5

4 Straight

5 OEM

6 RMCP+

ipmi_privilege 特權級別

1 回調

2 用戶 默認

3 操作者

4 管理者

5 OEM

ipmi_available 可用的ipmiagent

0 未知

1 可用

2 不可用

ipmi_disable_until ipmi不可用時下一次的輪詢時間

ipmi_error ipmi不可用的錯誤信息

ipmi_errors_from ipmi不可用狀態從什么時候開始

ipmi_password ipmi 密碼

ipmi_username ipmi用戶名

jmx_available 可用的jmxagent

0 未知

1 可用

2 不可用

jmx_disable_until 當jmx不可用時下一次輪詢當時間

jmx_error jmx不可用錯誤信息

jmx_errors_from jmx 不可用狀態開始時間

maintenance_from 資產維護開始時間

maintenance_status 生效當狀態

0 不維護

1 維護生效

maintenance_type 生效維護的類型

0 通過數據收集維護 默認

1 非數據收集維護

maintenanceid 維護的ID,如果當前主機處於維護狀態,否則為null

snmp_available snmp是否可用

0 未知

1 可用

2 不可用

snmp_disable_until 當snmp不可用時下一次輪詢時間

snmp_error 不可用時錯誤信息

snmp_errors_from 錯誤開始時間

error 當agent不可用時顯示當錯誤信息

error_from 故障時間 當agent不可用時開始的時間

name 主機顯示的名稱,即可見名稱,默認是用host字段是值填充

flags 主機來源

0 表示普通的主機

4 表示自動發現的主機

inventory_mode 主機資產類型

-1 禁用

0 手動,默認值

自動

監控項items

itemid 監控項ID

type 監控項類型

0 Zabbix 客戶端,

1 SNMPv1 客戶端,

2 Zabbix采集器,

3 簡單檢查,

4 SNMPv2 客戶端,

5 Zabbix內部,

6 SNMPv3 客戶端,

7 Zabbix客戶端(主動式),

8 Zabbix整合,

10 外部檢查,

11 數據庫監控,

12 IPMI客戶端,

13 SSH 客戶端,

14 TELNET客戶端,

15 可計算的,

16 JMX agent代理程序,

17 SNMP trap

hostid 關聯主機ID

name 監控項名稱

key_ 監控項key值

delay 間隔/秒

history 歷史數據保留時間/天

trends 趨勢數據保留時間/天 默認365天

status 監控項啟用狀態

0 啟用

1 禁用

value_type 數據類型,對應的存放歷史數據表

0 history表 numeric float

1 history_str表 character

2 history_log表 log

3 history_uint表 numeric unsigned

4 history_text表 text

authtype ssh認證方法,只有通過ssh代理方式時使用

0 密碼

1 public key

units 數據類型單位

data_type 數據類型

0 decimal 十進制

1 octal 八進制

2 hexadecimal 十六進制

3 boolean 布爾

delay_flex 自定義間隔

delta 存儲的值

0 (default) as is

1 Delta, speed per second

2 Delta, simple change

error 如果監控項有問題會自動更新這個錯誤信息 readonly

history 監控項保持的歷史數據時長,默認90天,單位天

formula 公式,自定義乘數

1 默認值

lastclock 監控項最后一次更新時間

logtimefmt 格式化日志時間

templateid 監控項對應的父模版ID,該ID自關聯,模版對應的為hostid相當於模版分組

flags 監控項來源

0 普通

4 自動發現

interfaceid 網卡IP,對應interface表interfaceid

params 額外的參數類型取決於監控項

針對ssh和telnet監控項 執行腳本

數據庫監控項 執行sql

計算類型 執行公式

port 針對snmp監控項,端口監控

password 密碼認證,針對簡單檢查,ssh,telnet,數據庫監視,jmx監控項

description 監控項描述信息

state 該監控項是否適用

0 支持

1不支持

 

4、使用zabbix api進行操作示例

4.1 創建主機

curl -s -X POST -H "Content-Type: application/json" -d '

{

"jsonrpc": "2.0",

"method": "host.create",        #指定方法創建主機

"params": {

"host": "10.0.0.51",        #主機ip

"interfaces": [

{

"type": 1,        #接口類型1代表agent接口

"main": 1,

"useip": 1,        #1表示使用ip

"ip": "10.0.0.51",    #ip地址

"dns": "",

"port": "10050"    #端口

}

],

"groups": [

{

"groupid": "9"    #id

}

],

"templates": [

{

"templateid": "10001"        #模板id

}

]

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.62/zabbix/api_jsonrpc.php

執行上述命令即可在命令行添加一台監控主機,可以進一步編寫shell腳本批量創建主機

[root@zabbix scripts]# vim hostadd.sh

#/bin/bash

for n in `seq -f 10.0.0.%0g 60 100`

do

curl -s -X POST -H "Content-Type: application/json" -d '

{

"jsonrpc": "2.0",

"method": "host.create",    

"params": {

"host": "'$n'",

"interfaces": [

{

"type": 1,

"main": 1,

"useip": 1,

"ip": "'$n'",

"dns": "",

"port": "10050"    

}

],

"groups": [

{

"groupid": "9"

}

],

"templates": [

{

"templateid": "10001"    

}

]

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.62/zabbix/api_jsonrpc.php

done

 

4.2 刪除主機

curl -s -X POST -H "Content-Type: application/json" -d '

{

"jsonrpc": "2.0",

"method": "host.delete",

"params": [

"10117"    #主機id

],

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.63/zabbix/api_jsonrpc.php

執行上述命令即可在命令行刪除一台監控主機,可以進一步編寫shell腳本批量刪除上面創建的主機

[root@zabbix scripts]# vim hostdel.sh

#/bin/bash

curl -s -X POST -H "Content-Type: application/json" -d '

{

"jsonrpc": "2.0",

"method": "host.get",    #利用host.get方法得到主機id

"params": {

"output": "hostid",

"selectGroups": "groupid"

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.63/zabbix/api_jsonrpc.php >/tmp/a.txt

for n in `seq 2 43`

do

hostid=`cat /tmp/a.txt|jq '.result['$n'].hostid'|sed 's#"##g'`        #過濾出上面批量添加的主機id

curl -s -X POST -H "Content-Type: application/json" -d '

{

"jsonrpc": "2.0",

"method": "host.delete",        #利用host.delete方法批量刪除主機

"params": [

"'$hostid'"

],

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.63/zabbix/api_jsonrpc.php

done

 

4.3 創建一個用戶

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.create",        #利用user.create方法創建用戶

"params": {

"alias": "test",                #用戶名

"passwd": "123456",            #密碼

"usrgrps": [

{

"usrgrpid": "7"                #用戶所屬組id

}

]

},

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.63/zabbix/api_jsonrpc.php

 

4.4 刪除一個用戶

curl -s -X POST -H 'Content-Type:application/json' -d '

{

"jsonrpc": "2.0",

"method": "user.delete",        #利用user.delete方法刪除用戶

"params": [

"3"                            #用戶id

],

"auth": "29752350d3a88fc18e79b3e655b1506b",

"id": 1

}' http://10.0.0.63/zabbix/api_jsonrpc.php

 

部分內容參考來源:https://www.qstack.com.cn/archives/228.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM