zabbix api 的使用
概览
Zabbix API 允许你以编程方式检索和修改 Zabbix 的配置,并提供对历史数据的访问。它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务。
Zabbix API 是基于 Web 的API,作为 Web 前端的一部分提供。它使用 JSON-RPC 2.0 协议,这意味着两点:
- 该 API 包含一组独立的方法;
- 客户端和 API 之间的请求和响应使用 JSON 格式进行编码。
有关协议和 JSON 的更多信息可以在 JSON-RPC 2.0 规范 和 JSON 格式主页 中找到。
结构
Zabbix API 由许多名义上分组的独立 API 方法组成。每个方法执行一个特定任务。例如,方法 host.create
隶属于 host 这个 API 分组 ,用于创建新主机。历史上,API 分组有时被称为 “classes”。
大多数API至少包含四种方法:get
,create
, update
和 delete
,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的方法。
执行请求
当完成了前端的安装配置后,你就可以使用远程HTTP请求来调用API。为此,需要向位于前端目录中的 api_jsonrpc.php
文件发送 HTTP POST 请求。例如,如果你的 Zabbix 前端安装在 *http://company.com/zabbix*, 那么用HTTP请求来调用 apiinfo.version
方法就如下面这样:
1 | POST http://company.com/zabbix/api_jsonrpc.php |
请求的 Content-Type
头部必须设置为以下值之一:application/json-rpc
,application/json
或 application/jsonrequest
。
示例工作流
以下部分将更详细地引导您完成一些用法示例。
认证
在访问 Zabbix 中的任何数据之前,你需要登录并获取身份认证 token。这可以使用 user.login 方法完成。我们假设你想要以标准 Zabbix Admin 用户身份登录。那么,你的 JSON 请求将如下所示:
1 | { |
让我们仔细看看示例请求对象。它具有以下属性:
jsonrpc
- API 使用的 JSON-RPC 协议的版本; Zabbix API 实现的 JSON-RPC 版本是2.0;method
- 被调用的 API 方法;params
- 将被传递给API方法的参数;id
- 请求的任意标识符;auth
- 用户认证 token;因为我们还没有,它被设置为null
。
如果你正确提供了凭据,API 返回的响应将包含用户身份认证 token:
1 | { |
响应对象包含以下属性:
jsonrpc
- JSON-RPC 协议的版本;result
- 方法返回的数据;id
- 对应请求的标识符。
检索主机
我们现在有一个有效的用户身份认证 token,可以用来访问 Zabbix 中的数据。例如,我们使用 host.get 方法检索所有已配置 主机 的ID,主机名和接口 :
1 | { |
请注意 auth
属性现在设置为我们通过调用 user.login
方法获得的身份认证 token。
响应对象将包含有关主机的请求数据:
1 | { |
出于性能原因,我们建议始终列出要检索的对象属性,并避免检索所有内容。
创建新监控项
让我们使用从上一个请求 host.get
中获得的数据,在主机 “Zabbix server” 上创建一个新 监控项 。这可以通过使用 item.create 方法完成:
1 | { |
成功的响应将包含新创建监控项的ID,可用于在以后请求中引用该监控项:
1 | { |
item.create
方法和其他的 create 方法也可以接受对象数组并通过一次 API 调用创建多个监控项。
创建多个触发器
因此,如果create方法接受数组,我们可以添加多个 [触发器] (/manual/api/reference/trigger/object) ,像这样:
1 | { |
操作成功的响应将包含新创建触发器的 ID 数组:
1 | { |
更新监控项
启用监控项,即将其状态设置为“0”:
1 | { |
操作成功的响应将包含被更新监控项的 ID:
1 | { |
The item.update
方法以及其他 update 方法也可以接受对象数组并通过一次 API 调用更新多个监控项。
更新多个触发器
启用多个触发器,即将其状态设置为0:
1 | { |
成功的响应将包含被更新触发器的 ID数组:
1 | { |
这是更新的首选方法。有些 API 方法比如 host.massupdate
允许编写更简单的代码,但不建议使用这些方法,因为它们将在未来的版本中删除。
错误处理
到目前为止,我们尝试过的一切都运行良好。但是,如果我们尝试对 API 进行不正确的调用,会发生什么情况?让我们尝试通过调用 host.create 方法创建另一个主机, 但省略一个必填的 groups
参数。
1 | { |
这个请求的返回会包含一个错误信息:
1 | { |
如果发生错误,响应对象将包含 error
属性而不是 result
属性,同时 error 包含以下数据:
code
- 错误代码;message
- 一个简短的错误摘要;data
- 更详细的错误消息。
错误可能发生在不同的情况下,例如,使用不正确的输入值,会话超时或试图访问不存在的对象。你的应用程序应该能够优雅地处理这些类型的错误。
API 版本
为了简化API版本控制,自 Zabbix 2.0.4 开始,API 的版本与 Zabbix 本身的版本相匹配。你可以使用 apiinfo.version 方法查找你正在使用的 API 的版本。 这对于调整应用程序以使用特定于版本的功能非常有用。
我们保证在主要版本内部具有向后兼容性。在主要版本之间进行向后不兼容的更改时,通常会在下一个版本中保留旧功能,并在之后的版本中将其删除。有时,我们可能会在不提供任何向后兼容性的情况下删除主要版本之间的功能。重要的是,永远不要依赖任何已弃用的功能,并尽快迁移到较新的替代项。
你可以在 API changelog 中跟踪对API所做的所有更改。
可用的 API 列表
可用的 API 列表 做进一步阅读。
监控
Zabbix API 允许您访问在监控期间收集的历史记录和其他数据。
高可用集群
检索服务器节点及其状态的列表。
历史记录
检索 Zabbix 监控进程收集的历史值,以便进行演示或进一步处理。
趋势
检索由 Zabbix Server 计算的趋势值以进行展示或进一步处理。
事件
检索由触发器、网络发现和其他 Zabbix 系统生成的事件,以实现更灵活的情况管理或第三方工具集成。
问题
根据给定的参数检索问题。
服务监控
Create a hierarchy representation of monitored IT infrastructure/business services data.
服务水平协议
定义服务级别目标 (SLO),检索有关服务性能的详细服务级别指示器 (SLI) 信息。
任务
与Zabbix Server task manager 交互,创建任务并检索响应。
配置
Zabbix API 允许您管理监控系统的配置。
主机和主机组
管理主机组,主机及其相关的一切,包括主机接口,主机宏和维护期。
Host API | Host group API | Host interface API | User macro API | Value map API | Maintenance API
监控项
定义要监控的监控项。
触发器
配置触发器以通知您系统中的问题。管理触发器依赖关系。
图形
编辑图形或单独的图形项,以便更好地呈现收集的数据。
模板
管理模板并将其链接到主机或其他模板。
导入和导出
导出和导入Zabbix配置数据,用于配置备份,迁移或大规模配置更新。
低级别自动发现
配置低级发现规则以及项目,触发器和图形原型来监视动态实体。
LLD rule API | Item prototype API | Trigger prototype API | Graph prototype API | Host prototype API
事件关联性
创建自定义事件相关规则。
动作和警报
定义动作和报警,以通知用户某些事件或自动执行远程命令。获取有关生成的警报及其接收者的信息。
服务
管理服务以进行服务级别监视,并检索有关任何服务的详细 SLA 信息。
仪表盘
管理仪表板并基于它们生成定时报表。
Dashboard API | Template dashboard API | Report API
拓扑图
配置拓扑图用于创建 IT基础架构 的详细动态展现。
Web 监控
配置 Web 场景以监控 Web 应用程序和服务。
网络发现
管理网络级发现规则以自动查找和监控新主机。获得对所发现的服务和主机的信息的完全访问。
Discovery rule API | Discovery check API | Discovered host API | Discovered service API
管理
使用 Zabbix API,您可以更改监控系统的管理设置。
用户
添加将有权访问 Zabbix 的用户,将其分配到用户组并授予权限。创建角色以精细管理用户权限。跟踪每个用户已完成的配置更改。配置媒介类型和用户接收警报的多种方式。
User API | User group API | User role API | Media type API | Audit log API
通用
用于更改某些全局配置选项。
Autoregistration API | Icon map API | Image API | User macro API | Settings API | Housekeeping API
正则表达式
管理全局正则表达式。
Proxies
用于管理分布式监控设置中使用的 proxies。
认证
更改身份认证配置选项。
API Tokens
管理认证 tokens.
脚本
配置和执行脚本以帮助您完成日常任务。
API 信息
检索Zabbix API的版本,以便应用程序可以使用特定于版本的功能。