什么是API ?
API ( Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
API查看,删除,创建监控主机
(1)查看zabbix系统监控的API接口以及API脚本方式获取身份令牌
[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.254.10/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": "edbf01f09d5ec3bebc1a0dbf1dbcc60b" #获取的身份令牌
}
(2)利用身份牌检索现有的主机
[root@server1 ~]# vim zabbix-api
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,
"auth": "edbf01f09d5ec3bebc1a0dbf1dbcc60b" #利用刚才获取的身份令牌
}' http://172.25.254.10/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
(3)停止上个实验的自动注册
(4)删除监控中的主机
[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": "127f5e4d76de66a7fd9ab082a59e38"
}' http://172.25.2.1/zabbix/api_jsonrpc.php | python -m json.tool
响应:
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10307"
]
}
}
(5)创建监控主机
[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.254.20",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" #主机组id
}
],
"templates": [
{
"templateid": "10001" #模版号
}
]
},
"id": 1,
"auth":"edbf01f09d5ec3bebc1a0dbf1dbcc60b"
}' http://172.25.254.10/zabbix/api_jsonrpc.php | python -m json.tool
响应:
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10267"
]
}
}
模板号(templateid)和组号(groupid)的获取方法