5 Java gateway

개요

Zabbix Java gateway는 소스 코드 또는 패키지에서 설치할 수 있습니다.

JMX 애플리케이션 모니터링에 대한 네이티브 지원은 "Zabbix Java gateway"라고 불리는 Zabbix 데몬 형태로 존재합니다. Zabbix Java gateway는 Java로 작성된 데몬입니다. 호스트에서 특정 JMX 카운터의 값을 찾기 위해 Zabbix 서버는 Zabbix Java gateway에 쿼리하며, 이는 JMX management API를 사용하여 대상 애플리케이션을 원격으로 쿼리합니다. 애플리케이션은 추가 소프트웨어를 설치할 필요가 없으며, 명령줄에서 -Dcom.sun.management.jmxremote 옵션으로 시작하기만 하면 됩니다.

Java gateway는 Zabbix 서버 또는 프록시로부터의 들어오는 연결을 수락하며 "패시브 프록시"로만 사용할 수 있습니다. Zabbix 프록시와 달리 Zabbix 프록시에서도 사용할 수 있습니다 (Zabbix 프록시는 체인될 수 없습니다). 각 Java gateway에 대한 액세스는 Zabbix 서버 또는 프록시 구성 파일에서 직접 구성되므로 Zabbix 서버 또는 Zabbix 프록시당 하나의 Java gateway만 구성할 수 있습니다. 호스트가 JMX agent 타입의 아이템과 다른 타입의 아이템을 가지고 있는 경우, JMX agent 아이템만 Java gateway로 전달되어 검색됩니다.

Java gateway를 통해 아이템을 업데이트해야 할 때, Zabbix 서버 또는 프록시는 Java gateway에 연결하여 값을 요청하고, Java gateway는 이를 검색하여 서버 또는 프록시에 다시 전달합니다. 따라서 Java gateway는 어떤 값도 캐시하지 않습니다.

Zabbix 서버 또는 프록시에는 Java gateway에 연결하는 특정 유형의 프로세스가 있으며, 이는 StartJavaPollers 옵션으로 제어됩니다. 내부적으로 Java gateway는 START_POLLERS 옵션으로 제어되는 여러 스레드를 시작합니다. 서버 측에서 연결이 "Timeout" 초보다 오래 걸리면 종료되지만, Java gateway는 여전히 JMX 카운터에서 값을 검색하느라 바쁠 수 있습니다. 이를 해결하기 위해 Java gateway에는 JMX 네트워크 작업에 대한 타임아웃을 설정할 수 있는 TIMEOUT 옵션이 있습니다.

Zabbix 서버 또는 프록시는 단일 JMX 대상에 대한 요청을 가능한 한 많이 풀링하고 (아이템 간격에 영향을 받음) 더 나은 성능을 위해 단일 연결로 Java gateway에 보냅니다.

StartJavaPollersSTART_POLLERS보다 작거나 같게 설정하는 것이 권장됩니다. 그렇지 않으면 Java gateway에서 들어오는 요청을 처리할 수 있는 스레드가 없는 상황이 발생할 수 있습니다. 이러한 경우 Java gateway는 ThreadPoolExecutor.CallerRunsPolicy를 사용하여 메인 스레드가 들어오는 요청을 처리하고 일시적으로 새로운 요청을 받지 않습니다.

Zabbix Java gateway로 Wildfly 기반 Java 애플리케이션을 모니터링하려고 한다면, Wildfly 다운로드 페이지에서 사용 가능한 최신 jboss-client.jar를 설치하십시오.