一、API的介绍
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。
API 接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。
zabbix中api主要作用:为批量操作、第三方软件集成以及其他作用提供可编程接口。大致工作过程:1)API采用json-rpc实现。这意味这调用任何函数,都需要发送post请求,且输入输出格式都是以json格式。2)准备json对象,它描述你想要做什么。3)获取json响应。
二、zabix-api接口函数的编写
首先,该环境实在zabbix实现监控的基础上,进行操作。
1、查看zabbix监控系统的api接口:
---> cd /root
---> vim zabbix.spi
curl -s -X POST -H 'Content-Type:application/json' -d '
# 用curl命令模拟json格式的post请求
{
"jsonrpc": "2.0", # json rpc参数表示协议版本
"method": "user.login", # 以用户登陆的方式获取api
"params": {
"user": "Admin", # zabbix监控系统的用户名和密码
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
# 采用post方法向此网页发送json请求;api_jsonrpc.php调用spi的php脚本
---> chmod +x zabbix.api # 添加执行权限
---> ./zabbix.api # 执行脚本
2、查看zabbix主机和被检控主机信息
---> vim zabbix.api
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get", # 调用api中的get方法
"params": {
"output": ["host"]
},
"id": 1,
"auth": "067187a40d8f684120ee7aca8f1f88ec" # zabbix监控的api
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
---> ./zabbix.api # 监控到的和zabbix网页中的一致
3、删除zabbix监控中的server2主机
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete", # 调用delete方法
"params": [
"10254" # 此处填写server2的hostid
],
"id": 1,
"auth": "067187a40d8f684120ee7aca8f1f88ec"
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
---> ./zabbix.api
4、在zabbix中创建被监控主机
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.2.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "067187a40d8f684120ee7aca8f1f88ec"
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
---> ./zabbix.api
# 当我们在浏览器中查看时,server2已经加入监控中了。
来源:oschina
链接:https://my.oschina.net/u/4356937/blog/3792122