Console로 kafka 모니터링 진행

0. 사전 설정
# java 설치 (보통 opensource 들은 java 기반이 많음) 
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install openjdk-11-jdk

특정 계정에 환경변수를 등록하려면 ~/.bashrc 파일에 추가하면 된다.

# 환경변수 설정
$ vim ~/.bashrc

위의 명령어로 ~/.bashrc 파일을 연 뒤, 아래의 내용을 추가한다. 보통 맨 아래에 입력한다.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64      // 본인의 자바 설치 경로
export PATH=${PATH}:${JAVA_HOME}/bin

새로 설정한 환경 변수 설정을 적용하기 위해 source 명령어로 적용시킨다.

$ source ~/.bashrc 

환경변수가 잘 적용되었는지 확인한다.

$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64

이제 apache kafka를 다운받는다.

$ cd ~
$ curl -O https://archive.apache.org/dist/kafka/2.8.0/kafka_2.12-2.8.0.tgz 
$ tar xvf kafka_2.12-2.8.0.tgz
$ rm -rf kafka_2.12-2.8.0.tgz
$ cd kafka_2.12-2.8.0

다음으로 zookeeper를 실행해본다.

$ cd ~/kafka_2.12-2.8.0

# 1) Foreground 실행 (테스트 용으로 zookeeper 로그를 직접 확인)
$ bin/zookeeper-server-start.sh config/zookeeper.properties

# 2) Background 실행 (-daemon 옵션 추가) 
$ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
$ ps -ef | grep zookeeper

image

다음으로 kafka broker를 실행해본다.

$ cd ~/kafka_2.12-2.8.0
## 다른 서버에 설치된 producer 또는 consumer에서 broker에 접속할 때 사용 가능한 hostname 설정  
$ vi config/server.properties
advertised.listeners=PLAINTEXT://127.0.0.1:9092

## java.rmi.server.hostname은 본인의 외부 IP로 변경
### rmi.server.hostname을 설정해야, 외부의 jconsole과 같은 도구에서 접속 가능
$ curl ifconfig.me
$ export KAFKA_JMX_OPTS='-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false 
  -Dcom.sun.management.jmxremote.ssl=false 
  -Dcom.sun.management.jmxremote.port=9999 
  -Dcom.sun.management.jmxremote.rmi.port=9999 
  -Djava.rmi.server.hostname=218.234.6.190'

# 1) Foregroud 
$ env JMX_PORT=9999 bin/kafka-server-start.sh config/server.properties

# 2) background 실행
$ env JMX_PORT=9999 bin/kafka-server-start.sh -daemon config/server.properties

# 3) JDK가 설치된 노트북에 아래 명령어 실행
$ jconsole

image

이제 kafka topic을 만들어본다.

$ cd ~/kafka_2.12-2.8.0
$ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic kafka-mon --partitions 2 --replication-factor 1

# 생성된 topic 확인
$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092 
kafka-mon