telegraf 와 influxDB 다운 받는/설치 하는 곳
portal.influxdata.com/downloads/
grafana 는 influxDB 등과 같은 data source로부터 시계열 데이터를 가져와서
그래프로 그려주는 오픈소스 모니터링 툴
아래 링크가 그라파나에 대해 자세히 설명해 줌.
https://medium.com/finda-tech/grafana%EB%9E%80-f3c7c1551c38
influxDB 는 시계열을 저장하는 데이터베이스.
http api 를 통해서 데이터를 넘겨받는 것이 가능함.
jolokia 는 JMX (Java metric API 라고 생각하자)를 HTTP로 변환하여
자바 metric 정보를 influxDB 안에 넣을 수 있도록 도와줌.
Jolokia는 JVM에서 배포될 수 있는 에이전트로서, REST 같은 HTTP 엔드포인트를 통해 MBeans를 노출시켜, 이 모든 정보가 동일한 호스트에서 작동하는 비 자바 애플리케이션에 쉽게 제공되도록 합니다.
https://www.elastic.co/kr/blog/monitoring-java-applications-with-metricbeat-and-jolokia
telegraf 는 다양한 data source 로부터 쉽게 metric 데이터를 수집할 수 있도록 도와줌.
plugin plugout 등의 기능이 있는데, 이 기능을 통해 데이터 수집과 전달을 쉽게 도와줌.
예를 들어 jvm 의 metric 을 수집하고 싶다면, jolokia plugin 을 꽂으면(telegraf.conf 에 정보를 넣음) 된다.
( 참고로 telegraf 가 실행중인 system 의 cpu, memory, disk 등의 metric 정보를 기본적으로 수집함. )
telegraf 에서 jolokia 의 도움을 받아(input plugin 으로 설정함으로) jvm 의 metric 정보를 수집할 수 있게 됨.
jvm 의 metric 정보 수집시 JSON-over-HTTP protocol 을 이용한 REST endpoints 사용.
https://docs.influxdata.com/telegraf/v1.15/plugins/#jolokia2_agent
https://github.com/influxdata/telegraf/tree/master/plugins/inputs/jolokia2
telegraf 에서 데이터를 수집하기 위해선 해당 input plugin 을 넣으면 된다.
https://docs.influxdata.com/telegraf/v1.15/plugins/
https://github.com/influxdata/telegraf/tree/master/plugins/inputs
예를 들어 jvm 의 데이터를 수집하기 위해선 (jolokia 의 도움을 받아) 다음과 같은 옵션값들을 telegraf.conf 에 넣는다.
< telegraf.conf > # Input plugin for JVM metrics [[inputs.jolokia2_agent]] |
https://github.com/influxdata/telegraf/blob/master/plugins/inputs/jolokia2/examples/java.conf
medium.com/@KisharaBuddika/monitoring-jvm-metrics-using-grafana-elasticsearch-telegraf-a543b0bbdb8
위에 metric 정보들이 무슨 의미인지 궁금하다면 아래 링크 참고
https://eyeballs.tistory.com/296
telegraf 가 실행중인 system 의 cpu, memory, disk 등의 metric 정보는 기본적으로 수집하므로,
따로 conf 옵션값을 설정하지 않아도 됨.
telegraf 에서 수집한 데이터를 influxDB 로 보내기 위해 telegraf.conf plugout 을 influxDB 에 맞게 설정해주면 된다.
예를 들면
< telegraf.conf > # Configuration for influxdb server to send metrics to [[outputs.influxdb]] ## The full HTTP or UDP URL for your InfluxDB instance. ## ## Multiple urls can be specified as part of the same cluster, ## this means that only ONE of the urls will be written to each interval. urls = ["http://localhost:8086"] ## The target database for metrics (telegraf will create it if not exists). database = "telegrafDB" |
위에 urls 와 database 는 반드시 들어가야 한다.
해당 url 을 통해 influxDB 에 접속하고 database table(여기선 "telegrafDB") 을 생성한 뒤
telegrafDB table 안에 telegraf 가 수집한 데이터를 저장하는 용도이다.
(influxDB 안에 미리 telegrafDB table 을 만들지 않아도 telegraf 가 알아서 table 을 만들어서 데이터 넣음)
https://blog.voidmainvoid.net/91
아래 이미지는, influxDB 안에 jolokia 로부터 온 jvm 데이터가 telegraf 에 의해 저장되어있는 모습을 보여줌
(내용은 중요하지 않고, 데이터를 받았다는 것에 의의를 둔다)
grafana 에서 datasource 를 influxDB 로 설정한 후에
panel 을 생성 및 query 를 작성하는 부분에서 jvm 의 데이터 table 을 볼 수 있다.
여러 클러스터에 telegraf 를 설치하고 하나의 influxDB 로 metric 정보를 보낼 수 있다.
위와 같이 구성했을 때, influxDB 에 어떻게 저장되고
grafana 에서 어떻게 보이는지 궁금해서
간단하게 아래 테스트를 시도해보았다.
노드1 에 telegraf, influxDB, grafana 설치 노드2 에 telegraf 설치 노드3 에 telegraf 설치 실험 코드) for i in range(1,10000000): print(i) 실험 1 ) 노드 1에서 코드 실행시 cpu 사용률 증가 노드 2에서 코드 실행시 cpu 사용률 똑같은 크기만큼 증가 실험 2 ) 노드 1, 2 에서 동시에 코드 실행시 cpu 사용률 증가 한 노드에서만 돌렸을 때 보다 살짝 높긴 하지만 눈에 띄게 높진 않음 결과 : 노드1, 2 에서 텔레그래프로 수집한 모든 정보가 인플럭스 디비에 안전하게 저장. (시간 동기화같은 문제가 있을 줄 알았는데... ) 실험 2를 보면 노드 1, 2 의 전체 cpu 가 합쳐져서 저장되지 않고 따로 따로 저장되는 듯. 결과적으로 노드1, 2는 자신의 metric 정보를 influxdb 에 그냥 예쁘게 저장함. |
jolokia, telegraf 연동 방법
jolokia-jvm-1.6.2-agent.jar 다운받는 곳
https://jolokia.org/download.html
telegraf + influxdb + garafana 설치 및 사용법
blog.naver.com/hanajava/221842160382
influxDB 설치 및 자세한 설명 : https://www.popit.kr/influxdb_telegraf_grafana_1
telegraf 설치 및 자세한 설명 : https://www.popit.kr/influxdb_telegraf_grafana_2/
grafana 설치 및 자세한 설명 :
https://www.popit.kr/influxdb_telegraf_grafana_3/
기타 관련 있어보이나 뭔지 모르겠는 것들
https://www.influxdata.com/blog/building-a-data-stream-for-iot-with-nifi-and-influxdb/
https://vivi-world.tistory.com/53
여길 보면 AmabariReportingTask 를 이용하여 Nifi 에서 곧바로 Grafana 로 metric 정보 보낼 수 있는 것 같은데
더 자세한 설명이 없고 관련된 다른 문서가 없어서 모르겠음.
https://pierrevillard.com/2017/05/16/monitoring-nifi-ambari-grafana/
'눈가락' 카테고리의 다른 글
영양제/비타민 구입 꿀팁 모음 (0) | 2020.09.08 |
---|---|
[JXM] Metric 정보 정리 (0) | 2020.09.07 |
[Linux] nc 을 이용한 포트 스캔 (0) | 2020.09.05 |
failed to bind 에러가 난 경우 (0) | 2020.08.31 |
[Apache Ambari] 간단한 설명 링크 (0) | 2020.08.27 |