본문 바로가기
BackEnd/Server

[Telegraf + InfluxDB] System Metric Information Monitoring1

by 푸고배 2021. 8. 6.

서버에 있는 CPU/Memory/Disk 등과 같은 System Metric 정보를 모니터링하고자 한다.

Telegraf를 이용해 서버의 각종 System 정보를 InfluxDB에 저장시켜 최종적으로 Grafana를 이용해 그래프 형태로 볼 수 있다.

각 프로그램을 Local 환경에 설치해도 되지만, 독립적인 환경 셋팅을 위해서 Docker를 이용해 설치해보기로 한다.

 Telegraf 

Telegraf는 데이터베이스, 시스템 및 IoT 센서에서 메트릭 및 이벤트를 수집하고 전송하기 위한 플러그인 기반 서버 에이전트입니다.

Telegraf는 Go로 작성되었으며 외부 종속성이 없는 단일 바이너리로 컴파일되며 매우 최소한의 메모리 사용 공간이 필요합니다.

 

 Telegraf를 사용하는 이유 

모든 종류의 데이터 수집 및 전송:

  • 데이터베이스: MongoDB, MySQL, Redis 등과 같은 데이터 소스에 연결하여 메트릭을 수집하고 보냅니다.
  • 시스템: 최신 클라우드 플랫폼, 컨테이너 및 오케스트레이터 스택에서 메트릭을 수집합니다.
  • IoT 센서: IoT 센서 및 장치에서 중요한 상태 저장 데이터(압력 수준, 온도 수준 등)를 수집합니다.

에이전트 : Telegraf는 다양한 입력에서 메트릭을 수집하고 이를 다양한 출력에 쓸 수 있습니다. 데이터 수집 및 출력 모두 플러그인 기반이므로 쉽게 확장할 수 있습니다. Go로 작성되었습니다. 즉, 외부 종속성, npm, pip, gem 또는 기타 패키지 관리 도구 없이 모든 시스템에서 실행할 수 있는 컴파일된 독립 실행형 바이너리입니다.

 

적용 범위 :  커뮤니티의 데이터에 대해 주제 전문가가 이미 작성한 200개 이상의 플러그인을 사용하면  끝점에서 메트릭 수집을 쉽게 시작할 수 있습니다. 더욱이 플러그인 개발이 간편하기 때문에 모니터링 요구 사항에 맞게 플러그인을 빌드할 수 있습니다. Telegraf를 사용하여 입력 데이터 형식을 메트릭으로 구문 분석할 수도 있습니다. 여기에는 InfluxDB 라인 프로토콜, JSON, Graphite, Value, Nagios 및 Collectd가 포함됩니다.

 

유연성 : Telegraf 플러그인 아키텍처는 프로세스를 지원하며 해당 기술을 사용하기 위해 워크플로를 변경하도록 강요하지 않습니다. 엣지에 설치해야 하거나 중앙 집중식으로 필요한 경우에는 아키텍처에 적합합니다. Telegraf의 유연성 덕분에 구현하기가 쉽습니다.

 

Telegraf System 구조

 Download Docker Image  

 

우리는 telegraf와 InfluxDB를 각각의 컨테이너 환경에서 실행할 것이며, telegraf 컨테이너에서 InfluxDB로 데이터를 보내야한다.

Docker 컨테이너는 독립된 환경에서 실행되기 때문에 기본적으로 다른 컨테이너와 통신이 불가능하다.

하지만, 같은 Docker Network에 연결 시키는 방법으로 컨테이너 간의 통신이 가능하므로 우선 docker network를 하나 생성해준다.

docker network create [netword_name]

 

아래 커맨드를 이용해 telegraf 도커 이미지를 받아온다.

docker pull telegraf

 

influxdb를 사용해 system 정보를 담을 것이기 때문에 influxdb 도커 이미지도 아래와 같은 커맨드를 이용해서 받아온다.

influxdb는  컨테이너 생성 전 별도로 설정하는 부분이 없기 때문에 docker run 커맨드로 image pull, container 생성 및 실행을 함께 처리한다.

 docker run -d --name influxdb --net=[network_name] -p 8086:8086 influxdb

 

 influxdb Setting 

http://localhost:8086 으로 접근 시 위와 같은 화면이 나타난다면, 해당 커맨드가 오류없이 실행됐음을 확인할 수 있다.

 

get start를 클릭하여 username, password, organization name, bucket name 등을 설정해준다.

 

설정이 완료되면, Quick Start를 이용해 telegraf 연결을 위한 설정을 진행한다.

 

좌측의 Data>Telegraf>Create Configuration에서 System을 선택한 후 name을 지정해준다.

 

좌측에 표시된 Plugin이 telegraf로 측정가능한 시스템 정보 목록이다.

 

2. Configure your API Token에 export INFLUX_TOKEN= 이후로 나오는 문자가 API Token으로 telegraf config에서 해당 토큰을 붙여넣어줘야하기 때문에 복사해놓는다.

(Token은 Data>Token의 WRITE [buket_name] bucket / READ [telegraf_configuration_name] config에서 다시 확인이 가능하다.)

 

 telegraf configure file setting & docker container start 

 

전 단계에서 생성한 telegraf를 누르면 configuration이 나오는데, 해당 파일을 다운로드한다.

파일에서 세 가지를 수정해주어야 하는데

 

첫 번째로는 [[outputs.influxdb_v2]] 를 아래와 같이 변경한다. (localhost -> influxdb)

 

 

urls = ["http://influxdb:8086"]

두 번째로 token = "$INFLUX_TOKEN"$INFLUX_TOKEN을 위에서 복사한 API Token값으로 대체한다.

 

docker container를 아래와 같은 명령어로 실행하면, conf 설정대로 telegraf가 셋팅된다.

docker run -d --name=telegraf \
	-v [download_file]:/etc/telegraf/telegraf.conf:ro \
    --net=[network_name] \
    telegraf

 

에러없이 동작하는지 확인을 위해서 아래 명령어를 실행한다.

docker logs telegraf -f

다음 로그가 뜨면 에러없이 셋팅이 완료된 것이다.

 

좌측의 Board 메뉴를 클릭하면 Dashboards에 System이라는 board가 새로 추가되었을 것이다.

 

해당 Board에 들어가면 Telegraf를 통해 수신한 데이터가 표시된다.

 

참고자료 : 

 

 

Telegraf Open Source Server Agent | InfluxData

Telegraf is a plugin-driven server agent for collecting and reporting metrics for all kinds of data from databases, systems, and IoT devices. Connect to MongoDB, MySQL, Redis, InfluxDB time series database and others, collect metrics from cloud platforms a

www.influxdata.com

 

Running InfluxDB 2.0 and Telegraf Using Docker | InfluxData

Linux containers, and Docker, are great tools that should be part of every developer’s arsenal. So how can we use them to run InfluxDB 2.x? #influxdb

www.influxdata.com

 

반응형

댓글