2022 Zabbix中国峰会
2022 Zabbix中国峰会

20 扩展

概述

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

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

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

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

捕获器监控项

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

外部检查

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

外部检查由 Zabbix 服务器或代理(当主机通过代理监控时)执行,不需要在被监控的主机上运行代理。

用户参数

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

system.run[] Zabbix agent 监控项

system.run[] Zabbix agent item是用户定义命令的项目(与预定义键相关联system.run[],例如system.run[myscript.sh]),可以在运行 Zabbix 代理的主机上执行。

注意:system.run[]默认情况下,项目是禁用的,如果使用,则必须启用(允许)并在 Zabbix agent或agent2 配置文件中定义(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 服务器和proxy支持 HTTP agent和脚本监控项,并且不需要在被监控的主机上运行代理。

高级扩展

Loadable modules, written in C, are a versatile and performance-minded option for extending the functionality of Zabbix components (server, proxy, agent) on UNIX platforms. A loadable module is basically a shared library used by Zabbix daemon and loaded on startup. The library should contain certain functions, so that a Zabbix process may detect that the file is indeed a module it can load and work with.

插件

插件提供了可加载模块(用 C 编写)的替代方案。但是,插件仅是一种扩展 Zabbix agent 2 的方法。

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

查看内置插件列表。

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

自定义警报

Webhooks

Webhook是一种 Zabbix媒体类型,它提供了一种将 Zabbix 警报功能扩展到外部软件(例如帮助台系统、聊天或 Messenger )的选项。与脚本项类似,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 服务器、代理或代理程序执行。

用户定义的命令由运行 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方法参考