前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实用的Zabbix API - 5个API用例来提升你的API工作流

实用的Zabbix API - 5个API用例来提升你的API工作流

作者头像
Zabbix
发布2022-02-10 08:41:20
5570
发布2022-02-10 08:41:20
举报
文章被收录于专栏:Zabbix中国官方

感谢本文译者张宇!欢迎更多资深用户翻译原厂博文!

张 宇 | 宏时数据技术工程师

  • Zabbix高级认证专家ZCP
  • Zabbix5.0、6.0中文手册官方译者,Zabbix 高级认证专家 ZCP
  • 参与过国内多家银行、保险客户的Zabbix监控实施,经验丰富。

随着监控基础设施的发展,您可能会遇到无法避免使用Zabbix API的情况。Zabbix API可以用于自动化日常工作流程的一部分,排除监控故障或简单地分析或获取有关特定实体集的统计信息。

在这篇博文中,我们将看看一些更高级的API方法和特定的方法参数,并学习如何使用它们来改进你的API工作流。

1. 使用CountOutput计数实体

首先收集一些统计数据。假设您必须计算一些匹配实体的数量——这里我们可以使用CountOutput参数。那么更高级的用例——如果我们必须计算一段时间内的事件数量呢? 下面例子将countOutput与time_from和time_till(在unixtime中)结合起来,得到11月份创建的事件数量。让我们来看看11月份所有具有灾难严重性的事件 :

代码语言:javascript
复制
{
"jsonrpc": "2.0",
"method": "event.get",
"params": {
"output": "extend",
"time_from": "1635717600",
"time_till": "1638223200",
"severities": "5",
"countOutput": "true"
},
"auth": "xxxxxx",
"id": 1
}

2.使用API执行配置导出/导入

接下来,让我们看看如何使用配置。在yaml中导出一个模板:

代码语言:javascript
复制
{
"jsonrpc": "2.0",
"method": "configuration.export",
"params": {
"options": {
"templates": [
"10001"
]
},
"format": "yaml"
},
"auth": "xxxxxx",
"id": 1
}

现在,让我们复制并粘贴导出的结果,并将模板导入到另一个环境中。 非常重要的一点是要记住,为了让这个方法完全按照我们的意愿工作,我们需要包括指定配置字符串中包含的特定实体的行为的参数,例如项目/值映射/模板等。 例如,如果我在这里排除了templates参数,就不会导入任何模板。

代码语言:javascript
复制
{
"jsonrpc": "2.0",
"method": "configuration.import",
"params": {
"format": "yaml",
"rules": {
"valueMaps": {
"createMissing": true,
"updateExisting": true
},
"items": {
"createMissing": true,
"updateExisting": true,
"deleteMissing": true
},
"templates": {
"createMissing": true,
"updateExisting": true
},

"templateLinkage": {
"createMissing": true
}
},
"source": "zabbix_export:\n version: '5.4'\n date: '2021-11-13T09:31:29Z'\n groups:\n -\n uuid: 846977d1dfed4968bc5f8bdb363285bc\n name: 'Templates/Operating systems'\n templates:\n -\n uuid: e2307c94f1744af7a8f1f458a67af424\n template: 'Linux by Zabbix agent active'\n name: 'Linux by Zabbix agent active'\n 
...
},
"auth": "xxxxxx",
"id": 1
}

3.使用扩展参数扩展触发器函数和宏

使用触发器。获取关于一组特定触发器的信息是一种相对常见的做法。需要特别注意的是,在默认情况下,触发器名称、表达式或描述中的宏是不会展开的。为了展开可用的宏,我们需要使用展开参数:

代码语言:javascript
复制
{
"jsonrpc": "2.0",
"method": "trigger.get",
"params": {
"triggerids": "18135",
"output": "extend",
"expandExpression":"1",
"selectFunctions": "extend"
},
"auth": "xxxxxx",
"id": 1
}

4.获取已发现项目的附加LLD信息

如果我们希望为发现的实体(在本例中是一个项目)显示额外的LLD信息,我们可以使用selectDiscoveryRule和selectItemDiscovery参数。 虽然selectDiscoveryRule将提供创建项目的LLD规则的ID,但selectItemDiscovery可以指向创建项目的父项目原型ID、最后发现时间、项目原型键等。

下面的例子将返回物品的详细信息,并将提供LLD规则和物品原型id,丢失的物品将被删除的时间,以及物品最后被发现的时间:

代码语言:javascript
复制
{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"itemids":"36717",
"selectDiscoveryRule":"1",
"selectItemDiscovery":["lastcheck","ts_delete","parent_itemid"]
}, "auth":"xxxxxx",
"id": 1
}

5.使用搜索参数对匹配的实体进行搜索

Zabbix API提供了两个用于执行搜索的标准参数。使用搜索参数,我们可以搜索字符串或文本字段,并尝试基于单个或多个条目查找对象。searchByAny参数可以扩展搜索—如果设置为true,我们将根据搜索数组中的任何一个条件进行搜索,而不是试图找到一个匹配所有条件的实体(默认行为)。

下面的API调用将在一个特定的模板上找到匹配代理和Zabbix键的项:

代码语言:javascript
复制
{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": "extend",
"templateids": "10001",
"search": {
"key_": ["agent.","zabbix"]
},
"searchByAny":"true",
"sortfield": "name"
},
"auth": "xxxxxx",
"id": 1
}

使用上面的示例,修改它们,使它们适合您的用例,并且您应该能够非常容易地在您的环境中实现它们。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 使用CountOutput计数实体
  • 2.使用API执行配置导出/导入
  • 3.使用扩展参数扩展触发器函数和宏
  • 4.获取已发现项目的附加LLD信息
  • 5.使用搜索参数对匹配的实体进行搜索
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档