基本概念:
API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。
应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。
API的大致工作流如下:
(1)API 采用JSON-RPC实现。这意味着调用任何函数,都需要发送POST请求,输入输出数据都是以JSON格式
(2)准备JSON对象,它描述了你想要做什么(创建主机,获取图像,更新监控项等)
(3)获取JSON格式响应
1.编写脚本,查看zabbix监控系统的接口
(1)编写脚本
[root@server1 ~]# vim 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.19.1/zabbix/api_jsonrpc.php
(2)给脚本加可执行权限
[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ll zabbix-api
-rwxr-xr-x 1 root root 264 May 12 09:39 zabbix-api
(3)执行脚本,这种格式的不方便查看
[root@server1 ~]# ./zabbix-api
{"jsonrpc":"2.0","result":"b65c94e07a2eb01f6a3b990aa1fbe591","id":1}
(4)添加json模块,以json的方式输出
}' http://172.25.19.1/zabbix/api_jsonrpc.php | python -m json.tool
(5)再次执行result后的改变,这是身份令牌,后边会用到,随便选一个即可
[root@server1 ~]# vim zabbix-api
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "6645f1c3d92b03ab565dfc9c9c934e58"
}
2.获取zabbix主机和被监控的主机信息
[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": 1,
"auth": "6645f1c3d92b03ab565dfc9c9c934e58" ##这里就是上一步执行脚本生成的身份令牌
}' http://172.25.19.1/zabbix/api_jsonrpc.php | python -m json.tool
执行脚本
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
},
{
"host": "server2",
"hostid": "10267",
"interfaces": [
{
"interfaceid": "6",
"ip": "172.25.19.2"
}
]
},
{
"host": "server3",
"hostid": "10268",
"interfaces": [
{
"interfaceid": "7",
"ip": "172.25.19.3"
}
]
}
]
}
3.删除zabbix监控中的主机
这一步之前在浏览器中关闭自动注册和自动发现动作
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10268"
],
"id": 1,
"auth": "6645f1c3d92b03ab565dfc9c9c934e58"
}' http://172.25.19.1/zabbix/api_jsonrpc.php | python -m json.tool
执行脚本如下:
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10268"
]
}
}
[root@server1 ~]#
浏览器中查看到server3被删除
4.添加主机
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.19.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "6645f1c3d92b03ab565dfc9c9c934e58"
}' http://172.25.19.1/zabbix/api_jsonrpc.php | python -m json.tool
执行脚本
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10269"
]
}
}
可以在浏览器中查看到server3添加进去了,过一会舒心可以看到server3的ZBX变成绿色
注意:在浏览器中查看groupid和templateid的方法:
- groupid
配置—>主机模板–>点击Linux servers–>可以看到上边有groupid
- templateid
配置 —> 模板----> 找到Template OS Linux -->可以看到templateid