Sidebar

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

概述

可以使用Zabbix agent(主动模式) 自动注册功能来添加主机,自动注册后Zabbix server就可以开始进行监控了。通过这种方式添加的主机不必再手工配置。 只要有未知的主动模式agent请求检查,就会触发自动注册。

该特性对于云上新增节点的自动监控很方便。一旦云上新增了一个节点,Zabbix就开始自动收集该节点的性能和可用性数据。

对于通过zabbix agent(被动模式)添加的主机,agent(主动模式) 自动注册同样可以监控它们。agent(主动模式)请求检查时,会将配置文件中定义的监听IP(ListenIP)或监听端口(ListenPort)参数一同发送给Zabbix server。

注册新主机时,Zabbix server使用收到的IP地址和端口信息来配置agent。如果没收到IP地址信息,则使用入站连接中的对端IP地址。如果没收到端口信息,则使用10050作为agent的端口。

可以使用DNS名称作为默认agent接口来进行自动注册。

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

  • 主机 元数据 信息变更:
    • 由于HostMetadata信息变更并且agent重启
    • 由于HostMetadataItem信息变更
  • 手动添加的主机丢失元数据信息
  • 已注册的主机手动迁移到另一个Zabbix proxy上
  • 从一个新的Zabbix proxy收到同一台主机的自动注册信息

配置

定义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自动注册动作

一旦收到从agent发来的自动注册请求,Zabbix server会调用动作。为了实现agent自动注册,必须配置 "自动注册" 这个事件源的动作。

设置 网络发现无需active agent自动注册参与。

在Zabbix界面上, 转到 配置→ 动作, 选择 自动注册 作为事件源并点击 创建动作:

  • 在动作(Action)选项卡中, 给动作设置一个名称
  • 条件为可选设置。 可以对主机名称/主机元数据设置字符串匹配或正则表达式匹配。如果使用 "主机元数据"作为条件,参照下一小节。
  • 在操作(Operations)选项卡中,添加相关操作,比如 - '添加主机','添加主机组' (比如 发现的主机 这个组),'链接到模板' 等。

如果待自动注册的主机只支持主动模式(active)监控(比如主机防火墙策略阻挡了Zabbix server向agent发起请求),那么可以为主机创建这样的模板 Template_Linux-active

新建的主机会添加到 发现的主机 组(默认可在这里配置:管理通用其它 如果想添加主机到其它组,可以先执行一个 从主机组中移除 操作(指定主机组 "发现的主机"),然后再执行 添加到主机组 操作(指定另一个主机组),因为一个主机必须属于一个主机组。

自动注册的安全性考量

一种安全的自动注册方式是通过配置基于预共享密钥(PSK)的认证对通信加密。

可在 管理通用 的右侧下拉菜单中的自动注册面板中配置加密级别,全局生效。 可以选不加密,使用预共享密钥(PSK)的TLS加密或以上两者同时启用(这样就会让一些主机注册时不经过加密,另一些主机经过加密方式注册)。

Zabbix server新增主机前会对预共享密钥(PSK)进行核实。 一旦核实成功,主机就会被添加,并且 从主机发起的/到主机的通信连接 设置为仅使用 'PSK' 并且其身份/预共享密钥与全局的自动注册配置中设置的相同。

为确保使用Zabbix proxy时自动注册的安全性,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上。某些情况下(比如亚马逊云主机)无法通过主机名称来区分发现的主机。 agent可以通过发送主机元数据这个可选配置来提供其它信息。

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

HostMetadata
       HostMetadataItem

详情请参阅上述链接。

每次active 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。