API常用接口:
user.login,用户登录
host.get(create|delete|update),主机操作
hostgroup.get(create|delete|update),主机组操作
item.get(create|delete|update),监控项目操作
history.get,历史数据查询
event.get,事件查询
trigger.get,触发器查询
具体实现
1.获取身份令牌
在访问Zabbix内部的任何数据之前,需要登录并获得身份验证令牌。可以使用user.login方法来完成
如果以标准ZabBix的Admin用户登录。那么JSON请求将是这样的:
[root@server1 ~]# vim zabbix-api
[root@server1 ~]# cat zabbix-api
curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
##-s 静默模式,不输出任何东西;curl默认的HTTP动词是GET,使用`-X`参数可以支持其他动词
{
"jsonrpc": "2.0", ##标准的JSON RPC参数以标示协议版本
"method": "user.login", ##获取接口方法名
"params": {
"user": "Admin",
"password": "zabbix" ##zabbix系统监控的用户名和密码
},
"id": 1,
"auth": null ##用户的身份令牌,因为还没有获取所以为null。
}' http://192.168.122.101/zabbix/api_jsonrpc.php | python -m json.tool
###python..将其标准化输出
##使用post方法向该网址发送此json对象,api_jsonrpc.php是调用api的php脚本,可以安装可视化前端目录查看
[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ./zabbix-api
2.检索被检控的主机(通过名称获取数据)
使用host.get方法来获取主机。
利用刚才获取的身份令牌,访问zabbix中的数据,下面实现host.get方法检索所有已配置主机的ID,主机名及其接口。
[root@server1 ~]# cat zabbix-api
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "9seaa58668b47oc994856904c5f04c5f04d19",
"id": 1
}' http://192.168.122.101/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
3 删除监控中的主机
使用host.delete方法来删除主机。
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10264"
],
"auth": "9seaa58668b47oc994856904c5f04c5f04d19",
"id": 1
}' http://192.168.122.101/zabbix/api_jsonrpc.php | python -m json.tool
上篇实验我们最后不是做了个自动注册嘛,要先停用它,不然删除了又注册上去了!!
xxxx
xxxxx