Microsoft Windows 上的 Zabbix agent

配置 agent

两代 Zabbix agent 都作为 Windows 服务运行。
对于 Zabbix agent 2,请在以下说明中将 agentd 替换为 agent2

您可以在 Microsoft Windows 主机上运行单个 Zabbix agent 实例,也可以运行多个 agent 实例。
单个实例可以使用以下任一配置:

  • 默认配置文件,该文件位于 agent 二进制文件所在的同一目录中;
  • 在命令行中指定的配置文件。

如果运行多个实例,则每个 agent 实例都必须拥有自己的配置文件(其中一个实例可以使用默认配置文件)。

Zabbix 源代码归档中提供了示例配置文件:

  • Zabbix agent 使用 conf/zabbix_agentd.conf
  • Zabbix agent2 使用 conf/zabbix_agent2.conf

如果您希望从归档中将适用于 Windows 的 Zabbix agent/agent 2 安装为服务,而不显式指定配置文件,则在安装 agent 之前:

  • 应手动将 conf/zabbix_agentd.conf 复制到要安装 zabbix_agentd.exe 的目录;
  • 应手动将 conf/zabbix_agent2.confconf/zabbix_agent2.d 目录复制到要安装 zabbix_agent2.exe 的目录。

有关配置 Zabbix Windows agent 的详细信息,请参阅 Zabbix agent 配置文件或 Zabbix agent 2 配置文件选项。

Hostname 参数

要在主机上执行主动检查,Zabbix agent 必须定义主机名。 此外,agent 端设置的主机名值必须与前端中为该主机配置的主机名完全匹配。

agent 端的主机名值可以通过agent 配置文件中的 HostnameHostnameItem 参数定义;如果未指定其中任何参数,则使用默认值。

HostnameItem 参数的默认值是 system.hostname agent 键返回的值。 对于 Windows,该键返回 gethostname() 函数的结果;该函数会查询命名空间提供程序,以确定本地主机名。 如果没有命名空间提供程序响应,则返回 NetBIOS 名称。

Hostname 的默认值是 HostnameItem 参数返回的值。 因此,实际上,如果这两个参数均未指定,实际主机名将是主机的 NetBIOS 名称;Zabbix agent 将使用 NetBIOS 主机名从 Zabbix 服务器获取主动检查列表,并将结果发送到服务器。

system.hostname 键支持两个可选参数 - typetransform

Type 决定监控项应返回的名称类型:

  • netbios(默认)- 返回 NetBIOS 主机名,该名称最多包含 15 个字符,且仅使用大写字母;
  • host - 区分大小写,返回完整的真实 Windows 主机名(不含域名);
  • shorthost - 返回主机名中第一个点号之前的部分。 如果名称不包含点号,则返回完整字符串。
  • fqdn - 返回完全限定域名(不含末尾的点号)。

Transform 用于指定主机名的其他转换规则:

  • none(默认)- 使用原始字母大小写;
  • lower - 将文本转换为小写。

因此,为了简化 zabbix_agentd.conf 文件的配置并使其保持统一,可以采用以下不同方法:

  1. 不定义 HostnameHostnameItem 参数,Zabbix agent 将使用 NetBIOS 主机名作为主机名。
  2. 不定义 Hostname 参数,并按如下方式定义 HostnameItem
    • HostnameItem=system.hostname[host] - 让 Zabbix agent 使用完整的真实 Windows 主机名(区分大小写)作为主机名。
    • HostnameItem=system.hostname[shorthost,lower] - 让 Zabbix agent 仅使用主机名中第一个点号之前的部分,并将其转换为小写。
    • HostnameItem=system.hostname[fqdn] - 让 Zabbix agent 使用完全限定域名作为主机名。

主机名还会作为 Windows 服务名称的一部分,用于安装、启动、停止和卸载 Windows 服务。例如,如果 Zabbix agent 配置文件指定了 Hostname=Windows_db_server,则该 agent 将作为 Windows 服务 Zabbix Agent [Windows_db_server] 安装。因此,要为每个 Zabbix agent 实例使用不同的 Windows 服务名称,每个实例必须使用不同的主机名。

将 agent 安装为 Windows 服务

在安装 agent 之前,请先将 conf/zabbix_agentd.conf 手动复制到 zabbix_agentd.exe 将要安装的目录中。

要使用默认配置文件安装单个 Zabbix agent 实例:

zabbix_agentd.exe --install

在 64 位系统上,所有与运行 64 位进程相关的检查要正常工作,都需要使用 64 位版本的 Zabbix agent。

如果您希望使用默认配置文件以外的其他配置文件,则应使用以下命令安装服务:

zabbix_agentd.exe --config <your_configuration_file> --install

应指定配置文件的完整路径。

可以像这样将多个 Zabbix agent 实例安装为服务:

  zabbix_agentd.exe --config <configuration_file_for_instance_1> --install --multiple-agents
  zabbix_agentd.exe --config <configuration_file_for_instance_2> --install --multiple-agents
  ...
  zabbix_agentd.exe --config <configuration_file_for_instance_N> --install --multiple-agents

现在,已安装的服务应可在控制面板中看到。

启动 agent

要启动 agent 服务,您可以使用控制面板,也可以通过命令行执行。

要使用默认配置文件启动一个 Zabbix agent 实例:

 zabbix_agentd.exe --start

要使用其他配置文件启动一个 Zabbix agent 实例:

 zabbix_agentd.exe --config <your_configuration_file> --start

要启动多个 Zabbix agent 实例中的某一个:

 zabbix_agentd.exe --config <configuration_file_for_this_instance> --start --multiple-agents

停止 agent

要停止 agent 服务,您可以使用控制面板,也可以通过命令行执行。

要停止使用默认配置文件启动的单个 Zabbix agent 实例:

 zabbix_agentd.exe --stop

要停止使用其他配置文件启动的单个 Zabbix agent 实例:

 zabbix_agentd.exe --config <your_configuration_file> --stop

要停止多个 Zabbix agent 实例中的某一个:

 zabbix_agentd.exe --config <configuration_file_for_this_instance> --stop --multiple-agents

卸载 agent Windows 服务

要使用默认配置文件卸载单个 Zabbix agent 实例:

   zabbix_agentd.exe --uninstall

要使用非默认配置文件卸载单个 Zabbix agent 实例:

   zabbix_agentd.exe --config <your_configuration_file> --uninstall

要从 Windows 服务中卸载多个 Zabbix agent 实例:

  zabbix_agentd.exe --config <configuration_file_for_instance_1> --uninstall --multiple-agents
  zabbix_agentd.exe --config <configuration_file_for_instance_2> --uninstall --multiple-agents
  ...
  zabbix_agentd.exe --config <configuration_file_for_instance_N> --uninstall --multiple-agents

限制

Windows 版 Zabbix agent 不支持 CPU 在 NUMA 节点之间非均匀分布的非标准 Windows 配置。如果逻辑 CPU 的分布 不均匀,则某些 CPU 可能无法获取 CPU 性能指标。例如,如果有 72 个逻辑 CPU 和 2 个 NUMA 节点, 则两个节点都必须各有 36 个 CPU。