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 service.

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

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

检查并发

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

参考: Plugin development guidelines.

Passive and active checks

Passive checks work similarly to Zabbix agent. Active checks support scheduled/flexible intervals and check concurrency within one active server.

By default, after a restart, Zabbix agent 2 will schedule the first data collection for active checks at a conditionally random time within the item’s update interval to prevent spikes in resource usage. To perform active checks that do not have Scheduling update interval immediately after the agent restart, set ForceActiveChecksOnStart parameter (global-level) or Plugins.<Plugin name>.System.ForceActiveChecksOnStart (affects only specific plugin checks) in the configuration file. Plugin-level parameter, if set, will override the global parameter. Forcing active checks on start is supported since Zabbix 6.0.2.

Check concurrency

Checks from different plugins can be executed concurrently. The number of concurrent checks within one plugin is limited by the plugin capacity setting. Each plugin may have a hardcoded capacity setting (100 being default) that can be lowered using the Plugins.<PluginName>.System.Capacity=N setting in the Plugins configuration parameter. Former name of this parameter Plugins.<PluginName>.Capacity is still supported, but has been deprecated in Zabbix 6.0.

支持的平台

以下平台支持 Zabbix agent 2:

安装

Zabbix agent 2 在预编译的 Zabbix 包中可用。要从 源码 编译 Zabbix agent 2,您必须指定 --enable-agent2 配置选项。

操作

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

参数描述
-c —config <config-file>配置文件的路径。
您可以使用此选项指定非默认的配置文件。
在 UNIX, 默认是 /usr/local/etc/zabbix_agent2.conf 或者编译时设置 compile-time 变量—sysconfdir or —prefix
-f —foreground在前台运行Zabbix agent (默认: true).
-p —print打印已知监控项并退出。
注意: 也返回 用户参数结果 , 必须指定配置文件(如果它不在默认位置)。
-t —test <item key>测试指定监控项并退出。
注意: 也返回 用户参数 结果, 必须指定配置文件 (如果它不在默认位置)。
-h —help打印帮助信息并退出。
-v —verbose打印调试信息。将此选项与-p和-t选项一起使用。
-V —version打印代理版本号并退出。
-R —runtime-control <option>执行管理功能。 查看 runtime control.

特殊 例子 使用命令行参数:

  • 打印agent内置的所有监控项和值
  • 使用指定配置文件中定义的“mysql.ping”键测试一个用户参数
  1. shell> zabbix_agent2 --print
  2. shell> zabbix_agent2 -t "mysql.ping" -c /etc/zabbix/zabbix_agentd.conf
运行时控制

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

操作描述
log_level_increase增加日志等级。
log_level_decrease降低日志等级。
metrics可用的指标列表。
version显示agent版本。
userparameter_reload从当前配置文件重新加载用户参数。
请注意UserParameter是将被重新加载的唯一agent配置选项。
help显示运行时控制的帮助信息

例子:

  • 为agent 2增加日志等级
  • 打印运行时控制选项
  1. shell> zabbix_agent2 -R log_level_increase
  2. shell> zabbix_agent2 -R help

配置文件

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

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

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

退出码

从版本4.4.8开始,Zabbix agent 2也可以用 旧的OpenSSL版本(1.0.1,1.0.2)。

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