본문 바로가기
카테고리 없음

✅ WebLogic JMX Exporter를 활용한 Prometheus 메트릭 수집 구성방안

by frontier12 2025. 5. 30.


1. 개요

WebLogic은 자체적으로 매우 풍부한 시스템 메트릭(JVM 상태, JDBC 풀, JMS 큐 상태 등)을 **JMX(Java Management Extensions)**를 통해 노출합니다.
이 JMX 정보를 Prometheus JMX Exporter를 통해 수집하면, WebLogic 서버에 특화된 운영 메트릭을 Prometheus 기반으로 통합 관제할 수 있습니다.

이 방식은 Spring Boot Actuator 기반 메트릭만으로는 부족한 **WebLogic 내부 자원 상태(JDBC 풀 상태, thread pool, EJB 처리량 등)**까지 확인 가능한 장점이 있습니다.



2. 아키텍처 구성도

graph TD
  A[WebLogic JVM]
  B[JMX MBeans]
  C[JMX Exporter (Java Agent)]
  D[Prometheus]
  E[Grafana]

  A --> B --> C --> D --> E




3. 적용 방식: Java Agent 이용

WebLogic 시작 시, 다음과 같은 방식으로 jmx_prometheus_javaagent.jar 를 Java Agent로 등록합니다.

JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/opt/jmx-exporter/jmx_prometheus_javaagent.jar=9999:/opt/jmx-exporter/config.yml"

WebLogic의 startWebLogic.sh 또는 setDomainEnv.sh에 위 구문을 삽입하면 WebLogic 실행과 함께 JMX Exporter가 9999 포트에서 메트릭을 노출하게 됩니다.



4. JMX Exporter 설정 예시 (config.yml)

startDelaySeconds: 10
jmxUrl: service:jmx:rmi:///jndi/rmi://localhost:7001/jmxrmi
username: weblogic
password: welcome1
lowercaseOutputName: true
lowercaseOutputLabelNames: true
ssl: false

rules:
  - pattern: 'com.bea:Name=(.*),Type=JDBCDataSourceRuntime'
    name: weblogic_jdbc_datasource_active_connections
    type: GAUGE
    attr: ActiveConnectionsCurrentCount
    labels:
      datasource: "$1"
  - pattern: 'com.bea:Name=(.*),Type=ThreadPoolRuntime'
    name: weblogic_thread_pool_active
    type: GAUGE
    attr: ExecuteThreadTotalCount
    labels:
      server: "$1"




5. Prometheus 설정 (scrape_configs)

scrape_configs:
  - job_name: 'weblogic-jmx'
    static_configs:
      - targets: ['weblogic-host:9999']




6. 수집 가능한 대표 MBean 항목

MBean Type 주요 메트릭 예시 설명
JDBCDataSourceRuntime ActiveConnectionsCurrentCount, ConnectionDelayTime DB 커넥션 풀 상태
ThreadPoolRuntime ExecuteThreadTotalCount, HoggingThreadCount 웹로직 쓰레드 풀
JMSDestinationRuntime MessagesCurrentCount, ConsumersCurrentCount JMS 큐 사용량
JVMRuntime HeapFreeCurrent, Uptime JVM 레벨 정보
ServletRuntime InvocationTotalCount, ExecutionTimeAverage Servlet 처리량




7. 시각화 예시 (Grafana)
• JDBC Pool Dashboard: 활성 커넥션, 풀 사용률, 커넥션 오류
• Thread Pool Dashboard: 현재 실행 중 스레드 수, 대기 큐 수
• JMS Queue Dashboard: 대기 메시지 수, 소비자 수, 처리 속도
• JVM Dashboard: Heap/NonHeap 사용률, GC 빈도, CPU Time

👉 WebLogic용 Grafana 대시보드 JSON은 community template 또는 직접 설정 가능



8. 보안 및 운영 팁

항목 조치
인증 계정 최소화 readOnly 권한만 가진 WebLogic 사용자 생성
노출 포트 제한 내부망 또는 reverse proxy를 통한 접근 제한
JVM 리소스 사용 Java Agent는 약간의 메모리 오버헤드 발생 (100~200MB 수준)
고가용성 구성 WebLogic 클러스터마다 JMX Exporter를 개별 구성 필요




✅ 결론

WebLogic의 JMX MBean은 운영 상태를 가장 정확하게 반영하는 진단 지표입니다.
Spring Boot Actuator만으로 부족한 WebLogic 고유 리소스에 대한 모니터링은
JMX Exporter + Prometheus + Grafana 구성을 통해 매우 정교하게 구축할 수 있습니다.

이 방식은 다음과 같은 상황에 특히 유효합니다:
• 운영 환경에서 JDBC 풀 부족 문제 추적
• WebLogic ThreadPool의 병목 탐지
• SLA 기반 알람 설정 (e.g. ActiveConnections > 90% 시 Slack 알림)