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

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

概述

可以允许主动 Zabbix agent的自动注册,自动注册后zabbix server可以开始监控它们。通过这种方式添加的主机不必再手工配置。

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

这个功能对于自动监控新的云节点非常有用。一旦在云中有了新节点,Zabbix 将自动开始收集主机的性能和可用性数据。

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

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

可以指定使用 DNS 名称作为默认代理接口来进行主机的自动注册(参见 使用 DNS 作为默认接口)。

自动注册会重新运行:

  • 如果主机的 metadata 信息发生变化:
    • 由于 HostMetadata 更改并重新启动代理
    • 由于 HostMetadataItem 返回的值更改
  • 对于手动创建的缺少元数据的主机
  • 如果手动更改了要由另一个 Zabbix 代理监控的主机
  • 如果来自新 Zabbix 代理的同一主机的自动注册

Zabbix server和 Zabbix proxy的active agent自动注册心跳间隔为 120 秒。因此,如果删除了一个已发现的主机,则自动注册将在 120 秒后重新运行。

配置

定义Zabbix server

确保在 配置文件 - zabbix_agentd.conf中定义了Zabbix server。

ServerActive=10.0.0.1

如果不在zabbix_agentd.conf中定义 主机名称(Hostname),则Zabbix会使用agent所在系统的主机名称给主机命名。Linux系统的主机名称可以通过运行命令 'hostname' 来获取。

如果定义的 主机名称(Hostname) 是以逗号分隔的多台主机,那么其中定义的所有主机均会被创建。

agent配置变更需要重启agent生效。

用于active agent自动注册的动作设置

当Zabbix server接收到agent的自动注册请求时,会调用一个动作。这个动作的事件源必须配置为 "Autoregistration" 以便进行agent自动注册。

设置 网络发现 不是必须要有active agents来进行自动注册。

在 Zabbix 前端中,进入 Alerts → Actions,选择 Autoregistration 作为事件源,并点击 Create action

  • 在动作选项卡中,为动作命名。
  • 可选地指定条件,例如主机名或主机元数据的子字符串匹配或正则表达式匹配。如果使用 "Host metadata" 条件,请参考下一节的内容。
  • 在操作选项卡中,添加相关操作,- 'Add host':添加主机。'Add to host group':将主机添加到特定的主机组(例如 Discovered hosts),'Template_Linux-active':关联模板等。

如果将要自动注册的主机可能仅支持主动监控(例如受到防火墙保护以阻止直接连接到你的 Zabbix 服务器),则建议创建一个专用模板,如 Template_Linux-active,用于关联。

自动创建的主机默认会被添加到 发现的主机 主机组中(可以在 管理通用其他 中进行配置)。 如果希望将主机添加到其他主机组中,需要进行如下操作:

  • 添加一个 从主机组中移除 操作(指定 "发现的主机"),用于从默认主机组移除主机。
  • 添加一个 添加到主机组 操作,指定要添加到的其他主机组,因为一个主机必须属于至少一个主机组。

这样设置可以确保新发现的主机按照你的预期被自动注册和分类。

自动注册的安全性考量

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

全局配置加密级别位于 管理通用自动发现 中设置。 可以选择不加密、使用PSK身份验证的TLS加密,或两者兼而有之(以便某些主机可以不加密注册,而其他主机则通过加密注册)。

PSK身份验证在向 Zabbix server添加主机之前对预共享密钥(PSK)进行核实。 验证成功后,主机被添加,并且主机的 从主机发起的/到主机的通信连接 被设置为仅使用PSK,其身份验证信息/预共享密钥与全局自动注册设置中的相同。

为确保在使用代理时自动注册的安全性,应启用Zabbix server与proxy之间的加密。

使用DNS作为默认接口

在自动注册过程中,主机接口(HostInterface)和主机接口监控项(HostInterfaceItem) 配置参数的值允许自定义。

具体来说,如果主机使用DNS名称而不是IP地址作为默认agent接口进行自动注册时,对参数的值进行自定义就发挥作用了。这种情况下,DNS名称应通过HostInterface或HostInterfaceItem参数进行设置。 注意,如果上述参数的值发生改变,自动注册的主机接口也会更新。所以可以通过更换DNS名称来更新默认接口,或给DNS名称改成IP地址来更新接口。 Zabbix agent需要重启来使变更生效。 ::: noteclassic 如果不配置HostInterface和HostInterfaceItem这两个参数,那么listen_dns参数会从IP地址来解析。如果解析配置错误,可能会因为主机名称无效导致自动注册失败。 :::

使用主机元数据

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

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

HostMetadata
       HostMetadataItem

请参考上面链接中这些选项的描述。

HostMetadataItem 参数可以返回最多65535个UTF-8编码值。如果值过长,将会被截断。

请注意,在MySQL中,如果返回值包含多字节字符,实际的最大长度(以字符为单位)将会更少。例如,仅包含3字节字符的值总长度将被限制为21844个字符,而仅包含4字节字符的值则会被限制为16383个字符。

每当活动agent发送请求以刷新活动检查到Zabbix server时,就会发生自动注册尝试。请求之间的延迟由agent的 RefreshActiveChecks 参数指定。在agent重新启动后,第一个请求会立即发送。

例1

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

假设你想让主机自动注册到Zabbix server。 网络中有配置了active agent(参阅上述"配置"章节)的Windows和Linux主机,并且Zabbix页面中有"Linux by Zabbix agent"和"Windows by Zabbix agent"这两个可用模板。 于是你想在注册过程中将Linux/Windows模板自动应用到对应主机。在自动注册过程中,默认只有主机名称会发送给Zabbix server,可是这些信息并不够。要想确保合适的模板应用到对应主机上,需要使用主机元数据。

前端配置

首先要做的是配置前端。创建两个操作。

第一个操作:

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

在这种情况下,你可以跳过“添加主机”的操作。直接将模板关联到主机需要先添加主机,Zabbix server会自动完成这一步骤。

第二个操作:

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

Agent配置

现在需要配置agent了。添加下面一行到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

对配置文件做了变更后别忘记重启agent。

例2

第一步

使用主机元数据实施一些基本的保护措施,禁止非预期的主机进行注册。

前端页面配置

在前端页面上新建一个动作,使用难以猜测的密码来阻挡非预期的主机来注册:

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

请注意单独使用此方法不会提供很强的保护,因为数据通过明文传输。需要重新加载配置缓存以使变更生效。

** Agent配置**

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

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

"Linux"指的是操作系统平台,剩下的字符串是难以猜测的密文.

对配置文件做了变更后别忘记重启agent。

第二步

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

前端页面配置

更新前端页面中的动作:

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

** Agent配置**

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

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

对配置文件做了变更后别忘记重启agent。