본문 바로가기

카테고리 없음

jolokia, telegraf 연동

<Slack 채널 정리>

간략하게 jolokia, telegraf 연동하는 방법을 정리해보겠습니다.

원격에서 실행 중인 자바 애플리케이션의 상태를 모니터링하기 위해 관련 데이터를 수집하고자 합니다.
이를 위해서 어제 잠깐 소개한 jolokia 란 녀석을 사용해보기로 했습니다. (Jolokia is remote JMX with JSON over HTTP)

  1. jolokia-jvm-1.6.0-agent.jar 를 다운 받아서 다음과 같은 식으로 실행 중인 자바 애플리케이션들의 프로세스를 확인합니다.
    % java -jar jolokia-jvm-1.6.0-agent.jar list
  2. 위 명령으로 확인한 프로세스 중 모니터링할 녀석의 pid 를 이용해서 jmx 에 연결합니다.
    % java -jar jolokia-jvm-1.6.0-agent.jar start pid
  3. 정상적으로 실행된다면 '해당 pid 로 attach 되었다며 확인하려면 http://localshot:8778/jolokia/ 로 접속'해보라는 메시지가 출력됩니다. (2번 명령 실행 시 디폴트 포트인 8778 대신 다른 포트를 옵션으로 설정해줄 수 있습니다)
  4. 브라우저 또는 curl/wget 등을 이용해서 접속해보면 json 형태로 mbean 정보들을 확인할 수 있습니다.

기본 데이타는 구했고 이것을 telegraf 로 수집해서 influxDB 에 밀어넣어주어야 합니다.
telegraf 에서 influxDB 로 데이터 밀어넣어 주는 설정에 대해서는 많은 곳에서 설명되어 있으니 스킵하고, 일단 그 설정은 되어 있다는 전제 하에 telegraf.conf 파일에 설정 추가합니다. (아래는 제가 테스트한 설정 예)

[[inputs.jolokia2_agent]]
 name_prefix = "jolokias"
 urls = ["http://127.0.0.1:8778/jolokia/"] [[inputs.jolokia2_agent.metric]]
 name  = "jvm_memory"
 mbean = "java.lang:type=Memory"
 paths = ["HeapMemoryUsage", "NonHeapMemoryUsage", "ObjectPendingFinalizationCount"] [[inputs.jolokia2_agent.metrics]]
 name = "thread_count"
 mbean = "java.lang:type=Threading"
 paths = ["TotalStartedThreadCount","ThreadCount","DaemonThreadCount","PeakThreadCount"]

  1. 설정에서 urls 는 아까 jolokia 에서 attach 했을 때 나왔던 그 주소고 나머지 설정은 ...
  2. 설정이 바뀌었으니 telegraf 를 다시 기동해준 후 로그 중 Loaded inputs 에 'inputs.jolokia2_agent' 가 포함되어 있는지  살펴봅니다(설정이 뭔가 잘 못 되면 로그에 에러가 찍히니 사실 그것만 체크하면 됩니다)

제대로 데이터 수집되어 influxDB 에 데이터 들어왔는지를 확인해봐야 할텐데 여러 방법이 있겠지만 도구를 이용해서 한 번 해봤습니다.

influxDB 과거 버전에서는 admin 웹 페이지를 제공했습니다만 최근 버전에서는 그 기능이 depreacted 되어 사용할 수 없습니다. 대신 같은 회사에서 제공하는 Chronograf 를  이용하면 됩니다(이것들의 관계는 TICK stack 이라고 해서 https://www.influxdata.com/time-series-platform/ 이 페이지를 보면 대충 알 수 있습니다)

  1. Chronograf 를 변경없이 설치/실행 했다면 http://localhost:8888 로 접속 가능합니다.
  2. 접속한 페이지의 좌측 메뉴바에서 'Data Explorer'를 선택한 후 RetentionPolicy 중 telegraf 어쩌고를 선택하면 Measuments & Tags 에 아까 telegraf.conf 에 설정해준 항목의 name 들이 보일겁니다. 그 중 하나를 선택하면 Fields 항목에 수집한 항목들이 표시될 겁니다.
  3. 아무거나 선택해주면  상단에 자동으로 InfluxQL 생성되고 그 결과가 하단에 Graph 와 Table 로 이쁘게 표시됩니다.
  4. 이것까지 정상적으로 되었다면 생성된 InfluxQL 을 복사해서 Grafana에서 설정 추가해주면 멋진 챠트 표시될 겁니다(.