【第22期】观点:IT 行业加班,到底有没有价值?

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接口,非常适合二次开发。Zabbix API是基于JSON-RPC 2.0规格调用API,本文主要是用于Python脚本。具体的API...

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

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

JAVA访问Zabbix API

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

zabbix api调用

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

爱测未来开发-Zabbix的使用 API的调用

一、zabbix的简单介绍 1.什么是zabbix zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 2.选用zabbix的原因 开源方案;提供wi...

Web API 接口监控

互联网产品,除了线上关键服务的实时监控十分重要,其实各服务的具体接口监控也不容忽视。如果线上某个接口挂了,最直观的表现是App/Web端上刷不出数、超时或直接抛错误。而这类接口异常的排查可能比服务异常...

zabbix api

zabbix API开发库 zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包...

利用 PHP 查询 ZABBIX API 信息, 获得主机当前使用率

目的利用 PHP 调用 zabbix api 接口, 查询主机, 并返回下面 JSON 数据 内存可用值 (KB) 内存总数 (KB) 当前 CPU IDLE 值 10...

zabbix api 使用

之前一直纠结从mysql表里取数据

利用zabbix API进行管理

zabbix 现在之所以那么流行,个人感觉跟zabbix 强大的API有一个很大的关系,利用API可以帮我们完成很多事情:     1、获取相关组,主机信息。     2、比如有人喜欢获取历史数据...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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