3 Agent 2

概述

Zabbix agent 2是新一代的Zabbix agent 甚至可以替代Zabbix agent. Zabbix agent 2 已经进步到:

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

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

Agent 2 Linux上没有内置的守护进程支持; 它可以作为 Windows service.

被动检查的工作类似于Zabbix agent。主动检查支持scheduled/flexible intervals 同时并发检查仅使用一个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.

支持的平台

Agent 2 支持运行平台 Linux 和 Windows。

如果源码包安装, Agent 2 支持平台有:

  • RHEL/CentOS 6, 7, 8
  • SLES 15 SP1+
  • Debian 9, 10
  • Ubuntu 18.04, 20.04

On Windows, the agent 2 is supported on all desktop and server versions, on which an up-to-date supported Go version can be installed. 在Windows上 Agent 2 支持所有的桌面和服务器版本,可以安装最版版本支持的Go版本

安装

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代理 (默认: true).
-p —print打印已知项并退出。
注意: 也返回 user parameter结果 , 必须指定配置文件(如果它不在默认位置)。
-t —test <item key>测试指定项目并退出。
注意: 也返回 user parameter 结果, 必须指定配置文件 (如果它不在默认位置)。
-h —help打印帮助信息并退出。
-v —verbose打印调试信息。将此选项与-p和-t选项一起使用。
-V —version打印代理版本号并退出。
-R —runtime-control <option>执行管理功能。 查看 runtime control.

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

  • 打印所有带有值的内置代理项
  • 使用指定配置文件中定义的“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是将被重新加载的唯一代理配置选项。
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上为活动项配置持久存储.
Plugins插件可能有自己的参数, 以 Plugins.<Plugin name>.<Parameter>=<value>格式。 常见的插件参数是 Capacity, 设置可以同时执行的检查的限制。
StatusPort端口agent 2将侦听HTTP状态请求,并显示已配置的插件列表和一些内部参数
丢弃参数描述
AllowRoot, User不支持,因为守护进程不支持。
LoadModule, LoadModulePath不支持可加载模块。
StartAgents此参数在Zabbix代理中用于增加被动检查并发性或禁用它们。 在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。