2 agent(主动模式) 自动注册

概述

可以允许活动 Zabbix agent 自动注册,之后服务器即可开始对其进行监控。 这样一来,无需在服务器上手动配置新的主机,即可将其添加到监控中。

当此前未知的活动 agent 请求检查时,就会发生自动注册。

此功能对于自动监控新的云节点可能非常方便。 一旦您在云中有了新节点,Zabbix 就会自动开始采集该主机的性能和可用性数据。

活动 agent 自动注册也支持通过被动检查监控已添加的主机。 当活动 agent 请求检查时,如果其配置文件中定义了 ListenIPListenPort 配置参数,这些参数也会一并发送到服务器。 如果指定了多个 IP 地址,则第一个会被发送到服务器。

服务器在添加新自动注册的主机时,会使用接收到的 IP 地址和端口来配置 agent。 如果未接收到 IP 地址值,则使用传入连接所使用的地址。 如果未接收到端口值,则使用 10050。

可以指定主机应使用 DNS 名称 作为默认 agent 接口进行自动注册。

在以下情况下,会重新执行自动注册:

  • 如果主机的元数据信息发生变化:
    • 由于 HostMetadata 发生变化且 agent 重启
    • 由于 HostMetadataItem 返回的值发生变化
  • 对于手动创建但缺少元数据的主机
  • 如果某主机被手动更改为由另一个 Zabbix proxy 监控
  • 如果同一主机的自动注册来自新的 Zabbix proxy

Zabbix server 和 Zabbix proxy 的活动 agent 自动注册心跳间隔为 120 秒。 因此,如果已发现的主机被删除,则会在 120 秒后重新执行自动注册。

配置

指定服务器

请确保在 agent 配置文件 - zabbix_agentd.conf 中已指定 Zabbix 服务器:

ServerActive=10.0.0.1

除非您在 zabbix_agentd.conf 中专门定义了 Hostname,否则服务器将使用 agent 所在主机的系统主机名来命名主机。 在 Linux 中,可以通过运行 hostname 命令获取系统主机名。

如果在 Zabbix agent 配置中将 Hostname 定义为以逗号分隔的主机列表,则会为所有列出的主机名创建主机。

在对配置文件进行任何更改后,请重启 agent。

主动 agent 自动注册的操作

当服务器从 agent 收到自动注册请求时,它会调用一个 action。 必须为 agent 自动注册配置一个事件源为“Autoregistration”的 action。

要让主动 agent 自动注册,不需要配置 网络发现

在 Zabbix 前端中,转到 Alerts → Actions,选择 Autoregistration actions,然后点击 Create action

  • 在 Action 选项卡中,为你的 action 指定一个名称
  • 可选地指定 conditions。 你可以在主机名/主机元数据的条件中进行子字符串匹配或正则表达式匹配。 如果你打算使用“Host metadata”条件,请参见下一节。
  • 在 Operations 选项卡中,添加相关操作,例如 - 'Add host'、'Add to host group'(例如 Discovered hosts)、'Link templates' 等。

如果将要自动注册的主机很可能只支持主动监控(例如,这些主机与 Zabbix 服务器之间有防火墙隔离),那么你可能需要创建一个专用模板,例如 Template_Linux-active,以便链接到它。

创建的主机会被添加到 Discovered hosts 组中(默认情况下,可在 Administration > General > Other 中配置)。 如果你希望主机被添加到其他组,请添加一个 Remove from host group 操作(指定 "Discovered hosts"),并且还要添加一个 Add to host group 操作(指定另一个主机组),因为主机必须属于某个主机组。

安全自动注册

通过配置基于 PSK 的身份验证并使用加密连接,可以实现一种安全的自动注册方式。

加密级别在 Administration > General > Autoregistration 中进行全局配置。 可以选择不加密、使用 PSK 身份验证的 TLS 加密,或两者同时启用(这样某些主机可以在不加密的情况下注册,而其他主机则通过加密方式注册)。

在添加主机之前,Zabbix 服务器会先验证 PSK 身份验证。 如果验证成功,则会添加该主机,并将 Connections from/to host 设置为仅 'PSK',其 identity/预共享密钥与全局自动注册设置中的相同。

为确保在使用 proxy 的安装环境中自动注册的安全性,应启用 Zabbix 服务器与 proxy 之间的加密。

使用 DNS 作为默认接口

HostInterface 和 HostInterfaceItem 配置参数 允许在自动注册期间为主机接口指定自定义值。

更具体地说,如果主机应通过 DNS 名称而不是 IP 地址作为默认 agent 接口进行自动注册,它们就很有用。 在这种情况下,应将 DNS 名称指定为 HostInterface 或 HostInterfaceItem 参数的值,或由其返回。 如果其中一个参数的值发生变化——例如,从 IP 地址变为 DNS 名称,或反之——自动注册主机的默认接口也会相应更新。 此更新会应用到现有主机,而不是创建新主机。 要发送新值,必须重启 agent,以便重新发起自动注册过程。

如果未配置 HostInterface 或 HostInterfaceItem 参数,则改用 listen_dns 参数。 该值通过对 agent 的 IP 地址执行反向 DNS 查询来确定。 如果反向 DNS 未正确配置或返回了无效名称,可能会由于接口值无效而导致自动注册不正确或失败。

使用主机元数据

当 agent 向服务器发送自动注册请求时,它会发送自己的主机名。
在某些情况下(例如 Amazon 云节点),主机名不足以让 Zabbix 服务器区分已发现的主机。
可以选择使用主机元数据,将 agent 中的其他信息发送到服务器。

主机元数据在 agent 的 配置文件 - zabbix_agentd.conf 中进行配置。
在配置文件中指定主机元数据有 2 种方式:

HostMetadata
HostMetadataItem

请参阅上方链接中的选项说明。

HostMetadataItem 参数最多可返回 65535 个 UTF-8 码点。
更长的值将被截断。

请注意,在 MySQL 上,如果返回值包含多字节字符,则实际可用的最大字符长度会更短。
例如,仅包含 3 字节字符的值总共将限制为 21844 个字符,而仅包含 4 字节字符的值将限制为 16383 个符号。

每当活动 agent 向服务器发送请求以刷新活动监控项时,都会发生一次自动注册尝试。
请求之间的延迟由 agent 的 RefreshActiveChecks 参数指定。
第一次请求会在 agent 重启后立即发送。

示例

使用 HostMetadata 按操作系统自动注册

假设您希望由 Zabbix 服务器自动注册主机。 您的网络中部署了主动式 Zabbix agent(参见上文“Configuration”部分)。 您的网络中既有 Windows 主机,也有 Linux 主机,并且您的 Zabbix 前端中提供了“Linux by Zabbix agent”和“Windows by Zabbix agent”模板。 因此,在主机注册时,您希望将相应的 Linux/Windows 模板应用到正在注册的主机上。 默认情况下,在自动注册时只会将主机名发送到服务器,这可能还不够。 为了确保将正确的模板应用到主机,您应使用主机元数据。

前端配置

首先要做的是配置前端。
创建 2 个动作。
第一个动作:

  • 名称:Linux 主机自动注册
  • 条件:主机元数据包含 Linux
  • 操作:链接模板:Linux by Zabbix agent

在这种情况下,您可以跳过“添加主机”操作。
将模板链接到主机需要先添加主机,因此服务器会自动完成该操作。

第二个动作:

  • 名称:Windows 主机自动注册
  • 条件:主机元数据包含 Windows
  • 操作:链接模板:Windows by Zabbix agent

Agent 配置

现在,您需要配置 agent。 将以下一行添加到 agent 配置文件中:

HostMetadataItem=system.uname

这样可以确保主机元数据将根据运行 agent 的主机包含“Linux”或“Windows”。 在这种情况下,主机元数据示例如下:

Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32

请不要忘记在对配置文件进行任何更改后重启 agent。

使用 HostMetadata 控制自动注册和模板

步骤 1 - 使用 HostMetadata 保护注册

使用主机元数据可提供一些基本保护,防止不需要的主机注册。

前端配置

在前端中创建一个动作,使用某个难以猜测的秘密代码来阻止不需要的主机:

  • 名称:Linux 自动注册动作
  • 条件:
    • 计算类型:AND
    • 条件 (A):主机元数据包含 //Linux//
    • 条件 (B):主机元数据包含 //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
  • 操作:
    • 向用户发送消息:Admin,通过所有媒介
    • 添加到主机群组:Linux servers
    • 链接模板:Linux by Zabbix agent

请注意,单独使用此方法并不能提供强有力的保护,因为数据是以纯文本传输的。 要使更改立即生效,需要重新加载配置缓存。

agent 配置

将以下一行添加到 agent 配置文件中:

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

其中,“Linux” 是平台,其余字符串是难以猜测的密文。

请不要忘记在对配置文件进行任何更改后重启 agent。

步骤 2 - 将模板添加到已注册的主机

可以为已注册的主机添加额外的模板。
在这种情况下,MySQL by Zabbix agent 模板将仅链接到 HostMetadata 包含令牌 MySQL 的主机。

前端配置

在前端中更新该动作:

  • 名称:Linux 自动注册动作
  • 条件:
    • 计算类型:AND
    • 条件 (A):主机元数据包含 Linux
    • 条件 (B):主机元数据包含 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
    • 条件 (C):主机元数据包含 MySQL
  • 操作:
    • 向用户发送消息:Admin,通过所有媒介
    • 添加到主机群组:Linux servers
    • 链接模板:Linux by Zabbix agent
    • 链接模板:MySQL by Zabbix Agent

agent 配置

更新 agent 配置文件中的下一行:

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

请不要忘记在对配置文件进行任何更改后重启 agent。