3 Agent 2

概述

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

  • 减少 TCP 连接的数量。
  • 提供更高效的检查并发性
  • 通过 plugins 实现轻松扩展,支持使用最少代码实现简单检查,并支持由长时间运行的脚本组成的复杂检查,以及具有周期性报告功能的独立数据收集。
  • 作为 Zabbix agent 的替代品,支持其所有先前功能。
被动与主动检查

Zabbix agent 2 支持 被动与主动检查,与 Zabbix agent 类似。
此外,Zabbix agent 2 的主动检查还支持 flexible/scheduling intervals 以及单个主动服务器内的 检查并发

默认情况下,在重启后,Zabbix agent 2 将在 监控项 的 update 间隔内,于一个条件随机时间调度主动检查的首次数据采集,以避免资源使用的峰值。若希望在 agent 重启后立即执行没有 调度(Scheduling) update interval 的主动检查,请在 configuration file 中设置 ForceActiveChecksOnStart 参数(全局级别)或 Plugins.<Plugin name>.System.ForceActiveChecksOnStart 参数(仅影响特定插件检查)。如果设置了插件级别的参数,它将覆盖全局参数。

检查并发性

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

支持平台

对于支持的平台,请参考 支持平台 页面。

UNIX类系统的Agent 2

在类UNIX系统上,Zabbix agent 2 是正在被监控的 主机 上的 run。

安装

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

  • Zabbix packages - 选择 Agent 2 组件(在选择您的 Zabbix 版本、操作系统发行版和操作系统版本之后),并按照提供的说明操作。
  • Zabbix sources - 下载源文件并通过 configuring the sources 使用 --enable-agent2 选项编译 Zabbix agent。 注意:构建 Zabbix agent 2 需要配置好的 Go 环境,并且使用当前支持的 agent-2

从 Zabbix 7.0.5 开始,由于 Go 1.22(及更高版本)与 RHEL 6 提供的 GCC 4.4.7 不兼容,导致编译错误,因此 Zabbix agent 2 软件包不再支持 RHEL 6。 但是请注意,Zabbix agent packages 仍然受到支持。

若以软件包安装

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 服务被 run。

安装

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

Zabbix agent 2 的监控功能可以通过插件进行扩展。 虽然内置插件可以直接使用,但在 Windows 上可加载的插件必须单独安装。 有关更多信息,请参见 可加载

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

选项

以下命令行参数可用于Zabbix agent 2:

参数 描述
UNIX and Windows agent
-c --config <config-file> 配置文件 file 的路径。
您可以使用此选项指定非默认的配置文件 file。
在UNIX系统中,默认为/usr/local/etc/zabbix_agent2.conf 或通过 安装-zabbix-守护进程 变量 --sysconfdir--prefix 设置
在Windows系统中,默认为 C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
-f --foreground 在前台运行 Zabbix agent(默认值:true)。
-p --print 打印已知的监控项并退出。
注意:若要同时返回user parameter结果,必须指定配置file(若其不在默认位置)。
-t --test <item key> 测试指定的监控项并退出。
注意:若要同时返回user parameter结果,必须指定配置file(若其不在默认位置)。
-T --test-config 验证配置 file 并退出。
-h --help 打印帮助信息并退出。
-v --verbose 打印调试信息。此选项需与-p和-t选项配合使用。
-V --version 打印 agent version 及许可证信息。
-R --runtime-control <option> 执行管理功能。参见运行时控制
Windows agent only
-m --multiple-agents 使用多个 agent 实例(配合 -i、-d、-s、-x 选项)。
为区分实例的服务名称,每个服务名称将包含来自指定配置 file 的主机名值。
-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"键测试用户参数file
  • 使用默认方式为Windows安装"Zabbix Agent"服务 配置文件的路径 file C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
  • 修改已安装的"Zabbix Agent" Windows服务的启动类型 使用位于同一目录下的配置文件file zabbix_agent2.conf 将文件夹作为 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
运行时控制

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

选项 描述
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

从 Zabbix 7.0.17 开始,agent 2 的运行时控制命令将输出写入 stdout(标准输出),而不是 stderr(标准错误)。

配置文件

agent 2 的配置参数在多数情况下与 Zabbix agent 兼容,但存在一些例外情况。

新参数 描述
ControlSocket 运行时控制套接字路径。Agent 2 使用控制套接字进行运行时命令
EnablePersistentBuffer,
PersistentBufferFile,
PersistentBufferPeriod
这些参数用于在 agent 2 上为活动的 监控项 配置持久化存储。
ForceActiveChecksOnStart 确定 agent 在重启后是立即执行主动检查还是在时间上均匀分布执行。
Plugins 插件可能拥有自己的参数,格式为 Plugins.<Plugin name>.<Parameter>=<value>。一个常见的插件参数是 System.Capacity,用于设置同时执行检查的上限。
StatusPort agent 2 将监听此端口以接收 HTTP 状态请求,并显示已配置插件列表及部分内部参数。
已弃用参数 描述
AllowRoot, User 不受支持,因为不支持守护进程化。
LoadModule, LoadModulePath 不支持可加载模块。
StartAgents 此参数在 Zabbix agent 中用于增加被动检查并发数或禁用被动检查。在 Agent 2 中,并发数在插件级别进行配置,并可通过容量设置进行限制。而禁用被动检查目前尚不支持。
HostInterface, HostInterfaceItem 尚未支持。

更多详细信息,请参阅 file 的配置选项 zabbix_agent2

退出代码

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

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