首页 > 软件开发 > 你要的zabbix二次开发指南快收下

快速发布【软件开发】相关需求,专业顾问为您服务 快速发布

用此手机号发布,您还可以点击 更换

发布需求
请输入正确的手机号
请输入正确的验证码

您是不是要找:

  • 专家问诊,提供专业建议
  • 急速响应,体验省心
  • 根据需求灵活定制解决方案

你要的zabbix二次开发指南快收下

标签:zabbix二次开发 2017-7-25 作者:Lfdhjbsufvycn

Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。


RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作。


Zabbix API提供两项主要功能:


远程管理Zabbix配置


远程检索配置和历史数据


使用JSON


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


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


采用POST方法向 //example.com/zabbix/api_jsonr****hp发送此JSON对象,//example.com/zabbix/是Zabbix前端地址 ,api_jsonr****hp是调用API的PHP脚本。可在安装可视化前端的目录下找到。


获取JSON格式响应。


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


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


基本请求格式


Zabbix API 简化的JSON请求如下:


复制代码


 1 {


 2 "jsonrpc": "2.0",


 3 "method": "method.name",


 4 "params": {


 5 "param_1_name": "param_1_value",


 6 "param_2_name": "param_2_value"


 7 },


 8 "id": 1,


 9 "auth": "159121b60d19a9b4b55d49e30cf12b81",


10 }


下面一行一行来看:


"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。


环境准备


Zabbix API是基于JSON-RPC 2.0规格,具体实现可以选择任何你喜欢的编程语言或者手动方式。这里我们采用的Python和基于Curl的方式来做示例。Python 2.7版本已经支持JSON,所以不再需要其他模块组件。当然可以采用Perl、Ruby、PHP之类的语言,使用前先确保相应JSON模块的安装。


身份验证


任何Zabbix API客户端在真正工作之前都需要验证它自身。在这里是采用User.login方法。这个方法接受一个用户名和密码作为参数并返回验证ID,一个安全哈希串用于持续的API调用(在使用User.logout之前该验证ID均有效)。


API调用数据流程


数据流程


Zabbix API工作的典型工作流。验证(方法user.login)是获取验证ID的强制步骤。这个ID又允许我们调用API提供的任何权限允许的方法来进行操作。在之前的例子中没有提到user.logout方法,这也是一次验证ID能够重复使用的原因所在。使用user.logout方法后将会使验证ID失效,后面的操作将不能再使用此ID。


认证获取简例


1.user.login方法获取


curl命令运行结果:


{"jsonrpc":"2.0","result":"b895ce91ba84fe247e444817c6773cc3","id":0}


比较来看,采用脚本可以有更多的灵活性,而基于CURL的方式,对结果的处理不是很方便。原理则都是相通的。


除了这些获取信息以外,采用API调用同样可以进行创建操作,更新操作和删除操作等等。这也很容易让我们联想起数据库操作,当然比较这些采用API


调用获取结果的方式,也不能忘掉这种最直接而危险的方式。在开始讨论中已经提到,Zabbix现在自带的前端实现部分是采用数据库操作,部分是基于API调用。


python脚本:


[iyunv@yang python]# cat auth.py


#!/usr/bin/env python2.7


#coding=utf-8


import json


import urllib2


# based url and required header


url = "//1.1.1.1/zabbix/api_jsonr****hp"


header = {"Content-Type":"application/json"}


# auth user and password


data = json.dumps(


{


   "jsonrpc": "2.0",


   "method": "user.login",


   "params": {


   "user": "Admin",


   "password": "zabbix"


},


"id": 0


})


# create request object


request = urllib2.Request(url,data)


for key in header:


   request.add_header(key,header[key])


# auth and get authid


try:


   result = urllib2.urlopen(request)


except URLError as e:


   print "Auth Failed, Please Check Your Name AndPassword:",e.code


else:


   response = json.loads(result.read())


   result.close()


print"Auth Successful. The Auth ID Is:",response['result']


看着很复杂但是实际操作起来并不难,重要的是要多加练习,这不是一朝一夕的事情,只要做好了效果就很明显了。希望小编能帮到你。

最新文章推荐

软件开发暂无最新文章查看全部推荐文章>

推荐人才