1.概述
- Zabbix API允許你以編程方式檢索和修改Zabbix的配置,並提供對歷史數據的訪問。它廣泛用於:
- 創建新的應用程序以使用Zabbix;
- 將Zabbix與第三方軟件集成;
- 自動執行常規任務。
- Zabbix API是基於Web的API,作爲Web前端的一部分提供。它使用JSON-RPC 2.0協議,這意味着兩件事:
- 該API包含一組獨立的方法;
- 客戶端和API之間的請求和響應使用JSON格式進行編碼。
- 大多數API至少包含四種方法: get, create, update 和 delete ,分別是檢索,創建,更新和刪除數據,但是某些API提供一套完全不同的一組方法。
2.獲取身份驗證令牌
[root@server1 ~]# vim zabbix-api
chomd +x zabbix.api
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "06335a8a530deef28f0f74802dad5b9d"
}
[root@server1 ~]# cat zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix" ##如果修改了密碼,要同步更改
},
"id": 1,
"auth": null
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool
參數解釋:
jsonrpc - API使用的JSON-RPC協議的版本; Zabbix API實現的JSON-RPC版本是2.0;
method - 被調用的API方法名;
params - 將被傳遞給API方法的參數;
id - 請求的任意標識符;
auth -用戶認證令牌; 因爲我們還沒有一個,它的設置null。
3.檢索主機,獲取已配置主機的ID,主機名和接口
[root@server1 ~]# vim zabbix-api
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"auto_compress": "1",
"available": "1",
"description": "",
"disable_until": "0",
"error": "",
"errors_from": "0",
"flags": "0",
"host": "Zabbix server",
"hostid": "10084",
"ipmi_authtype": "-1",
"ipmi_available": "0",
"ipmi_disable_until": "0",
"ipmi_error": "",
"ipmi_errors_from": "0",
"ipmi_password": "",
"ipmi_privilege": "2",
"ipmi_username": "",
"jmx_available": "0",
"jmx_disable_until": "0",
"jmx_error": "",
"jmx_errors_from": "0",
"lastaccess": "0",
"maintenance_from": "0",
"maintenance_status": "0",
"maintenance_type": "0",
"maintenanceid": "0",
"name": "Zabbix server",
"proxy_address": "",
"proxy_hostid": "0",
"snmp_available": "0",
"snmp_disable_until": "0",
"snmp_error": "",
"snmp_errors_from": "0",
"status": "0",
"templateid": "0",
"tls_accept": "1",
"tls_connect": "1",
"tls_issuer": "",
"tls_psk": "",
"tls_psk_identity": "",
"tls_subject": ""
},
{
"auto_compress": "1",
"available": "1",
"description": "",
"disable_until": "0",
"error": "",
"errors_from": "0",
"flags": "0",
"host": "server2",
"hostid": "10265",
"ipmi_authtype": "-1",
"ipmi_available": "0",
"ipmi_disable_until": "0",
"ipmi_error": "",
"ipmi_errors_from": "0",
"ipmi_password": "",
"ipmi_privilege": "2",
"ipmi_username": "",
"jmx_available": "0",
"jmx_disable_until": "0",
"jmx_error": "",
"jmx_errors_from": "0",
"lastaccess": "0",
"maintenance_from": "0",
"maintenance_status": "0",
"maintenance_type": "0",
"maintenanceid": "0",
"name": "server2",
"proxy_address": "",
"proxy_hostid": "0",
"snmp_available": "0",
"snmp_disable_until": "0",
"snmp_error": "",
"snmp_errors_from": "0",
"status": "0",
"templateid": "0",
"tls_accept": "1",
"tls_connect": "1",
"tls_issuer": "",
"tls_psk": "",
"tls_psk_identity": "",
"tls_subject": ""
},
{
"auto_compress": "1",
"available": "1",
"description": "",
"disable_until": "0",
"error": "",
"errors_from": "0",
"flags": "0",
"host": "server3",
"hostid": "10267",
"ipmi_authtype": "-1",
"ipmi_available": "0",
"ipmi_disable_until": "0",
"ipmi_error": "",
"ipmi_errors_from": "0",
"ipmi_password": "",
"ipmi_privilege": "2",
"ipmi_username": "",
"jmx_available": "0",
"jmx_disable_until": "0",
"jmx_error": "",
"jmx_errors_from": "0",
"lastaccess": "0",
"maintenance_from": "0",
"maintenance_status": "0",
"maintenance_type": "0",
"maintenanceid": "0",
"name": "server3",
"proxy_address": "",
"proxy_hostid": "0",
"snmp_available": "0",
"snmp_disable_until": "0",
"snmp_error": "",
"snmp_errors_from": "0",
"status": "0",
"templateid": "0",
"tls_accept": "1",
"tls_connect": "1",
"tls_issuer": "",
"tls_psk": "",
"tls_psk_identity": "",
"tls_subject": ""
}
]
}
[root@server1 ~]#
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"filter": {
"host": [
"Zabbix server",
"server2",
"server3"
]
}
},
"id": 1, ##api編號
"auth": "abbc36abcb26d41b1f2e8359622a325f" ##上面獲取的令牌
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool
4.刪除主機server2
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10265" ##上面檢索獲取的server2的hostid
]
}
}
[root@server1 ~]# cat zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265" ##server2的hostid
],
"id": 1,
"auth": "abbc36abcb26d41b1f2e8359622a325f"
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]#
5.創建主機
[root@server1 ~]# vim zabbix-api
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10268"
]
}
}
[root@server1 ~]# cat zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host":"server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.31.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" ##查看server3的組
}
],
"templates": [
{
"templateid": "10001" ##創建的時候
}
]
},
"id": 1,
"auth": "abbc36abcb26d41b1f2e8359622a325f"
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]#
創建成功