2022 Zabbix中国峰会
2022 Zabbix中国峰会

3 Agent 2

概述

Zabbix agent 2是新一代的Zabbix agent,可以替代Zabbix agent使用。 Zabbix agent 2 已开发为:

  • 减少TCP连接数量
  • 提供改进的检查并发性
  • 使用插件很容易扩展。一个插件应该能够:
    • 提供由几行简单代码组成的简单检查
    • 提供复杂的检查,包括长时间运行的脚本和独立的数据收集,并定期发回数据
  • 做一个Zabbix agent 的临时替代品 (因为它支持之前的所有功能)

Agent 2 是用Go 语言编写(复用了一些 Zabbix agent 中的C 语言代码)。在构建Zabbix agent 2 时,需要配置当前支持的Go环境 Go version

Agent 2 在Linux上没有内置的守护进程支持; 它可以作为 [Windows 服务]((/manual/appendix/install/windows_agent)。

被动和主动检查

被动检查的工作类似于Zabbix agent。主动检查支持 调度/灵活间隔 同时并发检查仅使用一个active server。

默认情况下,重启后,Zabbix agent2 将在监控项更新间隔内的随机时间进行主动检查的第一次数据采集,避免资源使用率突增。为了在agent重启后立即做好非调度采集间隔 的主动检查,设置配置文件中ForceActiveChecksOnStart参数(全局)或者Plugins.<Plugin name>.System.ForceActiveChecksOnStart(仅影响特定插件)。插件级别参数会覆盖全局参数。

并发检查

来自不同插件的检查可以同时执行。一个插件的并发检查次数受插件容量设置的限制。每个插件都可以有一个硬编码的容量设置(默认为1000),可以使用 Plugins 的配置 参数 Plugins.<PluginName>.System.Capacity=N 设置 。

支持的平台

以下平台支持 Zabbix agent 2:

Installation

安装Zabbix agent 2有以下两种方式:

Windows:

Linux:

  • 从分发包安装 - 按照 Zabbix 安装包 页面上的说明进行操作,可通过选择您的发行版和Agent 2组件获得
  • 从源码安装 - 参阅 从源码安装;注意您必须通过指定'--enable-agent2 '配置选项来配置安装

Zabbix agent 2 监控功能可以使用插件进行扩展。虽然内置插件可以开箱即用,但可加载的插件必须单独安装。 更多信息,参阅 Plugins.

操作

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

参数 描述
UNIX and Windows agent
-c --config <config-file> 配置文件的路径。
您可以使用此选项指定非默认的配置文件。
在 UNIX, 默认是 /usr/local/etc/zabbix_agent2.conf 或者通过编译时compile-time 变量--sysconfdir--prefix 设置
在Windows上, 默认是 C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
-f --foreground 在前台运行Zabbix agent (默认: true).
-p --print 打印已知监控项并退出。
注意: 也返回 用户参数结果 , 必须指定配置文件(如果它不在默认位置)。
-t --test <item key> 测试指定监控项并退出。
注意: 也返回 用户参数 结果, 必须指定配置文件 (如果它不在默认位置)。
-T --test-config 验证配置文件并退出。
-h --help 打印帮助信息并退出。
-v --verbose 打印调试信息。将此选项与-p和-t选项一起使用。
-V --version 打印代理版本号并退出。
-R --runtime-control <option> 执行管理功能。 查看 runtime control
Windows agent only
-m --multiple-agents 使用多个agent实例 (使用 -i, -d, -s, -x 选项)。
为了区分实例的服务名称,每个服务名称将包含来自指定配置文件中的Hostname值.
-S --startup-type <value> 设置 Zabbix Windows agent 服务的启动类型。允许以下值:
automatic - (default) 在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”键测试一个用户参数
  • 使用默认路径将“Zabbix Agent”服务安装到Windows系统中,其配置文件为 C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
  • 使用安装在Windows系统上的 "Zabbix Agent" 服务的配置文件 zabbix_agent2.conf 来修改其启动类型
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

配置文件

agent 2的配置参数大多与Zabbix agent 兼容,但也有一些例外。

新的参数 描述
ControlSocket 运行时控制套接字路径。 Agent 2使用控制套接字 runtime commands.
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 不支持。

有关详细信息,请参阅配置文件选项zabbix_agent2.

退出码

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

在这种情况下,Zabbix提供了在OpenSSL中锁定的互斥体。如果互斥锁锁定或解锁失败,则把错误消息打印到标准错误流(STDERR),Agent2退出,分别返回代码2或3。