시스템 모니터링 #1 – Telegraph + InfluxDB + Chronograph

Prologue

컴퓨터들, 특히 NAS나 서버와 같이 항상 켜 있는 것들은 모니터링을 해주는게 좋습니다. 모니터링을 통해 시스템에 이상이 없는지, 성능은 정상적으로 나오고 있는지, 문제가 발생할 신호가 있는지 등을 체크할 수 있습니다.
집에는 지금 이 블로그와 이것저것 VM들이 돌아가고 있는 작은 서버가 하나 있고 항상 켜 있습니다. Synology NAS도 항상 켜 있고 라즈베리 파이도 하나 항상 켜 있습니다. 모니터링이 필요할 정도로 중요한 시스템들은 아니지만, 연습 삼아 설치와 설정을 진행해 보았습니다.

TICK Stack

모니터링을 하려면 소프트웨어들이 필요합니다. 어떤것을 모니터링 하는지에 따라 다양한 소프트웨어들이 필요합니다. 지금 하려는 것은 하드웨어 모니터링이라고 합니다. 윈도를 쓰는 PC라면 유명한 HWMonitor가 있습니다. CPU온도, 팬 속도, 동작 클럭, GPU 등등 다양한 정보를 보여주죠. 이런 사용자 수준의 소프트웨어들은 현재의 측정값을 보여줍니다. 하지만 항상 보고 있을수는 없는 노릇이므로 데이터를 기록할 필요성이 있습니다. 데이터베이스가 필요해 지는 것이죠. 기왕이면 시각화해서 보고 싶습니다.
이 모든 것을 해주는 솔루션 중 하나로 TICK Stack 이라는 것이 있습니다. InfluxDB라는 시계열 데이터베이스를 만들고 서비스하는 곳의 제품군 입니다. 하나씩 나열해보면.

  • Telegraf : 시스템에서 원하는 데이터를 측정하고 이를 데이터베이스(이 스택에서는 InfluxDB)로 보내주는 역할을 합니다.
  • InfluxDB : 시계열 데이터 특화 데이터베이스 입니다. 내부 구조까지는 못 봐서 정확히는 모르겠습니다. 다만 어떤 종류의 값(온도-실수, 팬속도-정수, CPU 이름-문자열 등등)을 시간에 따라 저장하는데 특화되었다는 것으로 보입니다.
  • Chronograf : 웹 서버로 볼 수 있으며 시각화를 담당합니다. InfluxDB의 관리 인터페이스 역할도 합니다.
  • Kapacitor : 이벤트 발생을 감지하고 사용자에게 알리는(alert) 역할을 합니다. 이건 선택 사항으로 딱히 필요성을 못 느껴서 본 글에서는 다루지 않습니다. 기업 환경에서는 꼭 필요한 기능이겠죠.

이런 식으로 구성되어 작동한다고 합니다.

몇 가지 특이한 점이 보이는데..

  • Chronograf에서 Kapacitor로 Define 하는 부분
  • Telegraf와 MessageQueue 사이에 입출력(Telegraf에서 MQ로 데이터를 넣기도 하나?)
  • Telegraf는 InfluxDB와 Kapacitor 양 쪽으로 데이터를 보낸다?

정도가 눈에 띄네요. 실제로 어떤 것인지는 기회가 되면 알아보겠습니다.

Stacks

이렇게 여러 소프트웨어들을 합쳐서 사용하는 것을 Stack 이라는 용어로 표현하곤 합니다. 각각의 역할을 하는 소프트웨어들을 차곡차곡 쌓는 모습을 표현한 용어지요. HW가 맨 밑바닥에 있고 가상화나 OS가 그 위에, 그리고 이런 SW Stack들이 그 위에 위치합니다. ELK 등 꽤 유명한 스택들이 있습니다. 심지어 어떤 서비스가 무슨 스택으로 구성되어 있는지를 알려주는 StackShare란 사이트도 있습니다. 일종의..기술 트랜드를 알 수 있게 하는 용어지요. 하나의 소프트웨어가 모든 역할을 하는 것에서 벗어나 각각의 작은 부분들이 합쳐져 서비스를 만들어 내는 것으로 모듈화를 의미하기도 합니다.

TICK 스택의 경우에는 하드웨어 모니터링을 위한 것으로 볼 수 있습니다. 시계열 데이터베이스가 그 중심이고 Telegraf라는 툴은 데이터 수집이라는 단순한 역할을 하므로 필요하면 하드웨어 모니터링 이외에 다른 기능을 생각해 볼 수도 있습니다. 주가, 비트코인가격 등도 시계열 데이터 입니다. 그외에도 IoT로 집안 온도를 측정한다던가.. 공기질 센서, 바람 등등 시간에 따라 변화하는 값들을 측정하는데 사용할 수도 있을 것 같습니다.

시험해보기

실제 서버에 설치하기 전에 우선 시험해 봅시다. TICK 스택에 쉽게 접근할 수 있도록 Influx에서는 docker로 한 번에 서비스를 올릴 수 있게 만들어놨습니다. InfluxData Sandbox 입니다. 스택의 각 소프트웨어를 하나씩 설치하고 설정하려면 부담이 됩니다. 이럴때에도 도커는 참 좋은 역할을 하는 것 같습니다.

Windows에서는 정상적으로 실행되는 것 같지 않아 Mac에서 진행했습니다. docker compose를 먼저 설치해야 합니다.

  1. 적당한 디렉토리에서 docker compose 파일을 다운로드 받습니다.
    $ git clone https://github.com/influxdata/sandbox
  2. clone 된 디렉토리로 가서 sandbox를 실행합니다.
    $ ./sandbox up
  3. 도커 컴포즈가 실행되며 이런저런 메시지가 나옵니다. 각각의 이미지를 다운로드 받고, 컨테이너를 실행합니다. 자동으로 브라우저까지 띄워줍니다.
  4. 이런 화면이 나옵니다.

꽤 깔끔한 화면이 나옵니다. 몇 가지 구경을 해 봅시다.

  • 눈 모양의 첫 메뉴는 Host List 입니다. 모니터링 되는 머신이 매핑된다고 보면 될 것 같습니다.
  • Explore 메뉴는 데이터를 실시간으로 질의(Query)하는 기능입니다. 아래쪽에서 DB를 선택하고 측정 데이터와 필드를 선택하면 위쪽에 쿼리와 함께 시각화된 데이터가 표시됩니다. 대시보드를 만들기 위한 작성기 역할을 합니다. 아주 잘 만들어져 있네요.
  • 다음 메뉴는 Dashboards 입니다. 내가 보고자 하는 측정값들로 적당한 시각화를 만들어 대시보드를 구성할 수 있습니다.
  • 다음으로는 Alerting 입니다. Kapacitor에서 감지한 이벤트를 표시하고 감지 룰을 만들 수 있습니다.
  • 그리고 Log Viewer가 있고, InfluxDB Admin, Configuration 등의 메뉴가 있습니다.
  • 이 중 InfluxDB Admin에서 DB와 사용자를 만들 수 있습니다. 이 부분도 편리한 것 같네요. Configuration에서는 InfluxDB의 연결을 설정할 수 있습니다.

여기까지 간략히 TICK Stack을 시험해 봤습니다. 대략의 기능은 시험해 봤으니 다음으로는 운영에 설치와 설정을 진행해보겠습니다.

다음 글 – 작성 중

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다