一.什么是API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:

  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务。

Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:

  • 该API包含一组独立的方法;

  • 客户端和API之间的请求和响应使用JSON格式进行编码

Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。

大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:

远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。
标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。

主机和主机组

一般来讲,Zabbix主机是指你希望监控的那些设备,例如服务器、工作站、交换机等等。
创建主机是使用Zabbix过程中的一个首要任务。例如,如果你想在一台服务器“X”上监控一些参数,你必须首先创建一个主机称之为“服务器X”,然后就可以查看添加监控项到这台“服务器X”上。
主机组是由主机组成的。

二.关于API实验的具体实现

<1>查看zabbix监控系统的api接口:(验证)

在可以访问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表示静默输出(即不需要的信息,不输出)
{"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin",          #zabbix监控系统的用户名和密码"password": "zabbix"},"id": 1,"auth": null
}' http://172.25.27.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "8fc9eed51b36851050f6d7325aa2732b"
}



<2>查看主机信息:(检索主机)

[root@server1 ~]# vim zabbix-api
[root@server1 ~]# cat zabbix-api
curl -s -X POST -H 'Content-Type:application/json' -d '
{"jsonrpc": "2.0","method": "host.get","params": {"output": ["host"]},"auth": "8fc9eed51b36851050f6d7325aa2732b",       #这一串数字是上个实验的result显示的数字"id": 1
}' http://172.25.27.1/zabbix/api_jsonrpc.php | python -m json.tool

[root@server1 ~]# ./zabbix-api
{"id": 1,"jsonrpc": "2.0","result": [{"host": "Zabbix server","hostid": "10084"},{"host": "server2","hostid": "10264"},{"host": "server3","hostid": "10265"}]
}

<3>删除zabbix监控中的主机:

通过host.delete方法,10264是server2的hostid

[root@server1 ~]# cat zabbix-api
curl -s -X POST -H 'Content-Type:application/json' -d '
{"jsonrpc": "2.0","method": "host.delete","params": ["10264"],"auth": "8fc9eed51b36851050f6d7325aa2732b","id": 1
}' http://172.25.27.1/zabbix/api_jsonrpc.php | python -m json.tool


删除成功:

[root@server1 ~]# ./zabbix-api
{"id": 1,"jsonrpc": "2.0","result": {"hostids": ["10264"]}
}

去刷新,没有server2,我在做实验的时候把本机自己的也删除了,所以只剩下server3

<4>在zabbix监控中创建被监控主机:(创建主机)

[root@server1 ~]# cat zabbix-api
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.27.2",           #要创建的主机对应的ip地址"dns": "","port": "10050"     }],"groups": [{"groupid": "2"        #要添加的组对应的组id(根据组而定)}],"templates": [{"templateid": "10001"        #要添加的模板对应的模板的id号(根据模板而定)}]},"auth": "8fc9eed51b36851050f6d7325aa2732b","id": 1
}' http://172.25.27.1/zabbix/api_jsonrpc.php | python -m json.tool

添加的模板对应的模板的id号可以这样看:


[root@server1 ~]# ./zabbix-api
{"id": 1,"jsonrpc": "2.0","result": {"hostids": ["10267"]}
}

对server2进行删除重新创建

删除:

浏览器没有server2


重新创建


在浏览器查看:

重启几次服务:

监控到了:

Zabbix——通过API接口管理Zabbix所监控主机相关推荐

  1. 基于Java的Zabbix二次开发-----Zabbix的Api接口实例

    博主之前的文章配置好了Zabbix环境,正常启动Zabbix服务端,并成功监控客户端服务器的情况,如有疑问,下方传送门: centos7下安装Zabbix服务端 Windows下安装Zabbix客户端 ...

  2. Zabbix分布式监控实战(2)—— Zabbix的API接口的使用方法

    本实验是在<Zabbix分布式监控实战(1)--Zabbix简介及Zabbix监控平台的搭建>实验基础上进行的,已经配置好了zabbix-server和zabbix-agent主机,并在z ...

  3. Zabbix分布式监控(2)——Zabbix的API接口

    本实验是在Zabbix分布式监控实战(1)--认识zabbix,搭建Zabbix监控平台实验基础上进行的,已经配置好了zabbix-server和zabbix-agent主机,并在zabbix-web ...

  4. RestCloud API接口管理平台

    RestCloud API接口管理平台 RestCloud API管理平台是完全自主研发的企业级统一API接口管理平台,本平台不但可以从Java代码中的注解自动扫描生成API文档还能通过OpenAPI ...

  5. API接口管理平台-rap

    因为公司多个项目组并行,多次出现因为分支交叉使用导致影响其他项目组线上功能的情况,制定了几条规则来解决这一情况,其中一条规则就是对于各个项目组API接口的管理工作.    由于上游研发流程的不规范,各 ...

  6. 开源项目 ——API接口管理平台数据库原型设计(三)

    开源项目 --API接口管理平台数据库原型设计(三) 背景 日常我们开发人员在开发一些常用的平台时都会用到各种各样的接口,而对于这些接口的有效管理都会成为我们的一些麻烦事,一些常见的接口管理平台我们使 ...

  7. 分享一个开源免费、目前最好的API接口管理平台----eoLinker

    一.概况 eoLinker 是目前业内领先.国内最大的在线 API 接口管理平台,提供自动生成 API 文档.API 自动化测试.Mock 测试.团队协作等功能,旨在解决由于前后端分离导致的开发效率低 ...

  8. API接口管理平台eoLinker-AMS V3.2.0

    eoLinker API Management System(AMS)是一款帮助企业开发人员进行在线管理接口文档.进行自动化测试.团队协作的工具,它旨在提高企业项目的接口管理水平,提升开发速度并且降低 ...

  9. 自建API接口管理平台的产品脑图和解决方案

    API接口管理平台 如果需要自建API接口管理平台,首先要定位和明确需要给谁(开发者是谁).以什么方式(免费/付费).提供什么接口(内部接口,数据接口还是上游供应商的API接口). 站在产品经理的角度 ...

最新文章

  1. matlab模型参数不匹配怎么办,修改Simulink模型后出现初始状态大小不匹配的错误...
  2. vs编译cuda DLL
  3. delphi7注册码
  4. 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数(Java)
  5. gephi导入边数据时,和节点数据不在一个工作区
  6. 设计模式之——抽象工厂模式
  7. HOOK API(三)—— HOOK 所有程序的 MessageBox
  8. 2018美赛D翻译从汽油驾驶到 E 驾驶( E 指电,而不是空)
  9. 【Cocos Creator】 编辑器自定义 ——下拉列表属性、滑动条属性等
  10. html word 分页符,怎么取消分页符(word文档如何取消分页)
  11. office2016镜像安装详细教程
  12. 纯前端实现文件下载功能
  13. 【综合类型第 26 篇】WebStorm 2019.2.2 下载、安装教程
  14. PHP 二维数组 指定 value 作为 key || 二位数组 取出指定 元素组成新数组
  15. 自己整理的英语一最终作文模板
  16. 孤独后厂村,码农的故乡:30万互联网人跳不出的中国硅谷
  17. 线索二叉树、选择树、堆
  18. Python入门之——pexpect模块
  19. 安卓实现扫一扫识别数字
  20. css超级无敌不会,一大堆疑问大全

热门文章

  1. 如何从脚本小子变成黑客大神?
  2. 接口自动化测试实践指导(中):接口测试场景有哪些
  3. 【CellCall】将细胞间L-R通讯与细胞内TF信号转导相结合
  4. 小米手机能安装鸿蒙吗,鸿蒙系统支持小米手机吗?支持哪些机型
  5. Best Cow Fences
  6. 轻量化网络结构——Xception
  7. 15个最佳Flash物理游戏
  8. Android 性能优化 之 插桩日志分析
  9. 下载BNT工具包以及配置到matlab中
  10. JDL-1002B/AC220V电流继电器