본문 바로가기

빅데이터/Kafka

카프카 커넥트 JMX + 로그스태시로 모니터링 하기

카프카 커넥트(분산모드)는 기본 JMX포트를 통해 커넥트 애플리케이션의 상태를 모니터링 수집 애플리케이션에 데이터를 전송할 수 있습니다. 오늘은 카프카 커넥트의 JMX포트를 열고 로그스태시로 JMX로 지표를 수집하는 방법에 대해 알아보겠습니다.

 

1. 카프카 커넥트 JMX포트 열기

$ export JMX_PORT=10000

우선 JMX포트를 열기위해 환경변수로 선언합니다. 

 

2. 카프카 커넥트 실행 및 JMX 포트 확인

$ bin/connect-distributed.sh ../config/connect-distributed.properties

실행이 완료되면 설정한 10000번 포트로 listen 여부를 확인합니다.

$ netstat -anv | grep 10000
tcp46      0      0  *.10000                *.*                    LISTEN      131072 131072  10171      0 0x0100 0x00000006

3. JMX를 수집하는 로그스태시 설정

로그스태시 설치는 homebrew로 수행합니다.

$ brew install logstash

로그스태시에 추가로 jmx 플러그인을 설치합니다. logstash-plugin은 logstash설치 경로에 있습니다.

$ bin/logstash-plugin install logstash-input-jmx

JMX 호스트, 포트를 정의할 파일을 생성합니다.

$ vi jmx/jmx-connect
{
   "host":"localhost",
   "port":10000,
   "queries":[
      {
         "object_name":"kafka.connect:type=*"
      }
   ]
}

로그스태시 설정파일을 생성합니다.

input {
  jmx {
    path => "/usr/local/Cellar/logstash/7.9.1/jmx"
    polling_frequency => 5
    type => "jmx"
  }
}
filter {
   mutate {
   		update => { "host" => "${HOSTNAME}" }
   }
}
output {
  elasticsearch {
    hosts => ["엘라스틱서치 호스트:포트"]
    index => "connect-log-%{+YYYY.MM}"
  }
}

실행

$ bin/logstash -f router-log.conf

 

참고URL

www.elastic.co/guide/en/logstash/current/plugins-inputs-jmx.html

 

Jmx input plugin | Logstash Reference [7.9] | Elastic

Variable substitution in the id field only supports environment variables and does not support the use of values from the secret store.

www.elastic.co