2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 Active agent自动注册

概述

Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。

当以前未知的active agent要求检查时,会发生自动注册。

这样功能可以非常方便的自动监控新的Cloud节点。一旦在Cloud中有一个新节点,Zabbix将自动启动host的性能和可用性数据的收集。

Active agent自动注册还支持对被添加的主机进行被动检查的监控。当active agent要求检查时,前提是在配置文件中已定义好了“ListenIP”或“ListenPort”配置参数,这些参数将发送到服务器。(如果指定了多个IP地址,则第一个将被发送到服务器。)

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

以下情况下,自动注册会自动运行:

  • 主机元数据信息发生变化
  • 手动添加主机,元数据信息有缺失
  • 手动切换主机,由另一台新的proxy监控
  • 同一台host的自动注册由新的proxy发出

配置

指定服务器

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

ServerActive=10.0.0.1

如果你没有在zabbix_agentd.conf中特别定义Hostname, 则服务器将使用agent的系统主机名命名主机。Linux中的系统主机名可以通过运行'hostname'命令获取。

修改配置文件后需要重启agent

Aactive agent自动注册动作

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

设置网络发现并不需要激活agent来实现自动注册

在Zabbix前端页面,点击配置 → 动作,选择自动注册 为事件源,然后单击创建动作:

  • 在动作选项卡,定义动作名称
  • 可选指定条件。如果要使用“主机元数据”条件,请参阅下一节。
  • 在“操作”选项卡中,需要添加关联操作,如“添加主机”,“添加到主机组”(例如,发现的主机),“链接到模板”等。

<note tip>如果自动注册主机只能支持主动监视(例如由于防火墙的原因,Zabbix服务器不允许访问的主机),则可能需要创建一个特定的模板,如Template_Linux-active来做关联。 :::

创建的主机被添加到发现的主机组中(默认情况下,可在“管理 → 通用 → 其他”中配置)。如果需要将主机添加到其他主机组中,需要添加“从主机组中移除”(指定“已发现的主机”)和“添加到主机组”(指定其他主机组),因为主机必须属于某个主机组。 d

安全的自动注册

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

加密级别的全局配置方式 Administration一般, 可以通过右边的下拉菜单访问"自动注册"部分。 可以选择不加密\TLS加密与PSK认证方式,或两者都选择(这样一些主机可以注册不加密,而其他人通过加密)。

PSK认证在添加主机前需要通过Zabbix服务器验证。如果成功,链接/添加主机,从/到主机的连接将被设置为'PSK',仅使用与全局自动注册设置相同的身份/预共享密钥。

为了确保使用代理的安装自动注册的安全性,Zabbix server和Zabbix proxy之间应该启用加密。

使用DNS作为默认接口

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

更具体地说,如果主机应该以DNS名称(而不是IP地址)作为默认代理接口进行自动注册,则它们是有用的。在这种情况下,应该指定DNS名称,或者作为HostInterface或HostInterfaceItem参数的值返回。注意,如果两个参数之一的值发生变化,自动注册的主机接口就会更新。因此,可以将缺省接口更新为另一个DNS名称或更新为一个IP地址。但是,为了使更改生效,必须重新启动代理。

使用主机元数据

当agent程序向服务器发送自动注册请求时,会发送其主机名。在某些情况下(例如,Amazon云端节点),Zabbix Server只通过主机名区分主机。这时可以选择主机元数据将其他信息从agent发送到服务器。

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

HostMetadata
       HostMetadataItem

请参阅上面链接中的选项描述。

<note:important>每当active agent发送刷新主动检查请求到服务器时,都会进行自动注册尝试。请求的延迟在agent的RefreshActiveChecks参数中指定。第一个请求在agent重新启动后立即发送。 :::

案例1

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

假设你希望主机由Zabbix server自动注册,你的网络上有active Zabbix agents(请参阅上面的“配置”部分),你的网络上有Windows主机和Linux主机,你有“Template OS Linux”和“Template OS Windows” 模板,Zabbix页面可以使用。 在主机注册时,你希望将Linux / Windows模板正确的应用在正在注册的主机。默认情况下,只有主机名在自动注册时会发送到服务器,但这还不够。为了确保将正确的模板应用于主机,你应该使用主机元数据。

前段配置

第一步是配置前端,创建2个动作,第一个动作:

  • 名称:Linux主机自动注册
  • 条件:主机元数据,如Linux
  • 动作:链接到模板:Template OS Linux

在这种情况下,您可以跳过"添加主机"的操作。链接到模板需要首先添加主机,服务器会自动执行"添加主机"的操作。

第二个动作:

  • 名称:Windows主机自动注册
  • 条件:主机元数据,如Windows
  • 操作:链接到模板:Template OS Windows
Agent配置

第二部进行Agent配置,添加下行至agent配置文件中:

HostMetadataItem=system.uname

通过这种方式,您可以确保主机元数据将包含“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

不要忘记在对配置文件进行任何更改后重新启动代理。

示例 2

第一步

使用主机元数据允许一些基本的保护,以防止不受欢迎的主机注册。

前置配置

在前端创建一个动作,使用一些难以猜测的秘密代码禁止不需要的主机注册:

  • Name: Auto registration action Linux
  • Conditions:
    * Type of calculation: AND
           * Condition (A): Host metadata like //Linux//
           * Condition (B): Host metadata like //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
       * Operations: 
           * Send message to users: Admin via all media
           * Add to host groups: Linux servers
           * Link to templates: Template OS Linux

请注意,由于数据是以明文形式传输的,仅此方法不能提供强大的保护。为了使更改立即生效,需要重新加载配置缓存。

Agent配置

在配置文件中增加下面一行代码:

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

其中”Linux"是一个平台,字符串的其余部分是难以猜测的秘密文本。 不要忘记在对配置文件进行任何更改后重新启动代理。

第二步

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

前端配置

在前端更新操作:

  • Name: Auto registration action Linux
  • Conditions:
    * Type of calculation: AND
           * Condition (A): Host metadata like Linux
           * Condition (B): Host metadata like 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
       * Operations:
           * Send message to users: Admin via all media
           * Add to host groups: Linux servers
           * Link to templates: Template OS Linux
           * Link to templates: Template DB MySQL
Agent配置

在配置文件中增加下面一行代码:

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

不要忘记在对配置文件进行任何更改后重新启动代理。