一、API
API ( Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
二、Zabbix API 综述
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
- 该API包含一组独立的方法;
- 客户端和API之间的请求和响应使用JSON格式进行编码。
有关协议和JSON的更多信息可以在 JSON-RPC 2.0 规范 和 JSON 格式主页中找到。
三、API远程 查看/创建/删除 监控主机
1. 查看监控主机
步骤一:查看zabbix系统监控的API接口以及API脚本方式获取身份令牌
user.login
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0", #标准的JSON RPC参数以标示协议版本
"method": "user.login", #获取接口方法名
"params": {
"user": "Admin",
"password": "zabbix" #zabbix系统监控的用户名和密码
},
"id": 1,
"auth": null #用户的身份令牌,因为还没有获取所以为null。
}' http://172.25.42.1/zabbix/api_jsonrpc.php | python -m json.tool #python..将其标准化输出
[root@server1 ~]# chmod +x zabbix-api #给脚本添加执行权限
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "02456586a0b022f6bcee6165f1a279e2" #获取的身份令牌
}
步骤二:利用身份牌检索现有的主机
"method": "host.get"
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output":[
"hostid",
"host"
],
"selectInterfaces":[
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "02456586a0b022f6bcee6165f1a279e2"
}' http://172.25.42.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
停止上个实验的自动注册
2. 删除监控中的主机
步骤一:编辑配置文件
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10307" #要删除主机的hostid
],
"id": 1,
"auth": "02456586a0b022f6bcee6165f1a279e2"
}' http://172.25.42.1/zabbix/api_jsonrpc.php | python -m json.tool
步骤二:响应
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10307"
]
}
}
此时 server3 已经被删除了
3. 创建监控主机
步骤一:先找到 templateid
步骤二:编写配置文件
[root@server1 ~]# vim 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.42.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" #主机组id
}
],
"templates": [
{
"templateid": "10001" #模版号
}
]
},
"id": 1,
"auth":"02456586a0b022f6bcee6165f1a279e2"
}' http://172.25.42.1/zabbix/api_jsonrpc.php | python -m json.tool
步骤三:响应
[root@server1 ~]# ./zabbix-api
{
"id": 2,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10309"
]
}
}
步骤四:刷新网页,显示 server3已经被创建成功