2 agent(主动模式) 自动注册
概述
可以启用活动 Zabbix agent 自动注册,之后服务器即可开始对其进行监控。 这样一来,无需在服务器上手动配置,即可将新的主机添加到监控中。
当此前未知的活动 agent 请求检查时,就会发生自动注册。
此功能对于自动监控新的云节点可能非常方便。 一旦您在云中有了新节点,Zabbix 就会自动开始采集该主机的性能和可用性数据。
活动 agent 自动注册也支持通过被动检查监控已添加的主机。
当活动 agent 请求检查时,如果其配置文件中定义了 ListenIP 或 ListenPort 配置参数,这些参数也会一并发送到服务器。
如果指定了多个 IP 地址,则第一个会发送到服务器。
服务器在添加新自动注册的主机时,会使用接收到的 IP 地址和端口来配置 agent。 如果未接收到 IP 地址值,则使用传入连接所使用的地址。 如果未接收到端口值,则使用 10050。
可以指定主机使用 DNS 名称 作为默认 agent 接口进行自动注册。
在以下情况下,会重新执行自动注册:
- 如果主机元数据信息发生变化:
- 由于 HostMetadata 发生变化并且 agent 重启
- 由于 HostMetadataItem 返回的值发生变化
- 对于缺少元数据的手动创建主机
- 如果某主机被手动更改为由另一个 Zabbix proxy 监控
- 如果同一主机的自动注册来自新的 Zabbix proxy
Zabbix 服务器和 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。
active agent 自动注册的动作
当服务器收到来自 agent 的自动注册请求时,它会调用一个action。 必须为 agent 自动注册配置一个事件源为“自动注册”的动作。
要让 active agent 自动注册,不需要设置网络发现。
在 Zabbix 前端中,转到 告警 → 动作,选择 自动注册动作,然后点击 创建动作:
- 在“动作”标签页中,为你的动作指定一个名称
- 可选地指定条件。 你可以在主机名称/主机元数据的条件中使用子字符串匹配或正则表达式匹配。 如果你打算使用“主机元数据”条件,请参见下一节。
- 在“操作”标签页中,添加相关操作,例如:“添加主机”、“添加到主机组”(例如 Discovered hosts)、“链接模板”等。
如果将要自动注册的主机很可能只支持 active 监控(例如,这些主机因防火墙限制而无法被你的 Zabbix 服务器访问),那么你可能需要创建一个专用模板,例如 Template_Linux-active,用于链接到这些主机。
创建的主机会被添加到 Discovered hosts 组中(默认情况下如此,可在 Administration > General > Other 中配置)。
如果你希望将主机添加到其他组中,请添加一个 从主机组移除 操作(指定“Discovered hosts”),并同时添加一个 添加到主机组 操作(指定另一个主机组),因为主机必须属于某个主机组。
安全自动注册
通过配置基于 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。