전산쟁이의 기억노트

09. java모니터링하기 본문

카테고리 없음

09. java모니터링하기

잘나가는전산쟁이 2026. 8. 5. 02:24
728x90
반응형

Java Gateway를 이용한 Java 모니터링

  • 본 문서는 Zabbix Java Gateway를 이용해 Java 애플리케이션을 JMX 방식으로 모니터링하는 절차를 설명한다.
  • Zabbix의 Java 모니터링은 JMX agent item type을 사용하며, Zabbix Server 또는 Proxy가 Java Gateway를 통해 대상 JVM의 JMX MBean 값을 수집한다.
  • 대상 Java 애플리케이션에는 별도의 Zabbix Agent가 필수는 아니며, JVM이 JMX remote 옵션으로 기동되어 있으면 된다.

구성 개요

  • Zabbix Server 또는 Proxy: JMX agent item 요청을 처리하는 주체.
  • Zabbix Java Gateway: JMX 요청을 받아 대상 JVM에 질의하는 중계 컴포넌트.
  • Java Application: JMX remote가 활성화된 대상 애플리케이션 서버.
  • 통신 포트:
    • Zabbix Server/Proxy -> Java Gateway: 10052/tcp.
    • Java Gateway -> Java Application JMX port: 예) 12345/tcp.
  • Java Gateway는 Zabbix Server 또는 Proxy로부터 요청을 받는 passive component로 동작한다.

권장 방식

  • 공식 문서 기준으로 Java 모니터링은 Java Gateway를 별도 설치하고, Server 또는 Proxy 설정에 JavaGateway, JavaGatewayPort, StartJavaPollers를 지정하는 방식이다.
  • 실제 운영에서는 Java Gateway를 Zabbix Server와 같은 호스트에 두거나, Proxy 인접 위치에 두는 구성이 일반적이다.
  • JMX 포트는 보안상 외부에 직접 노출하지 않고, Zabbix Java Gateway에서만 접근 가능하도록 제한하는 것이 좋다.

사전 준비

  • 대상 Java 애플리케이션은 JMX remote 옵션으로 실행되어야 한다.
  • Zabbix Server 또는 Proxy에는 Java Gateway 연동 설정이 필요하다.
  • Java Gateway가 설치될 서버에는 Java runtime 환경이 필요하다.
  • 방화벽에서 10052/tcp와 JMX 포트를 허용해야 한다.

Java Gateway 설치

  • 패키지 기반 설치가 가능하며, 일반적으로 zabbix-java-gateway 패키지를 사용한다.
  • RHEL 계열 예시는 다음과 같다.
dnf install -y zabbix-java-gateway
  • 설치 후 서비스는 systemd로 관리할 수 있다.
systemctl enable --now zabbix-java-gateway

Java Gateway 설정

  • Java Gateway 설정 파일에서 수신 IP, 포트, poller 수, timeout을 조정할 수 있다.
  • 일반적으로 기본 포트는 10052이다.
vi /etc/zabbix/zabbix_java_gateway.conf
...
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=5
TIMEOUT=3
  • 대상 수가 많아질수록 START_POLLERS와 timeout을 점진적으로 조정한다.

Zabbix Server 설정

  • Zabbix Server 또는 Proxy 설정 파일에서 Java Gateway 위치를 지정해야 한다.
  • Java 모니터링을 사용하려면 StartJavaPollers가 0보다 커야 한다.
vi /etc/zabbix/zabbix_server.conf
...
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
  • Java Gateway를 원격 서버에 두는 경우 JavaGateway에 해당 IP 또는 DNS 이름을 지정한다.
  • 설정 변경 후 Zabbix Server를 재시작한다.
systemctl restart zabbix-server

Java 애플리케이션 설정

  • 대상 Java 애플리케이션은 JMX remote 옵션을 포함해 실행해야 한다.
  • 가장 단순한 예시는 아래와 같다.
java \
 -Dcom.sun.management.jmxremote \
 -Dcom.sun.management.jmxremote.port=12345 \
 -Dcom.sun.management.jmxremote.authenticate=false \
 -Dcom.sun.management.jmxremote.ssl=false \
 -Dcom.sun.management.jmxremote.registry.ssl=false \
 -jar /path/to/application.jar
  • 운영 환경에서는 인증과 TLS를 적용하는 것이 권장된다. JMX를 무인증/무암호화로 외부망에 노출하는 것은 위험하다.
  • Tomcat, WildFly, Spring Boot 등도 동일하게 JMX 옵션을 JVM 기동 인자에 추가하는 방식으로 적용할 수 있다.

Web UI 등록

  • Zabbix Web UI에서 대상 Java 애플리케이션 Host를 생성하거나 기존 Host를 사용한다.
  • Host에는 JMX 타입 인터페이스를 추가해야 한다.
  • JMX interface에는 대상 서버 IP와 JMX 포트(예: 12345)를 입력한다.
  • 템플릿으로는 Generic Java JMX를 우선 적용하는 것이 일반적이다.

JMX Interface 예시

  • Type: JMX
  • IP address:
  • Port: 12345

수집 항목 예시

  • JVM uptime
  • Heap / Non-heap memory usage
  • Thread count
  • Class loading count
  • File descriptor count
  • Process CPU load
  • Garbage collector metrics, memory pool metrics는 LLD로 자동 발견된다.

매크로 및 트리거

  • Generic Java JMX 템플릿에는 heap, non-heap, CPU, file descriptor 관련 기본 트리거가 포함되어 있다.
  • 주요 매크로 예시는 다음과 같다.
    • {$JMX.HEAP.MEM.USAGE.MAX} 기본 85
    • {$JMX.NONHEAP.MEM.USAGE.MAX} 기본 85
    • {$JMX.CPU.LOAD.MAX} 기본 85
    • {$JMX.FILE.DESCRIPTORS.MAX} 기본 85
  • 서비스 특성에 따라 메모리 풀 필터와 임계값을 조정하는 것이 좋다.

방화벽 및 접근 제어

  • Zabbix Server/Proxy에서 Java Gateway의 10052/tcp에 접근 가능해야 한다.
  • Java Gateway에서 대상 Java 애플리케이션의 JMX 포트에 접근 가능해야 한다.
  • JMX 포트는 가능한 한 Java Gateway 또는 Proxy에서만 접근할 수 있도록 제한한다.
  • 운영 환경에서는 JMX 인증과 TLS 적용을 검토해야 한다.

대용량 운영 추천값

  • Java 애플리케이션 수가 많을 경우 Java Gateway를 Zabbix Server와 분리하거나 Proxy 인근에 배치하는 것이 유리하다.
  • 공식 문서는 StartJavaPollers <= START_POLLERS 구성을 권장한다.
  • 추천 시작 기준은 아래와 같다.
항목 추천값
JavaGatewayPort 10052
StartJavaPollers 5부터 시작 후 점진 조정
START_POLLERS StartJavaPollers 이상으로 설정
TIMEOUT 3초부터 시작
JMX 포트 애플리케이션별 고정 포트 사용, 예: 12345
배치 위치 Zabbix Server와 동일 호스트 또는 Proxy 인접
템플릿 Generic Java JMX 우선 적용

점검 항목

  • zabbix-java-gateway 서비스가 정상 실행 중인지 확인한다.
  • Zabbix Server 설정의 JavaGateway, JavaGatewayPort, StartJavaPollers 값이 올바른지 확인한다.
  • Java 애플리케이션이 JMX remote 옵션으로 기동되었는지 확인한다.
  • Java Gateway에서 대상 JMX 포트 접속이 가능한지 확인한다.
  • Web UI의 Host에 JMX interface와 Generic Java JMX 템플릿이 연결되었는지 확인한다.

운영 팁

  • Java Gateway는 값을 캐시하지 않으므로, 과도한 아이템 수와 짧은 수집 주기는 Gateway와 대상 JVM 모두에 부담이 될 수 있다.
  • 대규모 환경에서는 JVM 종류별 템플릿 분리, Java Gateway 분산 배치, Proxy 활용을 함께 검토하는 것이 좋다.
  • WildFly 계열은 최신 jboss-client.jar 요구사항을 확인하는 것이 좋다.
  • Generic Java JMX로 시작한 뒤, Tomcat, Kafka, Cassandra 같은 제품별 템플릿으로 확장하는 방식이 운영에 유리하다.
728x90
반응형
Comments