Notice
Recent Posts
Recent Comments
Tags
- openldap
- admin port
- drbd
- wildfly jboss
- CEP
- Storage
- Netflix
- pod
- MotD
- n15148
- n1548
- perplexity
- dell
- Network
- maxscale
- banner
- CentOS
- 진상부모_물러가라
- 우파푸른하늘
- 참교육
- snmp
- mgmtip
- vmware
- Auth
- RHEL8
- port description
- docker
- etcd
- Path
- web&was apche htaccess
- data-door
- mariadb
- 웰카
- Kubernetes
- 우파푸른하늘80만이벤트
- Galera Cluster
- unix_socket
반응형
250x250
전산쟁이의 기억노트
09. java모니터링하기 본문
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
