这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.

2 主动 agent 自动注册

概述

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

当一个之前未知的主动 agent 请求检查时,可能会发生自动注册。

该功能对于自动监控新的云(Cloud)节点非常方便。一旦云中出现新的节点,Zabbix 将自动开始收集该 主机 的性能和可用性数据。

主动 agent 自动注册还支持对新增的 主机 进行被动检查监控。当主动 agent 请求检查时,如果其配置文件中定义了 'ListenIP' 或 'ListenPort' 配置参数,则这些参数将一并发送给服务器。(如果指定了多个 IP 地址,则发送第一个到服务器。)

服务器在添加新的自动注册的 主机 时,使用接收到的 IP 地址和端口来配置该 agent。如果没有接收到 IP 地址,则使用入站连接的 IP 地址;如果没有接收到端口号,则使用 10050。

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

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

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

主动 agent 自动注册的心跳间隔对于 Zabbix server 和 Zabbix proxy 是 120 秒。因此,如果发现某个 主机 被删除,自动注册将在 120 秒后重新 run。

配置

指定服务器

请确保已在 agent 中识别出 Zabbix server。 configuration file - zabbix_agentd.conf

ServerActive=10.0.0.1

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

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

每次修改配置文件后,请重启 agent。

主动agent自动注册动作

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

设置network discovery不是 需要具有活动的agents自动注册功能。

在Zabbix前端界面中,导航至告警 → 动作菜单,选择 自动注册操作并点击创建操作:

  • 在Action选项卡中,为您的操作命名

  • 可选指定 自动注册动作. 您可以在其中执行子字符串匹配或正则表达式匹配 主机名/主机元数据的条件。如果您打算使用 "主机元数据"条件,详见下一节。

  • 在Operations选项卡中,添加相关操作,例如 - 'Add'

    host', 'Add to host group' (for example, Discovered hosts), 'Link templates', etc.

如果将要自动注册的主机可能 仅支持主动监控(例如主机) 从您的Zabbix server防火墙隔离后,您可能需要create一个 特定模板如Template_Linux-active进行关联。

创建的主机会被添加到已发现的主机组中(默认情况下, 可配置于 管理常规其他参数). 如果您希望主机被添加到另一个组,请添加一个从主机移除 group 操作(指定“已发现的 主机”)并同时添加一个 添加到 主机组 操作(指定另一个 主机组),因为 一个主机 必须属于一个主机组。

安全自动注册

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

加密级别在全局范围内于管理常规自动注册 中配置。 可以选择无加密、使用PSK身份验证的TLS加密,或两者同时使用(这样一些主机可以在不加密的情况下注册,而另一些则通过加密方式注册)。

PSK身份验证在添加一个主机之前由Zabbix server验证。 如果验证成功,则添加主机,并将加密 设置为仅“PSK”,其身份/预共享密钥与全局自动注册设置中的相同。

为了确保使用proxies的安装上的自动注册安全性,应在Zabbix server与proxy之间启用加密。

将 DNS 设为默认接口

HostInterface和HostInterfaceItem configuration parameters允许在自动注册期间为主机接口指定自定义值。

更具体地说,当主机需要通过DNS名称而非IP地址作为默认agent接口进行自动注册时,这两个参数非常有用。 在这种情况下,应将DNS名称指定或返回为HostInterface或HostInterfaceItem参数的值。 如果这些参数的值发生变化(例如从IP地址更改为DNS名称,或反之),自动注册的主机的默认接口将相应更新。 此update会应用于现有主机,而不会创建新主机。 要发送新值,必须重启agent以重新启动自动注册流程。

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

使用主机元数据

当agent向服务器发送自动注册请求时,会发送其主机名。在某些情况下(例如亚马逊云节点),仅凭主机名不足以让Zabbix server区分发现的主机。可选择使用主机元数据从agent向服务器发送其他信息。

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

HostMetadata
       HostMetadataItem

选项描述请参见上述链接。

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

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

每次主动agent向服务器发送刷新主动检查请求时都会尝试自动注册。请求之间的延迟在agent的RefreshActiveChecks参数中指定。第一个请求在agent重启后立即发送。

Examples

示例1

使用 主机 元数据来区分 Linux 和 Windows 主机。

假设您希望 主机 通过 Zabbix server 自动注册。 您的网络上配置了主动的 Zabbix agents(参见上面的“配置”部分)。 网络中同时存在 Windows 主机 和 Linux 主机, 并且在您的 Zabbix 前端中已有“Linux by Zabbix agent”和“Windows by Zabbix agent”模板。 因此,在 主机 注册时, 您希望将适当的 Linux/Windows 模板应用到正在注册的 主机。 默认情况下,在自动注册时仅发送主机名到服务器,这可能不足以区分类型。 为了确保正确的模板被应用到 主机, 您应当使用 主机 元数据。

前端配置

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

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

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

第二个操作动作:

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

Agent 配置

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

HostMetadataItem=system.uname

通过这种方式,您可以确保 主机 元数据将包含 "Linux" 或 "Windows",具体取决于 主机 上运行的 agent。这种情况下 主机 元数据的示例:

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

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

示例2

步骤 1

使用 主机 元数据来提供针对意外 主机 注册的基本保护。

前端配置

在前端创建一个操作,使用难以猜测的密钥代码来阻止未授权的 主机:

  • 名称:自动注册操作 Linux
  • 条件:
    • 计算类型:AND
    • 条件 (A):主机 元数据包含 //Linux//
    • 条件 (B):主机 元数据包含 //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
  • 操作:
    • 发送消息给用户:Admin,通过所有媒介
    • 添加到 主机 组:Linux 服务器
    • 关联模板:Linux

请注意,此方法本身并不能提供强保护,因为数据是以明文形式传输的。为了使更改立即生效,需要进行 configuration cache 重载。

Frontend configuration

Create an action in the frontend, using some hard-to-guess secret code to disallow unwanted hosts:

  • Name: Autoregistration action Linux
  • Conditions:
    • Type of calculation: AND
    • Condition (A): Host metadata contains //Linux//
    • Condition (B): Host metadata contains //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
  • Operations:
    • Send message to users: Admin via all media
    • Add to host groups: Linux servers
    • Link templates: Linux by Zabbix agent

Please note that this method alone does not provide strong protection because data is transmitted in plain text. Configuration cache reload is required for changes to have an immediate effect.

Agent 配置

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

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

其中,“Linux” 是一个平台,其余的 string 是难以猜测的密钥文本。

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

步骤 2

可以为一个已经注册的 主机 添加额外的监控。

Step 2 - Add template to registered host

It is possible to add additional templates for an already registered host. In this case the MySQL by Zabbix agent template will be linked only to hosts whose HostMetadata contains the token MySQL.

前端配置

在前端更新动作:

  • 名称: 自动注册动作 Linux
  • 条件:
    • 计算类型: AND
    • 条件 (A): 主机 元数据包含 Linux
    • 条件 (B): 主机 元数据包含 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
  • 操作:
    • 发送消息给用户: Admin 通过所有媒介
    • 添加到 主机 组: Linux 服务器
    • 关联模板: Linux
    • 关联模板: MySQL 通过 Zabbix Agent

Agent 配置

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

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

在对配置文件进行任何更改后,请勿忘记通过 get 重启 agent。