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

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

一、认识API

1、什么是Zabbix API

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

Zabbix API 开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。
Zabbix API 为批量操作、第三方软件集成以及其他作用提供可编程接口。

Zabbix API 是在 1.8 版本中开始引进并且已经被广泛应用。所有的 Zabbix 移动客户端都是基于 API,甚至原生的 WEB 前端部分也是建立在它之上。
Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。
它允许你通过 JSON RPC 协议来创建、更新和获取 Zabbix 对象并且做任何你喜欢的操作。

2、Zabbix API提供的主要功能
  1. 远程管理 Zabbix 配置
  2. 远程检索配置和历史数据
  3. 自动执行常规任务
3、使用 JSON操作API

API 采用 JSON-RPC 实现。这意味着调用任何函数,都需要发送 POST 请求,输入输出数据都是以 JSON 格式。

Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

4、API分类

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

  • 远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。
  • 标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
  • 文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
  • 信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
5、API常用接口
user.login,用户登录
host.get(create|delete|update),主机操作
hostgroup.get(create|delete|update),主机组操作
item.get(create|delete|update),监控项目操作
history.get,历史数据查询
event.get,事件查询
trigger.get,触发器查询

二、配置Zabbix的API接口

实验环境
主机名ip服务版本
server1172.25.1.1zabbix-server,zabbix-web,mariadb-serverrhel7.3
server2172.25.1.2zabbix-agentrhel7.3
server3172.25.1.3zabbix-agentrhel7.3
实验

在server1上

1、测试并获取身份令牌(user.login接口)

步骤一:编写zabbix-api文件,获取身份令牌

vim zabbix-api

curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",  #标准的JSON RPC参数以标示协议版本
"method": "user.login", #获取接口方法名,用户登陆
"params": {
"user": "Admin",   #zabbix系统监控的用户名和密码
"password": "zabbix"
},
"id": 1,
"auth": null   #用户的身份令牌,因为还没有获取所以为null
}' http://172.25.1.1/zabbix/api_jsonrpc.php   #api_jsonrpc.php是调用api的php脚本,可以安装可视化前端目录查看

在这里插入图片描述
步骤二:运行脚本

chmod +x zabbix-api
./zabbix-api

在这里插入图片描述
步骤三:上述显示的结果不清晰,加入 python 的 json 模块

 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.1.1/zabbix/api_jsonrpc.php | python -m json.tool  #加入 -s 参数和 json 模块

在这里插入图片描述
步骤四:运行脚本

 ./zabbix-api

在这里插入图片描述

2、使用身份令牌检索主机(host.get接口)

步骤一:编写zabbix-api文件检索主机,将上述查看到的result令牌添加到auth后

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": "cc06660254d4bb747fdcb0dbb4a44609"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
步骤二:执行脚本

./zabbix-api 

在这里插入图片描述

3、尝试 api 添加删除主机(host.delete接口)

步骤一:先在web界面禁用之前配置的自动注册
在这里插入图片描述
步骤二:编辑zabbix-api文件,调用host.delete接口

vim zabbix-api 

curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10267"   #server2的hostid
],
"id": 1,
"auth": "cc06660254d4bb747fdcb0dbb4a44609"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
步骤三:运行脚本
在这里插入图片描述
步骤四:在web界面查看,server2已经被删除
在这里插入图片描述

4、使用 api 创建主机(host.create接口)

步骤一:在web界面查看Groupid
在这里插入图片描述在这里插入图片描述
步骤二:在web界面查看templatesid
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
步骤三:编辑zabbix-api文件,调用host.create接口创建server2主机

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.1.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"  #上面查看到的Groupid号
}
],
"templates": [
{
"templateid": "10001"  #上面查看到的templatesid

}
]
},
"id": 1,
"auth": "cc06660254d4bb747fdcb0dbb4a44609"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
步骤四:运行脚本

./zabbix-api

在这里插入图片描述
步骤五:web界面查看,server2已经添加进去了
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值