[java] Java Jolokia와 Zabbix 연동하는 방법은?

소개

Jolokia는 Java 애플리케이션의 모니터링과 관리를 위한 엔터프라이즈급 엔드포인트입니다. Zabbix는 오픈 소스 모니터링 솔루션으로 널리 사용됩니다. Jolokia를 사용하여 Java 애플리케이션의 메트릭 및 정보를 Zabbix로 전송하는 방법을 알아보겠습니다.

단계 1: Jolokia 설치 및 구성

  1. Maven을 사용하여 Jolokia 종속성을 애플리케이션에 추가합니다.
<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
    <version>1.6.2</version>
</dependency>
  1. Jolokia JVM 에이전트를 애플리케이션에 적용합니다. 애플리케이션의 JVM 구동 옵션에 다음을 추가합니다.
-javaagent:/path/to/jolokia-jvm-agent.jar=port=8778,host=localhost
  1. 애플리케이션을 시작하고 Jolokia API 엔드포인트에 접속하여 동작을 확인합니다. 기본 엔드포인트는 http://localhost:8778/jolokia/입니다.

단계 2: Zabbix 템플릿 추가

  1. Zabbix 대시보드로 이동하여 관리자 권한으로 로그인합니다.

  2. Configuration 메뉴에서 Templates을 선택한 다음 Create template을 클릭합니다.

  3. 템플릿의 이름을 입력하고 필요한 경우 그룹 및 설명을 추가합니다. 그런 다음 Add 버튼을 클릭하여 필요한 항목을 템플릿에 추가합니다.

  4. Jolokia에서 수집하려는 메트릭과 정보를 선택합니다. 예를 들어 Java 메모리 사용량, 스레드 개수, GC 횟수 등을 선택할 수 있습니다.

  5. Templates을 저장하고 Zabbix에서 사용할 준비가 끝났습니다.

단계 3: Zabbix 서버 설정

  1. Zabbix 서버에 접속하고 Administration 메뉴에서 Media types을 선택합니다. 다음으로 Create media type 버튼을 클릭합니다.

  2. TypeScript로 선택하고 Script namejolokia_request.sh와 같은 이름을 지정합니다.

  3. 다음은 /path/to/jolokia_request.sh의 내용과 같은 셸 스크립트 파일을 생성합니다.

#!/bin/bash
URL="http://localhost:8778/jolokia/"
JSON="{\"type\":\"read\",\"mbean\":\"java.lang:type=Memory\",\"attribute\":\"HeapMemoryUsage\",\"target\":\"jdk.management.jfr:type=FlightRecorder\",\"uptime\":142179,\"timestamp\":1608699362611}"
RESPONSE=$(curl -s -X POST -H 'Content-type: application/json' --data "$JSON" "$URL")
VALUE=$(echo "$RESPONSE" | jq -r '.value')


echo "$VALUE"
  1. 생성한 스크립트 파일을 Zabbix 서버의 적절한 디렉토리에 복사합니다.

  2. Actions 메뉴에서 Create action을 선택합니다. Operations 탭에서 새로운 작업을 만들고, Add 버튼을 클릭하여 Script 타입의 작업을 추가합니다.

  3. 작업에 필요한 설정을 추가하고 OK를 클릭하여 작업을 저장합니다.

결론

Java Jolokia와 Zabbix를 연동하여 Java 애플리케이션의 메트릭과 정보를 모니터링할 수 있습니다. 이를 통해 애플리케이션의 성능 및 동작을 실시간으로 모니터링하고 필요한 조치를 취할 수 있습니다.

참고: