influxDB와 Grafana로 실시간 서버 모니터링 구축하기(1)

​ ​

요즘 실시간 로그 수집 및 분석 도구로 ELK (Elastic Search) 를 많이 사용하지만, 간단한 서버 모니터링이나 시계열 데이터 분석도구를 찾으신다면, influxDB-Grafana 도 좋습니다. 이 포스팅에서는 간단한 예제를 통해 influxDB와 Telegraf, Grafana에 대해 알아보겠습니다.

influxDB

influxDB

influxDB는 시계열 데이터베이스입니다. 다른 시계열 데이터베이스도 많지만, 설치가 쉽고 간편합니다. 그리고 SQL 구문과 graphite 등 여러 프로토콜을 지원하여 확장성이 높습니다.

작년 9월에 1.0 버전을 릴리즈했으며, 현재 기준 1.2가 최신 버전입니다. 시계열 데이터베이스는 로그, 시스템 모니터링 도구로 활용될 수도 있지만, 주식, 환율과 같은 시계열 데이터의 분석 도구로도 많이 사용됩니다.

그렇다면 바로 로컬에 설치해보도록 하겠습니다. 여기서는 OS X 기준이며, 다른 OS는 설치 페이지를 참조하시면 됩니다.

$ brew update influxdb
$ brew install influxdb

실습은 Docker를 통해 진행하도록 하겠습니다. DockerHub로부터 influxdb와 Grafana 이미지를 받아옵니다.

$ docker pull tutum/influxdb
$ docker pull grafana/grafana

influx-port

받아온 이미지를 컨테이너로 실행시키고, 위와 같이 포트를 변경해줍니다. 8083 포트는 웹 클라이언트로 사용되며, 8086 포트는 데이터를 주입하고 가져가는 용도로 사용됩니다. 이제 호스트의 8086 주소로 들어가보면 influxDB의 관리자 페이지를 볼 수 있습니다.

influx-admin

쿼리를 잘 모르더라도 좌측의 Query Templates를 통해 쉽게 입력할 수 있습니다. 스키마는 기존의 데이터베이스와 비슷하면서도 조금 다릅니다. HTTP로 데이터를 핸들링 할 수 있으며, 이외에도 여러 가지 특징이 있지만 여기서 설명하기보다는 공식 래퍼런스를 참조하는 편이 나을 것 같습니다.

Telegraf

이제 Telegraf로 실시간 시스템 지표를 influxDB에 넣어보겠습니다. Telegraf는 다양한 데이터 소스에서 plugin을 통해 데이터를 수집하고 저장합니다. 제공하는 input plugin은 다음 페이지에서 확인하실 수 있습니다.

$ brew update
$ brew install telegraf

위와 같이 설치한 다음, system plugin을 사용해보도록 하겠습니다. --sample-config를 통해 .conf 파일을 생성할 수 있습니다. input filter는 cpu와 memory 지표로, output은 influxDB에 저장됩니다. .conf 파일을 열어 output host url을 본인의 호스트에 맞게 변경해주어야 합니다.

$ telegraf --sample-config  --input-filter cpu:mem --output-filter influxdb > telegraf.conf
$ telegraf -config telegraf.conf

이제 influxDB로 돌아와서 보시면, telegraf 라는 데이터베이스가 생성되어 있습니다. measurement를 확인해보시거나 쿼리를 날려 데이터를 확인할 수 있습니다.

influx-admin2

influxDB는 언젠가 디스크가 찰 수 있어서, 데이터 보관 또는 삭제에 대한 정책이 필요합니다. 이에 대해서는 Retention Policy를 찾아보시면 됩니다.