3 Agent 2

概述

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

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

Zabbix agent 2 支持的所有指标都由 plugins 收集。

被动和主动检查

Zabbix agent 2 支持 被动和主动检查,与 Zabbix agent 类似。 此外,Zabbix agent 2 的主动检查还支持单个 active server 内的 灵活/调度间隔 和 检查并发。

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

检查并发性

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

支持平台

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

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 7.0.5 起,由于 Go 1.22(及更新版本)与 RHEL 6 提供的 GCC 4.4.7 不兼容,导致编译错误,因此 Zabbix agent 2 软件包不再适用于 RHEL 6。 不过请注意,Zabbix agent 软件包仍受支持。

如果作为软件包安装

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 的监控能力可以通过可加载插件进行扩展,这些插件需单独获取。 有关详细信息,请参见 可加载插件。

有关将 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
运行时控制

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

选项 描述
log_level_increase 提高日志级别。
log_level_decrease 降低日志级别。
metrics 列出可用的指标。
periodic_prof_enable 启用定期性能分析。
定期 CPU 数据会收集到隐藏的临时文件中。间隔结束后,该文件会作为 CPU 性能分析文件发布,并保留配置数量的已完成文件。
临时文件不计入 ProfilerMaxFilesPerProfile。
Zabbix 7.0.31 及更高版本支持。
periodic_prof_disable 禁用定期性能分析。
Zabbix 7.0.31 及更高版本支持。
periodic_prof_execute 在采样 5 秒后写入性能分析文件。
启用定期性能分析后,此命令会结束当前 CPU 间隔,写入单独的 5 秒 CPU 性能分析文件,并开始新的定期 CPU 文件。
命令完成时,根据 ProfilerMaxFilesPerProfile 轮换显式请求的性能分析文件。
此命令收集性能分析数据期间,所有性能分析器运行时命令都会被拒绝,并显示“profiler is busy”。
Zabbix 7.0.31 及更高版本支持。
periodic_prof_set_interval 设置性能分析间隔。
Zabbix 7.0.31 及更高版本支持。
version 显示 agent 版本。
userparameter_reload 从当前配置文件重新加载 UserParameter 和 Include 选项的值。
help 显示运行时控制的帮助信息。

示例:

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

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

配置文件

配置文件的默认路径为:

  • 在 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 都使用 AllowKey 和 DenyKey 参数。
ListenBacklog 在 Zabbix agent 中用于定义 TCP 队列中待处理连接的最大数量。Zabbix agent 2 不支持。
LoadModule,
LoadModulePath
Zabbix agent 2 不支持可加载模块。
MaxLinesPerSecond,
LogRemoteCommands
在 Zabbix agent 2 中,分别使用 Plugins.Log.MaxLinesPerSecond 和 Plugins.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 分别以返回代码 2 或 3 退出。