Linux下通过API接口管理Zabbix所监控主机(二)
续我的上篇博文:https://mp.csdn.net/postedit/88306099
ZabbixAPI官方文档:https://www.zabbix.com/documentation/4.0/zh/manual/api
一.初始API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:
远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。
标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
二.具体实现
1.查看zabbix监控系统的api接口:(验证)
在可以访问Zabbix内部的任何数据之前,需要登录并获得身份验证令牌。这可以使用user.login
方法来完成。假想以标准ZabBixAdmin用户登录。那么JSON请求将是这样的:
[[email protected] ~]# vim zabbix-api.sh
curl -s -XPOST -H "Content-Type: application/json-rpc" -d ' #-s表示静默输出(即不需要的信息,不输出)
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin", #zabbix监控系统的用户名和密码
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.83.1/zabbix/api_jsonrpc.php | python -m json.tool
[[email protected] ~]# chmod +x zabbix-api.sh
2.查看主机信息:(检索主机)
现在,我们有一个有效的用户认证令牌,可以用来访问Zabbix中的数据。例如,让我们使用host.get
方法检索所有配置主机的ID、主机名和接口:
[[email protected] ~]# vim zabbix-api.sh
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": "6a3b8f765a5009debf97d26b85750bc6" #这一串数字是上个实验的result显示的数字
}' http://172.25.83.1/zabbix/api_jsonrpc.php | python -m json.tool
[[email protected] ~]# chmod +x zabbix-api.sh
3.删除zabbix监控中的主机:
通过host.delete
方法
[[email protected] ~]# vim zabbix-api.sh
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265" #这个数字是上个实验得到的结果中,要删除的主机(这里删除server2)对应的"hostid"
],
"id": 2,
"auth": "6a3b8f765a5009debf97d26b85750bc6"
}' http://172.25.83.1/zabbix/api_jsonrpc.php | python -m json.tool
[[email protected] ~]# chmod +x zabbix-api.sh
刷新web界面,发现server2已经被删除
4.在zabbix监控中创建被监控主机:(创建主机)
通过host.create
方法
[[email protected] ~]# vim zabbix-api.sh
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.83.2", #要创建的主机对应的ip地址
"dns": "","6a3b8f765a5009debf97d26b85750bc6"
"port": "10050"
}
],
"groups": [
{
"groupid": "2" #要添加的组对应的组id(根据组而定)
}
],
"templates": [
{
"templateid": "10001" #要添加的模板对应的模板的id号(根据模板而定)
}
]
},
"auth": "6a3b8f765a5009debf97d26b85750bc6",
"id": 1
}' http://172.25.83.1/zabbix/api_jsonrpc.php | python -m json.tool
[[email protected] ~]# chmod +x zabbix-api.sh
刷新zabbix管理界面,发现server2添加成功
其中groupid的来源
templateid的来源