ZABBIX API

原创 2016年08月29日 16:56:51

zabbix API简介

Zabbix API是在1.8版本中开始引进并且已经被广泛应用。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作

zabbix官网介绍

Zabbix API提供两项主要功能:

  • 远程管理Zabbix配置

  • 远程检索配置和历史数据

使用JSON

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

  1. 准备JSON对象,它描述了你想要做什么(创建主机,获取图像,更新监控项等)。

  2. 采用POST方法向http://example.com/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】其中之一,相关PHP代码如下:

$allowed_content = [

      'application/json-rpc' => 'json-rpc',

      'application/json' => 'json-rpc',

      'application/jsonrequest' => 'json-rpc',

   ];

可以采用脚本或者任何”手动”支持JSON RPC的工具来使用API。而首先需要了解的就是如何验证和如何使用验证ID来获取想要的信息。后面的演示会以Python脚本和基于Curl的例子来呈现API的基本使用。

基本请求格式

{

   "jsonrpc": "2.0",

   "method": "method.name",

   "params": {

       "param_1_name": "param_1_value",
       "param_2_name": "param_2_value" 
   },

   "id": 1,

   "auth": "159121b60d19a9b4b55d49e30cf12b81",

}

下面一行一行来看:

  • “jsonrpc”: “2.0”-这是标准的JSON RPC参数以标示协议版本。所有的请求都会保持不变。

  • “method”: “method.name”-这个参数定义了真实执行的操作。例如:host.create、item.update等等

  • “params”-这里通过传递JSON对象来作为特定方法的参数。如果你希望创建监控项,”name”和”key_”参数是需要的,每个方法需要的参数在Zabbix API文档中都有描述。

  • “id”: 1-这个字段用于绑定JSON请求和响应。响应会跟请求有相同的”id”。在一次性发送多个请求时很有用,这些也不需要唯一或者连续

  • “auth”: “159121b60d19a9b4b55d49e30cf12b81”-这是一个认证令牌【authentication token】用以鉴别用户、访问API。这也是使用API进行相关操作的前提-获取认证ID。

官网示例

example

通过curl 使用方式

  1. 先获取认证令牌
  curl -H "Content-Type: application/json" -X POST -d '{
  "jsonrpc": "2.0",
  "method": "user.login",
  "params": {
       "user": "Admin",
      "password": "zabbix"
  },
  "id": 1,
  "auth": null
}' \
  http://127.0.0.1/api_jsonrpc.php

2.发送COMMAND

  curl -H "Content-Type: application/json" -X POST -d \
  '{
      "jsonrpc": "2.0",
      method": "host.get",
      "params":{
          "output": ["name","hostid","status"]
      },
      "auth": "28a47e0a47089dabda6720e0d447be3e",
      "id":1
  }' \
  http://localhost/api_jsonrpc.php | python -m json.tool

curl参数说明:

  • -H:-header LINE Pass custom header LINE to server (H)
  • -d:–data DATA HTTP POST data (H)
  • -X:–request COMMAND Specify request command to use

Python 接口使用说明:

我们的工程里面使用的是pyzabbix包,该包的内部也是按照官方规定的json格式封装的。使用步骤如下:

  import pyzabbix
  zapi = pyzabbix.ZabbixAPI("http://localhost")
  zapi.login("Admin", "zabbix")
  hosts = zapi.host.get(output="extend")
  print hosts

要想熟练使用zabbix API需要仔细阅读官网的手册,手册上写的非常详细,每个参数都给了详细的说明;
建议在用Python调用API接口的时候,先用curl方式实验无误之后,再写相关代码;只要curl方式达到预期效果,把curl中用到的参数,直接代入Python代码中,就可以完美运行了,可以节省Python代码的调试时间;
关于Python的zabbix api 调用可以参考借鉴

/sandal/docker/zabbix-server-2.4/container-files/sandal/Auto_create_ipmi_template$/create_ipmi_template.py

该代码里面用到了template.create,item.create,application.create,trigger.create等方法,有助于新手快速上手。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

zabbix api调用

zabbix api调用api能干什么Zabbix API allows you to programmatically retrieve and modify the configuration o...

如何通过Zabbix获取监控数据?

################################## zabbix基本架构 ################################## 1.Server zabbix系统核心...

Zabbix实践(五):基于java的zabbix api调用实现数据共享

Zabbix的功能虽然很强大,能将数据以图表形式展现在Web中,但是,一个监控系统的使用者如果不了解Zabbix,或者其非维护人员需要通过监控了解各个服务器大致运行状况时,Zabbix所提供的界面就不...
  • csolo
  • csolo
  • 2016年11月17日 17:30
  • 5724

JAVA访问Zabbix API

java访问zabix API zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

zabbix api 使用

之前一直纠结从mysql表里取数据
  • heidas
  • heidas
  • 2014年11月19日 12:16
  • 1063

python 通过zabbix api来获取当前trigger(告警)并打印出信息

直接看代码 #--encoding=utf-8 from pyzabbix import ZabbixAPI ###pyzabbix class pyzabbixAPI(object): def...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

openstack4j kenstonev3 api整理

常用api整理

zabbix的Java API(一)

上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。 于是我在zabbix网站各种找,终于在下面网址找到了:  ...
  • dbdd_cf
  • dbdd_cf
  • 2017年07月18日 21:33
  • 653
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZABBIX API
举报原因:
原因补充:

(最多只允许输入30个字)