5 Java网关
概述
Zabbix 通过名为“Zabbix Java 网关”的 Zabbix 守护进程原生支持对 JMX 应用程序的监控。
Zabbix Java 网关是一个用 Java 编写的守护进程。为了获取某个主机上特定 JMX 计数器的值,Zabbix 服务器会查询 Zabbix Java 网关,而后者使用 JMX 管理
API
对目标应用程序进行远程查询。该应用程序无需安装任何额外软件,只需在命令行中使用
-Dcom.sun.management.jmxremote 选项启动即可。
Java 网关接受来自 Zabbix 服务器或 proxy 的传入连接,并且只能作为“被动 proxy”使用。与 Zabbix proxy 不同,它也可以被 Zabbix proxy 使用(Zabbix proxies 不能级联)。对每个 Java 网关的访问都是直接在 Zabbix 服务器或 proxy 的配置文件中进行配置的,因此每个 Zabbix 服务器或 Zabbix proxy 只能配置一个 Java 网关。如果某个主机同时具有 JMX agent 类型的监控项和其他类型的监控项,则只有 JMX agent 类型的监控项会被传递给 Java 网关进行采集。
当必须通过 Java网关更新监控项时,Zabbix server 或 proxy 将连接到 Java网关并请求该值,Java网关将检索该值并将其传递回 Zabbix server 或 Zabbix proxy。 因此,Java网关不会缓存任何值。
Zabbix server 或 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。