On this page

5 Java网关

概述

Zabbix Java 网关可以从 源代码软件包 安装。

对监控 JMX 应用程序的原生支持以名为“Zabbix Java gateway”的 Zabbix 守护进程形式提供。 Zabbix Java gateway 是一个用 Java 编写的守护进程。 要获取某个主机上特定 JMX 计数器的值,Zabbix 服务器会查询 Zabbix Java gateway,而后者使用 JMX 管理 API 远程查询目标应用程序。 该应用程序无需安装任何额外软件,只需在命令行中使用 -Dcom.sun.management.jmxremote 选项启动即可。

Java gateway 接受来自 Zabbix 服务器或 proxy 的传入连接,并且只能作为“被动 proxy”使用。 与 Zabbix proxy 不同,它也可以由 Zabbix proxy 使用(Zabbix proxy 不能级联)。 对每个 Java gateway 的访问都直接在 Zabbix 服务器或 proxy 配置文件中进行配置,因此每个 Zabbix 服务器或 Zabbix proxy 只能配置一个 Java gateway。 如果某个主机同时具有 JMX agent 类型的监控项和其他类型的监控项,则只有 JMX agent 监控项会被传递给 Java gateway 进行获取。

当某个监控项需要通过 Java 网关进行更新时,Zabbix 服务器或 proxy 会连接到 Java 网关并请求该值,而 Java 网关随后会检索该值并将其返回给服务器或 proxy。 因此,Java 网关不会缓存任何值。

Zabbix 服务器或 proxy 有一种专门连接到 Java 网关的进程类型,由 StartJavaPollers 选项控制。 在内部,Java 网关会启动多个线程,由 START_POLLERS 选项 控制。 在服务器端,如果某个连接耗时超过 "Timeout" 秒,它将被终止,但 Java 网关可能仍在忙于从 JMX 计数器检索值。 为了解决这个问题,Java 网关中提供了 TIMEOUT 选项,可用于为 JMX 网络操作设置超时时间。

Zabbix 服务器或 proxy 会尽可能将针对单个 JMX 目标的请求进行汇总(受监控项间隔影响),并通过单个连接发送到 Java 网关,以获得更好的性能。

建议将 StartJavaPollers 设置为小于或等于 START_POLLERS;否则,可能会出现 Java 网关中没有可用线程来处理传入请求的情况。 在这种情况下,Java 网关会使用 ThreadPoolExecutor.CallerRunsPolicy,这意味着主线程将处理传入请求,并且在此期间不会接受任何新请求。

如果您尝试使用 Zabbix Java 网关监控基于 Wildfly 的 Java 应用程序,请安装 Wildfly 下载页面 上提供的最新 jboss-client.jar