可以使用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接口来进行自动注册。
以下情况会重新执行自动注册:
确保在 配置文件 - zabbix_agentd.conf中定义了Zabbix server。
如果不在zabbix_agentd.conf中定义 主机名称(Hostname),则Zabbix会使用agent所在系统的主机名称给主机命名。Linux系统的主机名称可以通过运行命令 'hostname' 来获取。
如果定义的 主机名称(Hostname) 是以逗号分隔的多台主机,那么其中定义的所有主机均会被创建。
agent配置变更需要重启agent生效。
一旦收到从agent发来的自动注册请求,Zabbix server会调用动作。为了实现agent自动注册,必须配置 "自动注册" 这个事件源的动作。
设置 网络发现无需active agent自动注册参与。
在Zabbix界面上, 转到 配置→ 动作, 选择 自动注册 作为事件源并点击 创建动作:
如果待自动注册的主机只支持主动模式(active)监控(比如主机防火墙策略阻挡了Zabbix server向agent发起请求),那么可以为主机创建这样的模板 Template_Linux-active。
新建的主机会添加到 发现的主机 组(默认可在这里配置:管理 → 通用 → 其它 如果想添加主机到其它组,可以先执行一个 从主机组中移除 操作(指定主机组 "发现的主机"),然后再执行 添加到主机组 操作(指定另一个主机组),因为一个主机必须属于一个主机组。
一种安全的自动注册方式是通过配置基于预共享密钥(PSK)的认证对通信加密。
可在 管理 → 通用 的右侧下拉菜单中的自动注册面板中配置加密级别,全局生效。 可以选不加密,使用预共享密钥(PSK)的TLS加密或以上两者同时启用(这样就会让一些主机注册时不经过加密,另一些主机经过加密方式注册)。
Zabbix server新增主机前会对预共享密钥(PSK)进行核实。 一旦核实成功,主机就会被添加,并且 从主机发起的/到主机的通信连接 设置为仅使用 'PSK' 并且其身份/预共享密钥与全局的自动注册配置中设置的相同。
为确保使用Zabbix proxy时自动注册的安全性,Zabbix server和proxy之间应该启用加密。
在自动注册过程中,主机接口(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中定义。 有两种方式来设置主机元数据:
详情请参阅上述链接。
每次active agent发送请求到Zabbix server刷新检查时,会尝试进行自动注册。 请求之间的延迟在agent的 RefreshActiveChecks 参数 中定义。agent重启后会立刻发送第一个请求。
使用主机元数据区分Linux和Windows主机。
假设你想让主机自动注册到Zabbix server。 网络中有配置了active agent(参阅上述"配置"章节)的Windows和Linux主机,并且Zabbix页面中有"Linux by Zabbix agent"和"Windows by Zabbix agent"这两个可用模板。 于是你想在注册过程中将Linux/Windows模板自动应用到对应主机。在自动注册过程中,默认只有主机名称会发送给Zabbix server,可是这些信息并不够。要想确保合适的模板应用到对应主机上,需要使用主机元数据。
首先需要做的就是配置前端页面。新建两个动作。 第一个动作:
这个例子中可以跳过"添加主机"操作这个步骤。虽然链接到模板需要先添加主机,但Zabbix server会自动完成添加主机操作。
第二个动作:
现在需要配置agent了。添加下面一行到agent配置文件中:
通过这种方式能确保主机元数据包含"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。
第一步
使用主机元数据实施一些基本的保护措施,禁止非预期的主机进行注册。
在前端页面上新建一个动作,使用难以猜测的密码来阻挡非预期的主机来注册:
* 计算类型: AND
* 条件 (A): 主机元数据包含 //Linux//
* 条件 (B): 主机元数据包含 //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
* 操作:
* 发送信息给用户: 通过所有媒介发送给Admin
* 添加到主机组: Linux servers
* 链接到模板: Linux
请注意单独使用此方法不会提供很强的保护,因为数据通过明文传输。需要重新加载配置缓存以使变更生效。
添加下面一行到agent配置文件中:
"Linux"指的是操作系统平台,剩下的字符串是难以猜测的密文.
对配置文件做了变更后别忘记重启agent。
第二步
可以为已经注册的主机添加额外的监控内容。
更新前端页面中的动作:
* 计算类型: AND
* 条件 (A): 主机元数据包含 Linux
* 条件 (B): 主机元数据包含 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
* 操作:
* 发送信息给用户: 通过所有媒介发送给Admin
* 添加到主机组: Linux servers
* 链接到模板: Linux
* 链接到模板: MySQL by Zabbix Agent
更新下面一行到agent配置文件中:
对配置文件做了变更后别忘记重启agent。