zabbix小结(十五)Hostname与HostMetadata相关项详解
在zabbix agent端有四项比较神似的四个配置项:Hostname、HostnameItem、HostMetadata、HostMetadataItem 。本篇就作为一个单独的篇幅说下这四项。先看下官方给出的解释。
1### Option: Hostname
2# Unique, case sensitive hostname.
3# Required for active checks and must match hostname as configured on the server.
4# Value is acquired from HostnameItem if undefined.
5#
6# Mandatory: no
7# Default:
8# Hostname=
9### Option: HostnameItem
10# Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
11# Does not support UserParameters or aliases.
12#
13# Mandatory: no
14# Default:
15# HostnameItem=system.hostname
16### Option: HostMetadata
17# Optional parameter that defines host metadata.
18# Host metadata is used at host auto-registration process.
19# An agent will issue an error and not start if the value is over limit of 255 characters.
20# If not defined, value will be acquired from HostMetadataItem.
21#
22# Mandatory: no
23# Range: 0-255 characters
24# Default:
25# HostMetadata=
26### Option: HostMetadataItem
27# Optional parameter that defines an item used for getting host metadata.
28# Host metadata is used at host auto-registration process.
29# During an auto-registration request an agent will log a warning message if
30# the value returned by specified item is over limit of 255 characters.
31# This option is only used when HostMetadata is not defined.
32#
33# Mandatory: no
34# Default:
35# HostMetadataItem=
其实官方的说明还是比较清晰的。
一、hostname与HostnameItem
这部分在上一篇 zabbix小结(十三)zabbix自动注册 中也提过了。这两者之间是冲突的,当配置了Hostname了以后,再使用HostnameItem时,在启动zabbix agent服务时会出现如下信息:Starting Zabbix agent: zabbix_agentd [21988]: Warning: both Hostname and HostnameItem defined, using [www.361way.com] 。
接下来说下两者之间的区别。
- Hostname 在主动模式(对于agent而言的,agent主动)时,会和服务器之间对Hostname信息,即web端配置的名称要和这个名称一致,才会成功。在使用被动模式时,实际上该参数是没用的。但该项配置后主机名称是固定的,比如 Hostname=www.361way.com;
- HostnameItem 作用其实和Hostname是一样的,不过该项是动态的,其支持通过key进行配置,如system.hostname 。当然也支持其他key,只要是zabbix_get能正常取的数据的key理论都是支持的,但并不表示都能用,比如将HostnameItem的值设置为system.uname时,在启动时就报了里面使用特殊字符#,这是不允许的。
1Starting Zabbix agent: zabbix_agentd [28795]: ERROR: invalid "Hostname" configuration parameter:
2'Linux www.361way.com 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64': name contains invalid character '#'
有人说这不是重复功能吗?因为默认情况下监控用的主机名一般都是system.hostname。实际上官方是有一些考量的,比如举一个场景,当我们要对一大批主机进行自动配置时,这里就可以使用HostnameItem ,所有的主机都使用一个模板进行批量部署,就避免了每台主机再去单独设置hostname的麻烦。
二、HostMetadata和HostMetadataItem
这两个又和上面的名字比较像,我在配置自动注册时,就看错过,错使用了HostnameItem,后来排错的时候才发现使用了不对的参数。接下来还说HostMetadata和HostMetadataItem这两个参数,这两个参数在官方文档https://www.zabbix.com/documentation/4.0/manual/discovery/auto_registration 里说的比较详细。这里也再介绍下。
两者都是用于自动注册使用的,HostMetadata属于静态配置,HostMetadataItem属于动态配置,当然还是使用的zabbix key。官方举了两个示例,这里翻译下吧。
第一个示例是关于HostnameMetadataItem的,比如配置key: HostMetadataItem=system.uname
使用了该key后,在不同的操作系统上会获取到不同的信息,比如windows和linux执行后,可能会返回如下信息:
1Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
2Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32
这时候我们就可以通过自动注册功能,确认包含了Linux或windows而链接不同的模板或主机组。第二个示例是关于HostMetadata的。这个属于静态配置,上面已经说过了。
1HostMetadata=Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
比如,我们所有需要自动注册的linux主机,我们可以配置以上的信息,这时候就可以通过匹配两项,一项是linux,另一项可以看作密码key,进而确认匹配的主机会错。同样不同类型的主机我们还可以加不同的字符串进行区分,比如:
1HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
上面这个我们就可以通过三个关键字,mysql、linux、密码串进行区分出主机是运行的mysql服务,所以就把他自动链接到了mysql模板上。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/zabbix-hostname-hostmetadata/6015.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.