21 扩展

概述

尽管 Zabbix 提供了多种功能,但总可以扩展添加更多功能。扩展是一种方便的方式,可以在不更改其源代码的情况下修改和增强 Zabbix 的监控功能。

您可以通过使用内置扩展选项(捕获器监控项、用户参数等)或使用或创建自定义扩展(可加载模块、插件等)来扩展 Zabbix 功能。

本节概述了用于扩展 Zabbix 的所有选项。

使用自定义命令进行数据收集

捕获器监控项

Trapper items捕获器监控项 是接受传入数据而不是查询数据的监控项。捕获器监控项可用于将特定数据发送到 Zabbix server/proxy,例如,在长时间运行的用户脚本的情况下,定期发送可用性和性能数据。您可以使用Zabbix sender命令行实用程序或自己实现基于 JSON 的通信协议.(类似于 Zabbix 发送器中使用的协议)来执行此history.push操作。

外部检查

外部检查 是通过运行可执行文件(例如shell 脚本或二进制文件)来执行检查的监控项。

外部检查由 Zabbix server或proxy(当主机通过proxy监控时)执行,不需要在被监控的主机上运行agent。

用户参数

用户参数 是用户定义的命令(与用户定义的键相关联),执行后可以从运行 Zabbix agent的主机检索所需的数据。用户参数对于配置 Zabbix 中未预定义的agent或agent2 监控项很有用。

system.run[] Zabbix agent 监控项

system.run[] Zabbix agent 监控项 是一个用于用户自定义命令的监控项(与预定义键 system.run[] 关联, 例如 system.run[myscript.sh]),可在运行 Zabbix agent 的主机上执行。

注意:system.run[] 监控项默认处于禁用状态,如需使用, 必须在 Zabbix agent 或 agent 2 配置文件中启用(允许)并进行定义 (AllowKey 配置参数)。

外部检查、用户参数和 Zabbix agent 监控项等监控项中的用户定义命令system.run[] 均由用于运行 Zabbix 组件的 OS 用户执行。要执行这些命令,此用户必须具有必要的权限。

HTTP agent 监控项

HTTP agent是通过 HTTP/HTTPS 执行数据请求的项。HTTP agent 监控项可用于向 HTTP 端点发送请求以从ElasticsearchOpenWeatherMap等服务检索数据,用于检查 Zabbix API 的状态或 Apache 或 Nginx Web 服务器的状态等。HTTP 代理项(启用了捕获器功能)也可以用作trapper items捕获器监控项

脚本监控项

脚本监控项是用于执行用户定义的 JavaScript 代码的项,该代码通过 HTTP/HTTPS 检索数据。当 HTTP 代理项提供的功能不够时,脚本项非常有用。例如,在需要多个步骤或复杂逻辑的苛刻数据收集场景中,可以配置脚本项以进行 HTTP 调用,然后处理收到的数据,然后将转换后的值传递给第二个 HTTP 调

Zabbix server和proxy支持 HTTP agent和脚本监控项,并且不需要在被监控的主机上运行agent。

高级扩展

可加载模块

可加载模块, 用C语言编写, 是一种多功能且注重性能的选项,用于扩展 UNIX 平台上 Zabbix 组件 (server, proxy, agent)的功能。加载模块基本上是 Zabbix 守护程序使用的共享库,并在启动时加载。该库应包含某些函数,以便 Zabbix 进程可以检测到该文件确实是它可以加载和使用的模块。

可加载模块具有许多优点,包括能够添加新指标或实现任何其他逻辑 (例如,Zabbix 历史数据导出),出色的性能以及开发、使用和共享其提供的功能的选项。它有助于无故障维护,并有助于更轻松地独立于 Zabbix 核心代码库提供新功能。

可加载模块在复杂的监控设置中特别有用。当监控嵌入式系统时,如果有大量监控参数或逻辑复杂或启动时间较长的繁重脚本,用户参数、 system.run[] Zabbix 代理项和外部检查等扩展将对性能产生影响。可加载模块提供了一种在不牺牲性能的情况下扩展 Zabbix 功能的方法。

插件

插件扩展了 Zabbix agent 2 的监控能力。 它们使用 Go 编程语言编写,为可加载模块(使用 C 编写)提供了一种替代方案。

插件是一个 Go 包,它定义了结构并实现一个或多个插件接口(ExporterCollectorConfiguratorRunnerWatcher)。 Zabbix agent 2 支持两种类型的插件:

请参阅 Zabbix 提供的插件列表。

有关创建您自己的插件的说明和教程,请参阅开发者中心

自定义警报

Webhook

webhook 是一种 Zabbix 媒体类型,它提供了一种将 Zabbix 告警能力扩展到外部软件的方式,例如工单系统、聊天工具或消息应用。与脚本监控项类似,webhook 适用于使用自定义 JavaScript 代码发起 HTTP 调用,例如向 Microsoft Teams、Discord 和 Jira 等不同平台推送通知。它还可以返回一些数据(例如关于已创建工单的信息),并在 Zabbix 中显示。

现有的 webhook 可在 Zabbix Git 仓库中获取。
关于自定义 webhook 开发,请参见 Webhook 开发指南

警报脚本

警报脚本是一种 Zabbix媒体类型,它提供了创建替代方法(脚本)来处理 Zabbix 警报的选项。如果您对 Zabbix 中现有的发送警报的媒体类型不满意,警报脚本会很有用

前端自定义

自定义主题

可以使用自定义主题来更改 Zabbix 前端的外观。请参阅有关创建和应用您自己的主题的说明

前端模块

前端模块提供了通过添加第三方模块或开发您自己的模块来扩展 Zabbix 前端功能的选项。使用前端模块,您可以添加新的菜单项、它们各自的视图、操作等。

全局脚本

全局脚本是用户定义的一组命令,可根据配置的范围和用户权限在监控目标上执行(通过 shell (/bin/sh) 解释器)。可以配置全局脚本以执行以下操作:

全局脚本在许多情况下都很有用。例如,如果配置为操作或手动主机操作,则可以使用全局脚本自动或手动执行远程命令,例如重新启动应用程序(Web 服务器、中间件、CRM 等)或释放磁盘空间(删除旧文件、清理/tmp目录等)。或者,另一个示例,如果配置为手动事件操作,则可以使用全局脚本来管理外部系统中的问题单。

全局脚本可以由 Zabbix server、proxy或agent程序执行。

用户定义的命令由运行 Zabbix 组件的 OS 用户执行。要执行这些命令,该用户必须具有必要的权限。

Zabbix API

Zabbix API是基于 HTTP 的 API,是 Zabbix 前端的一部分。使用 Zabbix API,您可以执行以下任何操作:

  • Automate routine tasks.
  • 以编程方式检索和修改 Zabbix 的配置。
  • 导入和导出 Zabbix 配置。
  • 访问 Zabbix 历史和趋势数据。
  • 配置应用程序以与 Zabbix 配合使用。
  • 将 Zabbix 与第三方软件集成。
  • 自动执行日常任务。

see Zabbix API Method reference. Zabbix API 包含多种方法,这些方法名义上被分组到单独的 API 中。每种方法执行特定任务。有关可用方法以及 Zabbix API 提供的功能的概述,请参阅 Zabbix API方法参考