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 ~]#
创建成功