
Zabbix API开始扮演越来越重要的角色,尤其是在集成第三方软件并自动执行日常任务时. 很难想象没有自动化管理数千台服务器会有多么困难. Zabbix API为批处理操作,第三方软件集成和其他功能提供了可编程接口.
Zabbix API在1.8版中引入,并已被广泛使用. 所有Zabbix移动客户端均基于API,甚至本机WEB前端部分也基于该API构建. Zabbix API中间件使体系结构更具模块化,并避免了对的直接操作. 它允许您通过JSON RPC协议创建,更新和获取Zabbix对象,并可以进行任何您想做的事[当然,如果您有身份验证帐户,则可以. ]
Zabbix API提供了两个主要功能:
使用JSON
API是使用JSON-RPC实现的. 这意味着要调用任何函数,您都需要发送POST请求,并且输入和输出数据均为JSON格式. 常规工作流程如下:
API可以与脚本或支持JSON RPC的任何“手动”工具一起使用. 首先要了解的是如何验证以及如何使用验证ID获得所需的信息. 以下演示将使用Python脚本和基于Curl的示例来展示API的基本用法.
基本请求格式
Zabbix API简化的JSON请求如下:
{
"jsonrpc": "2.0",
"method": "method.name",
"params": {
"param_1_name": "param_1_value",
"param_2_name": "param_2_value"
},
,
"auth": "159121b60d19a9b4b55d49e30cf12b81",
}
逐行查看以下内容:
Zabbix API基于JSON-RPC 2.0规范. 具体实现可以选择您喜欢的任何编程语言或手动方法. 这里我们以基于Python和Curl的方法为例. Python 2.7已经支持JSON,因此不需要其他模块组件. 当然,可以使用Perl,Ruby和PHP之类的语言. 使用前,请确保安装相应的JSON模块.

任何Zabbix API客户端都需要先进行自我验证,然后才能真正起作用. 这是User.login方法. 此方法接受用户名和密码作为参数,并返回认证ID,并且安全的哈希字符串用于连续的API调用(此认证ID在使用User.logout之前有效). 特定的Python代码auth.py如下:
#!/usr/bin/env python2.7 #coding=utf-8 import json import urllib2 # based url and required header url = "http://monitor.example.com/api_jsonrpc.php" 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 And Password:",e.code else: response = json.loads(result.read()) result.close() print "Auth Successful. The Auth ID Is:",response['result']
在这里,您需要确保URL中的用户名和密码匹配. 运行结果如下:

您可以看到auth.py成功连接并通过了身份验证. 现在有了验证ID,它可以在新的API调用中重复使用.
让我们看看如何基于CURL实施验证:
curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc": "2.0","method":"user.authenticate","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' http://monitor.example.com/api_jsonrpc.php

这里是显示如何获取监视主机列表[主机列表]的示例. 该脚本需要使用在auth.py中获得的身份验证ID,并执行host.get方法来获取主机列表. 查看特定的代码get_host.py:
#!/usr/bin/env python2.7
#coding=utf-8
import json
import urllib2
# based url and required header
url = "http://monitor.example.com/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
# request json
data = json.dumps(
{
"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output":["hostid","name"],
"filter":{"host":""}
},
"auth":"2ee379e516f386ca4c24da7fd9fd5bb4", # the auth id is what auth script returns, remeber it is string
"id":1,
})
# create request object
request = urllib2.Request(url,data)
for key in header:
request.add_header(key,header[key])
# get host list
try:
result = urllib2.urlopen(request)
except URLError as e:
if hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ', e.reason
elif hasattr(e, 'code'):
print 'The server could not fulfill the request.'
print 'Error code: ', e.code
else:
response = json.loads(result.read())
result.close()
print "Number Of Hosts: ", len(response['result'])
for host in response['result']:
print "Host ID:",host['hostid'],"Host Name:",host['name']
部分结果列表:


比较基于CURL的访问方法: curl -i -X POST -H'内容类型: application / json'-d'{“ jsonrpc”: “ 2.0”,“ method”: “ host.get “,” params“: {”输出“: [” hostid“,”名称“],”过滤器“: {” host“: ”“}},” auth“: ” ecc543db662930c122b5fbedee60cc63“,” id“: 1}' http: / /monitor.example.com/api_jsonrpc.php

结果太多,未显示. 相比之下,脚本的使用可以具有更大的灵活性zabbix api中文文档,并且基于CURL的方法对于结果的处理不是很方便. 原理都是一样的.
除此信息外,API调用还可用于创建操作zabbix api中文文档,更新操作和删除操作. 也很容易使我们想起操作. 当然,比较使用API调用获得结果的这些方法,我们一定不能忘记这种最直接,最危险的方式. 如讨论开始时提到的,Zabbix现在带有一个前端实现,该实现部分使用操作,部分基于API调用. 现在,该API并不十分成熟,根据业务需求使用哪种方法.
以下流程图表示Zabbix API工作的典型工作流程. 身份验证(方法user.login)是获取身份验证ID的必需步骤. 此ID允许我们调用API允许的任何方法进行操作. 在前面的示例中没有提到user.logout方法,这就是为什么ID可以重复使用一次的原因. 使用user.logout方法将使验证ID无效,并且后续操作将不再能够使用此ID.

参考:
原始地址:
使用Zabbix Api
API使用zabbix官方网站文档: ,Zabbix API基于JSON-RPC 2.0规范,具体...

Web Api简介
ASP.NET Web API简介ASP.NET MVC 4包含ASP.NET Web API,这是一个用于创建Http服务的新框架,该服务可以连接到各种客户端,包括浏览器,移动设备等. ASP ...
ZooKeeper系列4: ZooKeeper API的介绍和编程
问题指南: 1. ZooKeeper API包含几个软件包? 2.如何使用ZooKeeper API创建Zookeeper应用程序? 1)ZooKeeper API简介ZooKeeper AP ...
WebSocket API简介
WebSocket是html5中新添加的通信协议. 当前流行的浏览器支持此协议,例如Chrome,Safari,Firefox,Opera,IE等,最早支持此协议的应该是来自chr的chrome. ..
python调用zabbix api接口来添加,删除,修改和检查主机
python程序调用zabbix系统的api接口来添加,删除和修改zabbix_server主机. 使用相关功能时,需要在脚本中打开相关功能. 函数描述: zabbixtools()调用zabbi ...
构建一个简单的C+ &加;服务组件,第1部分和冒号;服务组件架构C+ &加; API简介
构建一个简单的C ++服务组件,第1部分: 服务组件体系结构简介C ++ API熟悉将用于C ++的Apache Tuscany SCA的API. 您将通过本文了解API的主要组...
基于curl的Zabbix API调用

1,验证并获取加密的字段curl -i -X POST -H'Content-Type: application / json'-d'{“ jsonrpc”: “ 2.0&q ...
Raphael Js矢量库API简介:
Raphael Js矢量库API简介: Raphael Javascript是Javascript矢量库. 2010年6月15日,著名的JavaScript库ExtJS和触摸屏代码库项目jQT ...
Zabbix和lpar;一) &冒号;简介和服务器安装
一个. 什么是Zabbix? Zabbix由AlexeiVladishev最初开发,目前正在维护Zabbix SIA. ZABBIX是企业级开源分布式监视解决方案. Zabbix用于监视网络和服务器...
RDI框架和期限;净额─&期间; NET快速信息系统开发框架─工作流组件介绍
RDIFramework.NET─.NET快速信息系统开发框架工作流组件简介RDIFramework.NET是基于.NET快速信息系统开发的. 集成框架,为用户和开发人员提供最佳的.Net Framework部门...
视图
将视图添加到某个视图的虾面中[self.superview insertSubview: smallCircle belowSubview: self]; //返回两个数字的根返回sqrt ...
输入密码(河豚和lowbar;秘密)设置
简单地说,phpmyadmin是一个mysql管理工具. 安装此工具后,您可以通过Web表单直接管理mysql数据,而无需执行系统命令来管理它. 管理器,在下面...
深入优化MySQL内核
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-190380-1.html
这是个无利不起早的国家
美国佬喜欢欺负小字辈