zabbix api

简介

zabbix api 为批量操作,第三方软件集成及其他作用提供可编程接口。

zabbix api 在1.8版本以后开始提供,zabbix移动客户端和原生的web前端部分都是建立在zabbix api上。zabbix api中间件使得架构更加模块化并避免对数据库进行操作。允许你使用JSON RPC协议来创建、更新和获取zabbix 对象并操作(认证你的账户)。

zabbix api 提供两项功能:

  1. 远程管理zabbix 配置
  2. 远程检索配置和历史数据

zabbix API开发库

zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包含php、c#、Python、Perl、go等等语言

使用JSON

采用JSON RPC协议实现。调用任何函数,都要发送POST请求,输入输出都是JSON格式。
工作方式如下:

  1. 准备JSON对象,描述你想要做什么(创建主机,获取图像,更新监控项)
  2. 采用POST方式 http://zabbix.*.info/zabbix/api_jsonrpc.php发送此JSON对象. http://example.com/zabbix/是Zabbix前端地址。api_jsonrpc.php是调用API的PHP脚本。可在安装可视化前端的目录下找到。
  3. 获取json响应格式

请求方法必须是POST方法,HTTP Header Content-Type 必须为【application/jsonrequest,application/json-rpc,application/json】其中之一

基本请求格式

JSON 请求如下:

1
2
3
4
5
6
7
8
9
10
{
"jsonrpc": "2.0",
"method": "method.name",
"params": {
"param_1_name": "param_1_value",
"param_2_name": "param_2_value"
},
"id": 1,
"auth": "159121b60d19a9b4b55d49e30cf12b81",
}
  1. json rpc协议版本
  2. 具体执行的操作 如:host.create item.update
  3. 传递json对象来作为参数,如创建监控项 ,name 和key是必须的。
  4. id 1 绑定json请求和响应
  5. auth 认证令牌

API 使用

1 登录

1
2
curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"***","password":"***"},"auth":null,"id":0}' http://zabbix.***.info/api_jsonrpc.php

2 获取主机

1
curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"host.get","params":{"output":["hostid","name"],"filter":{"host":""}},"auth":"22ad296ae1ac36a07d16ea91d7af7227","id":1}' http://zabbix.***.info/api_jsonrpc.php

3 获取监控主机的hostids

1
2
curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"host.get","params":{"output":["hostid"],"filter": {"host":"192.168.11.1"}},"auth": "22ad296ae1ac36a07d16ea91d7af7227","id": 0}' http://x.x.x.x/api_jsonrpc.php
#"hostid":"10243"

(3)获得监控项itemids

1
2
3
curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"item.get","params":{"output":"itemids","hostids":"10243","search":{"key_":"system.cpu.util
[,idle,avg1]"}},"auth": "a826fca79a0795ccc1224dc76329972f","id": 0}' http://x.x.x.x/api_jsonrpc.php
#“item”:"24526"

(4)获取监控项”system.cpu.util[,idle,avg1] “在2014.2.19 14:00~14:20的值

1
curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"history.get","params":{"history":0,"itemids":["24526"],"time_from":"1392789600","time_till":"1392790200","output":"extend"},"auth": "a826fca79a0795ccc1224dc76329972f","id": 0}' http://x.x.x.x/api_jsonrpc.php

参考地址

https://www.zabbix.com/documentation/2.4/manual/api

评论