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系统:
--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> | 执行管理功能. 参见运行时控制. |
使用命令行参数的具体示例:
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重新加载UserParameter和Include选项的值。 |
help | 显示运行时控制的帮助信息。 |
示例:
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退出。