3 Agent 2

概述

Zabbix agent 2 是新一代的 Zabbix agent 并可替代 Zabbix agent 使用。Zabbix agent 2 的开发目标包括:

  • 减少TCP连接数

  • 提供更优的检查并发能力

  • 易于通过插件扩展。插件应能:

    • 提供仅需少量代码的简单检查
    • 提供包含长时间运行脚本及独立数据采集的复杂检查,并支持定期回传数据
  • 作为 Zabbix agent 的即插即用替代方案(支持所有

    the previous functionality)

Agent 2 采用Go编程语言编写(复用部分 Zabbix agent 的C代码)。构建 Zabbix agent 2 需要配置Go环境及当前受支持的 Go version

Agent 2 在Linux上不内置守护进程支持,可通过 run 方式作为 Windows service 运行。

被动检查的工作机制与 Zabbix agent 类似。主动检查支持计划/弹性间隔及单活动服务器内的检查并发。

默认情况下,Zabbix agent 2 会将主动检查的首次数据采集安排在 监控项 的 update 间隔内条件随机时间,以避免资源使用峰值。 要对未配置调度 update intervals 的主动检查在 agent 重启后立即执行,可在 configuration file 中设置 ForceActiveChecksOnStart 参数(全局级)或 Plugins.<Plugin name>.System.ForceActiveChecksOnStart(仅影响特定插件检查)。 若设置插件级参数,将覆盖全局参数。强制启动时执行主动检查的功能自Zabbix 6.0.2起支持。

检查并发

不同插件的检查可并发执行。单个插件内的并发检查数受插件容量设置限制。每个插件可能有硬编码的容量设置(默认为100),可通过插件配置参数中的 Plugins.<PluginName>.System.Capacity=N 设置调低。该参数旧称 Plugins.<PluginName>.Capacity 仍被支持,但在Zabbix 6.0中已弃用。

另见:Plugin development guidelines

支持平台

Zabbix agent 2 支持以下平台:

自 Zabbix 6.0.35 起,由于 Go 1.22 (及更新版本) 与 RHEL 6 提供的 GCC 4.4.7 不兼容导致编译错误,Zabbix agent 2 软件包不再适用于 RHEL 6。 但请注意,Zabbix agent packages 仍受支持。

安装

安装Zabbix agent 2有以下几种可选方式:

Windows系统:

Linux系统:

  • 使用发行版软件包 - 按照Zabbix packages页面的说明操作,选择您的发行版和Agent 2组件
  • 从源代码编译 - 参考4-配置源代码; 注意必须通过指定--enable-agent2配置选项来配置源代码

Zabbix agent 2的监控功能可以通过插件进行扩展。 内置插件开箱即用,可加载插件需要单独安装。 更多信息请参阅可加载

选项

以下命令行参数可与Zabbix agent 2配合使用:

参数 描述
-c --config <config-file> 配置文件file的路径.
此选项可用于指定非默认的配置文件file.
在UNIX系统上,默认为/usr/local/etc/zabbix_agent2.conf或通过安装-zabbix-守护进程变量--sysconfdir--prefix设置
-f --foreground 在前台运行Zabbix agent(默认值: true).
-p --print 打印已知的监控项并退出.
注意: 若要同时返回user parameter结果,必须指定配置文件file(如果不在默认位置).
-t --test <item key> 测试指定的监控项并退出.
注意: 若要同时返回user parameter结果,必须指定配置文件file(如果不在默认位置).
-h --help 打印帮助信息并退出.
-v --verbose 打印调试信息. 将此选项与-p和-t选项一起使用.
-V --version 打印agentversion和许可证信息.
-R --runtime-control <option> 执行管理功能. 参见运行时控制.

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

  • 打印所有内置agent监控项及其值
  • 测试在指定配置文件file中定义的键为"mysql.ping"的用户参数

zabbix_agent2 --print zabbix_agent2 -t "mysql.ping" -c /etc/zabbix/zabbix_agentd.conf

运行时控制

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

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

示例:

  • 为agent 2提高日志级别
  • 打印运行时控制选项

zabbix_agent2 -R log_level_increase zabbix_agent2 -R help

配置文件

agent 2的配置参数大多与Zabbix agent兼容,但存在部分例外情况。

新增参数 描述
ControlSocket 运行时控制套接字路径。Agent 2使用控制套接字实现运行时命令功能。
EnablePersistentBuffer,
PersistentBufferFile,
PersistentBufferPeriod
这些参数用于为主动式监控项配置agent 2的持久化存储。
ForceActiveChecksOnStart 控制agent在重启后立即执行主动检查还是均匀分布执行。Zabbix 6.0.2版本开始支持。
Plugins 插件可拥有Plugins.<Plugin name>.<Parameter>=<value>格式的专属参数。通用插件参数System.Capacity用于设置并行检查的数量上限。
StatusPort agent 2监听HTTP状态请求的端口,用于显示已配置插件列表及部分内部参数
废弃参数 描述
AllowRoot, User 因不支持守护进程化而被移除。
LoadModule, LoadModulePath 不支持可加载模块功能。
StartAgents 该参数在Zabbix agent中用于提升被动检查并发度或禁用检查。Agent 2改为在插件层级配置并发度,并通过容量设置进行限制。当前版本不支持禁用被动检查。
HostInterface, HostInterfaceItem 暂未支持。

更多细节请参阅zabbix_agent2的配置file选项。

退出代码

自version 4.4.8版本起,Zabbix agent 2也可使用较旧的OpenSSL版本(1.0.1, 1.0.2)进行编译。

在此情况下,Zabbix会为OpenSSL提供互斥锁机制。若互斥锁加锁或解锁失败,系统会将错误信息输出至标准错误流(STDERR),且Agent 2会分别以返回码2或3退出。