Kafka 설치 및 Zabbix JMX 통합

발행: (2025년 12월 8일 오후 07:45 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

섹션 1: Kafka 서버 설치 및 구성 (호스트 측)

1. Java 설치 및 준비

Kafka가 동작하려면 Java가 필요합니다.

sudo apt update
sudo apt install openjdk-17-jdk -y
java -version

2. Kafka 다운로드 및 설치

Kafka 3.6.1 버전을 다운로드하고 압축을 풀어 /opt 디렉터리로 이동합니다.

cd /tmp
wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz

# 압축 해제
tar -xvzf kafka_2.13-3.6.1.tgz

# 이동
sudo mv kafka_2.13-3.6.1 /opt/kafka

# 디렉터리 진입
cd /opt/kafka

3. 서비스 시작 (JMX 활성화)

먼저 Zookeeper를 실행하고, 그 다음 JMX 포트(9999)를 지정하여 Kafka를 시작합니다.

# Zookeeper 시작
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

# JMX 포트 지정 후 Kafka 시작
export JMX_PORT=9999
bin/kafka-server-start.sh -daemon config/server.properties

4. 확인

서비스와 포트가 정상적으로 실행되었는지 확인합니다.

# 프로세스 확인 (Kafka와 QuorumPeerMain이 보여야 함)
jps

# 9999 포트가 열려 있는지 확인 (출력이 비어 있으면 안 됨)
ss -tpln | grep 9999

섹션 2: Zabbix 서버 측 구성

1. Java Gateway 설치

sudo apt update
sudo apt install zabbix-java-gateway -y
sudo systemctl enable --now zabbix-java-gateway

2. Zabbix 서버 설정

설정 파일을 편집하여 Java Gateway를 지정합니다.

sudo nano /etc/zabbix/zabbix_server.conf

파일 안에 아래와 같은 줄이 존재하며, 필요에 따라 수정(또는 추가)합니다.

# Gateway가 위치한 곳 (같은 머신이므로 127.0.0.1)
JavaGateway=127.0.0.1

# Gateway가 리스닝하는 포트 (기본값 10052)
JavaGatewayPort=10052

# Java가 사용할 poller 수 (0이면 작동하지 않으며 최소 5로 설정)
StartJavaPollers=5

3. 서비스 재시작

sudo systemctl restart zabbix-server

섹션 3: Zabbix 웹 인터페이스 구성

Kafka 호스트를 Zabbix에 추가하는 단계:

  1. 메뉴 이동: Data Collection (또는 Configuration) → Hosts → 오른쪽 위 Create host 버튼 클릭.
  2. 호스트 정보 입력:
    • Host name: emine-kafka (또는 원하는 이름).
    • Templates: Apache Kafka by JMX (데이터를 받아오는 핵심 템플릿).
    • Host groups: Applications 또는 Linux servers.
  3. 연결 설정 (Interface) 구성:
    • Interfaces 행에서 Add 버튼을 누르고 JMX 선택.
    • IP Address: 192.168.100.1 (Kafka 머신의 IP).
    • Port: 9999

Zabbix 호스트 추가 화면

  1. 저장 및 모니터링:
    • Add 버튼 클릭.
    • 리스트의 Availability 열에 있는 JMX 아이콘이 회색에서 녹색으로 바뀌면 정상이며, 1‑2분 정도 소요될 수 있습니다.

섹션 4: 문제 해결 (SSL/Auth 오류)

아이콘이 녹색으로 변하지 않고 아래와 같은 오류가 나타날 경우:

오류: SSL peer shut down incorrectly: service:jmx:rmi:///jndi/rmi://192.168.100.1:9999/jmxrmi

해결 단계

Kafka를 중지하고 SSL/인증을 비활성화한 뒤 IP 주소를 고정합니다.

cd /opt/kafka
bin/kafka-server-stop.sh

# SSL 및 Auth 비활성화, Hostname 고정 (IP 주소는 환경에 맞게 수정)
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.100.1"

export JMX_PORT=9999
bin/kafka-server-start.sh -daemon config/server.properties

섹션 5: 데이터 검증 (JmxTool 테스트)

Zabbix에 전달된 데이터가 정확한지 확인하기 위해 Kafka 서버에서 JmxTool을 사용합니다. Zabbix에 표시된 값과 터미널 출력이 일치하는지 비교합니다.

시나리오

  • Item: Produce request total time, mean
  • Key: jmx["kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce","Mean"]
  • Zabbix에 표시된 값: 0

Zabbix 아이템 화면

검증 명령 (Kafka 서버)

cd /opt/kafka

JMX_PORT="" bin/kafka-run-class.sh kafka.tools.JmxTool \
  --jmx-url service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi \
  --object-name "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce" \
  --attributes Mean \
  --date-format "YYYY-MM-dd HH:mm:ss"

예시 출력

WARNING: The 'kafka.tools' package is deprecated...
Trying to connect to JMX url: service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi
"time","kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce:Mean"
2025-12-08 07:21:43,0.0
2025-12-08 07:21:45,0.0
2025-12-08 07:21:47,0.0

결과: 터미널 출력도 0.0을 반환하므로 Zabbix에 전달된 데이터가 정확합니다.

Back to Blog

관련 글

더 보기 »