3 Agent 2

概述

Zabbix agent 2 是 Zabbix agent 的新一代实现,使用 Go 编写(并复用了 Zabbix agent 中的一些 C 代码)。 其设计目标是:

  • 减少 TCP 连接数量;
  • 提供更好的检查并发性
  • 通过插件轻松扩展,插件可提供简单检查,代码量最少,并支持由长时间运行的脚本组成的复杂检查,以及带有周期性报告的独立数据采集;
  • 作为 Zabbix agent 的替代品,支持所有先前功能。

Zabbix agent 2 中的所有指标都由插件采集。

以下功能是插件特有的:

  • 被动检查和主动检查都支持计划和灵活的间隔
  • 结合计划和任务并发进行任务队列管理
  • 插件级超时
  • 启动时对 Zabbix agent 2 及其插件进行兼容性检查

插件有两种类型:

你也可以创建自己的插件

自定义创建的插件不必内置到 agent 2 中。 你可以将它们作为可加载插件添加,从而简化新指标插件的创建。

可加载插件可以在运行时添加,无需重新编译 Zabbix agent 2。

被动和主动检查

Zabbix agent 2 支持 被动和主动检查,与 Zabbix agent 类似。 此外,Zabbix agent 2 的主动检查还支持 灵活/调度间隔 和在一个主动服务器内的 检查并发

默认情况下,重启后,Zabbix agent 2 会在监控项更新间隔内的一个条件随机时间安排首次主动检查的数据采集,以防止资源使用量激增。 若要在 agent 重启后立即执行不具有 Scheduling 更新间隔 的主动检查,请在 配置文件 中设置 ForceActiveChecksOnStart 参数(全局级别)或 Plugins.<Plugin name>.System.ForceActiveChecksOnStart(仅影响特定插件检查)。 如果设置了插件级参数,它将覆盖全局参数。

检查并发性

来自不同插件的检查可以并发执行。单个插件内并发检查的数量受插件容量设置限制。 每个插件都可能有一个硬编码的容量设置(默认值为 1000),可通过 Plugins 配置参数中的 Plugins.<PluginName>.System.Capacity=N 设置将其降低。

支持的平台

有关支持的平台,请参见Requirements页面。

Unix-like 系统上的 Agent 2

Unix-like 系统上的 Zabbix agent 2 运行在被监控的主机上。

安装

Zabbix agent 2 可以通过以下方法之一安装在基于 Linux 的系统上:

  • Zabbix 软件包 - 选择 Agent 2 组件(在选择 Zabbix 版本、操作系统发行版和操作系统版本之后),并按照说明进行操作。
  • Zabbix 源码 - 下载源文件,并通过使用 --enable-agent2 选项进行配置来编译 agent。

Zabbix agent 2 的监控能力可以通过可加载插件进行扩展,这些插件可单独获取。 有关详细信息,请参见可加载插件

如果作为软件包安装

Zabbix agent 2 作为前台进程运行,并依赖外部服务管理器(例如 systemd)在后台执行。 Zabbix agent 2 在 Linux 上不支持内置的守护进程化。

可以通过执行以下命令来启动 agent:

systemctl start zabbix-agent2

要停止、重启或检查 Zabbix agent 2 的状态,请使用以下命令:

systemctl stop zabbix-agent2
systemctl restart zabbix-agent2
systemctl status zabbix-agent2
手动启动

您可以通过找到 zabbix_agent2 二进制文件并直接运行它来启动 Zabbix agent;例如:

zabbix_agent2

Windows 系统上的 Agent 2

Zabbix agent 2 作为独立进程运行;不过,它也可以作为 Windows 服务运行。

安装

Zabbix agent 2 可通过以下任一方法安装在 Windows 上:

Zabbix agent 2 的监控能力可通过可加载插件进行扩展,这些插件可单独获取。 有关详细信息,请参见可加载插件

有关将 Zabbix agent 2(从 ZIP 归档安装)作为 Windows 服务安装的更多详细信息,请参见 Microsoft Windows 上的 Zabbix agent 页面。

选项

以下命令行参数可与 Zabbix agent 2 一起使用:

Parameter Description
UNIX 和 Windows agent
-c --config <config-file> 配置文件的路径。
您可以使用此选项指定一个非默认的配置文件。
-f --foreground 以前台方式运行 Zabbix agent(默认值:true)。
-p --print 打印已知监控项并退出。
请注意,如果还要返回 user parameter 的结果,必须指定配置文件(如果它不在默认位置)。
-t --test <item key> 测试指定的监控项并退出。
请注意,如果还要返回 user parameter 的结果,必须指定配置文件(如果它不在默认位置)。
-T --test-config 验证配置文件并退出。
-h --help 打印帮助信息并退出。
-v --verbose 打印调试信息。请将此选项与 -p-t 选项一起使用。
-V --version 打印 agent 版本和许可证信息。
-R --runtime-control <option> 执行管理功能。请参见 runtime control
仅 Windows agent
-m --multiple-agents 使用多个 agent 实例(配合 -i-d-s-x 选项)。
为区分各实例的服务名称,每个服务名称都将包含所指定配置文件中的 Hostname 值。
-S --startup-type <value> 设置 Zabbix Windows agent 服务的启动类型。允许的值:
automatic - (默认) 在 Windows 启动时自动启动服务;
delayed - 在自动启动的服务完成启动后延迟启动该服务;
manual - 手动启动服务(由用户或应用程序);
disabled - 禁用该服务,使其无法由用户或应用程序启动。
您可以将此选项与 -i 选项一起使用,也可以单独使用,以修改已安装服务的启动类型。
-i --install 将 Zabbix Windows agent 安装为服务。
-d --uninstall 卸载 Zabbix Windows agent 服务。
-s --start 启动 Zabbix Windows agent 服务。
-x --stop 停止 Zabbix Windows agent 服务。

命令行参数使用的具体示例:

  • 打印所有内置 agent 监控项及其值。
  • 使用指定配置文件中定义的 mysql.ping 键测试一个 user parameter。
  • 使用配置文件的默认路径 C:\\Program Files\\Zabbix Agent 2\\zabbix_agent2.conf 安装 Windows 版 Zabbix Agent 服务。
  • 使用与 agent 可执行文件位于同一文件夹中的配置文件 zabbix_agent2.conf 修改已安装的 Windows 版 Zabbix Agent 服务的启动类型。
zabbix_agent2 --print
zabbix_agent2 -t "mysql.ping" -c /etc/zabbix/zabbix_agentd.conf
zabbix_agent2.exe -i
zabbix_agent2.exe -c zabbix_agent2.conf -S delayed
运行时控制

运行时控制提供了一些远程控制选项。

Option Description
log_level_increase 提高日志级别。
log_level_decrease 降低日志级别。
metrics 列出可用指标。
version 显示 agent 版本。
userparameter_reload 从当前配置文件重新加载 UserParameterInclude 选项的值。
help 显示运行时控制的帮助信息。

示例:

  • 为 agent 2 提高日志级别。
  • 打印运行时控制选项。
zabbix_agent2 -R log_level_increase
zabbix_agent2 -R help

配置文件

配置文件的默认路径为:

  • 在 UNIX 上,默认是 /usr/local/etc/zabbix_agent2.conf,或者由编译时变量 --sysconfdir--prefix 设置。
  • 在 Windows 上,默认是 C:\\Program Files\\Zabbix Agent 2\\zabbix_agent2.conf

如果主机上运行的是 agent 的单个实例,则可以使用默认配置文件,或者使用在命令行中指定的配置文件。 如果存在多个实例,则每个 agent 实例都必须有自己的配置文件(其中一个实例可以使用默认配置文件)。

Zabbix agent 2 的配置参数大多与 Zabbix agent 相同,但有一些例外:

Parameters Description
Zabbix agent 2-specific configuration parameters
ControlSocket 运行时控制套接字路径。Zabbix agent 2 使用控制套接字来执行运行时命令
EnablePersistentBuffer,
PersistentBufferFile,
PersistentBufferPeriod
这些参数用于为 Zabbix agent 2 上的主动监控项配置持久化存储。
ForceActiveChecksOnStart 确定 agent 在重启后是否应立即执行主动检查,还是在一段时间内均匀分布执行。
Plugins 插件可能有自己的参数,格式为 Plugins.<Plugin name>.<Parameter>=<value>。一个常见的插件参数是 System.Capacity,用于设置可同时执行的检查数量上限。
StatusPort Zabbix agent 2 监听 HTTP 状态请求的端口,并用于显示已配置插件列表和一些内部参数。
Zabbix agent-specific configuration parameters not supported on Zabbix agent 2
AllowRoot,
User
Zabbix agent 2 不支持这些参数,因为它不支持守护进程化。
EnableRemoteCommands 已弃用;现在两个 agent 都使用 AllowKeyDenyKey 参数。
ListenBacklog 在 Zabbix agent 中用于定义 TCP 队列中待处理连接的最大数量。Zabbix agent 2 不支持。
LoadModule,
LoadModulePath
Zabbix agent 2 不支持可加载模块。
MaxLinesPerSecond,
LogRemoteCommands
在 Zabbix agent 2 中,改用 Plugins.Log.MaxLinesPerSecondPlugins.SystemRun.LogRemoteCommands
StartAgents 此参数在 Zabbix agent 中用于提高被动检查并发数或禁用被动检查。在 Zabbix agent 2 中,并发数在插件级别进行配置,并可通过容量设置加以限制。如果未指定 Server 参数,则 Zabbix Agent 2 会禁用被动检查。

有关更多详细信息,请参阅 Zabbix agent2 的配置文件选项。

退出代码

Zabbix agent 2 也可以使用较旧的 OpenSSL 版本(1.0.1、1.0.2)进行编译。

在这种情况下,Zabbix 会为 OpenSSL 中的锁定提供互斥锁。 如果互斥锁定或解锁失败,则会将错误消息打印到标准错误流(STDERR),并且 Agent 2 分别以返回代码 23 退出。