본문 바로가기

Monitoring/Influxdata(TICK Stack)

TICK Stack(Telegraf + InfluxDB + Chronograf + Kapacitor)

TICK Stack이란?



TICK Stack이란 InfluxData에서 나온 4가지 오픈소스 component들을 통칭해서 말합니다. TICK은 4가지 구성원에 대한 앞글자만 딴것인데요. 

https://www.influxdata.com/time-series-platform/

간단하게 역할을 설명하면 아래와 같습니다.

- Telegraf : 수집기

- InfluxDB : 시계열 저장소

- Chronograf : 시각화 툴

- Kapacitor : Real-time 스트리밍 데이터 전송 및 Alert


"모니터링 할 데이터를 수집해서 저장하고 보여준 다음 임계치를 정해서 alert을 보낸다." 간단한 이유로 만들어진 네 가지 구성원들입니다.

InfluxDB는 시계열 데이터베이스로 일반적인 Relationship Database System과는 다른 방식으로 저장됩니다. 자세한 것은 뒤에!


왜 TICK Stack이 필요한걸까?


그렇다면 왜 TICK Stack을 써야할까요? 왜 필요한 걸까요?


- 다양한 DBMS의 데이터 수집가능

저는 TICK을 MySQL 및 Couchbase & Cassandra의 모니터링 용도로 사용하려고 채택했습니다.

MySQL만 모니터링 하려고 했다면 ProxySQL때 사용했던 PMM(Percona Monitoring and Management System)을 썼겠지만 다양한 RDBMS와 NoSQL을 지원하는 것이 TICK이었습니다.


- 커스텀마이징 가능

자유롭게 제가 수정이 가능했습니다. Telegraf라는 수집기는 Golang으로 되어 있습니다. Golang을 제가 잘 아는 것은 아니지만 소스를 파악하고 수정해서 빌드는 가능했기 때문에 커스텀가능하다고 생각해서 채택했습니다. 또한 Python으로 바로 InfluxDB로 데이터를 넣어서 볼 수도 있습니다. 데이터만 InfluxDB에 넣는다면 자유롭게 보여줄 수 있기 때문이죠.


- 변경 가능한 Component들

실제로 TICK Stack이라고 썼지만 저는 시각화툴인 Chronograf의 기능이 Grafana보다는 부족하다고 느꼈습니다. 그래서 Chronograf 대신 Grafana를 끼워 넣어서 사용하고 있는데 잘 작동하고 빠르게 원하는 결과물을 볼 수 있습니다. 따라서 구성원을 바꿔 끼워도 문제 없다는 거죠. 만약 여기서 다른 것이 더 좋다고 느껴진다면 또 바꿔 끼울 수 있습니다. 요새는 상호 호환성이 거의다 지원이 되니까요.



구성원들에 대한 좀 더 자세한 설명!


TICK Stack의 구성원들에 대해 설명을 해보겠습니다. 각자 어떤 역할을 하는지 알아야 바꿔 끼우든 말든 할수 있으니까요!?


Telegraf(https://github.com/influxdata/telegraf)

Telegraf는 수집 및 분석 메트릭을 위한 plugin-driven server 에이전트입니다. 에이전트 방식이기 때문에 daemon이 항상 떠있어야합니다. Telegraf는 실행중인 시스템에서 직접 다양한 메트릭을 제공하거나 타사 API에서 메트릭을 가져오거나 StatsD 및 Kafka 컨슈머 서비스를 통해 메트릭을 수신하기 위해 플러그인 또는 통합을 제공합니다. Output 또한 다양한 Database 또는 메시지 queue들로 넣을 수 있습니다. InflxuDB, Graphite, OpenTSDB, DataDog, Librato, Kafka, MQTT, NSQ, 그리고 또 다른 많은 것들을 포함합니다.


InfluxDB(https://github.com/influxdata/influxdb)

InfluxDB는 높은 쓰기 및 쿼리로드를 처리하기 위해 처음부터 빌드 된 시계열 데이터베이스입니다. InfluxDB는 DevOps 모니터링, 응용 프로그램 메트릭, IoT 센서 데이터 및 실시간 분석을 포함하여 시간 소인 된 데이터를 위해 특별히 작성된 사용자 지정 고성능 데이터 스토어입니다. 정의 된 시간 동안 데이터를 보관하도록 InfluxDB를 구성하고 시스템에서 불필요한 데이터를 자동으로 만료 및 삭제하여 시스템의 공간을 절약할 수 있습니다. 또한 InfluxDB는 데이터와 상호 작용할 수있는 SQL과 유사한 쿼리 언어를 제공합니다.


Chronograf(https://github.com/influxdata/chronograf)

Chronograf는 플랫폼의 관리 사용자 인터페이스 및 시각화 엔진입니다. 인프라 스트럭처에 대한 모니터링 및 경고 기능을 쉽게 설정하고 유지 관리 할 수 ​​있습니다. 사용이 간편하며 템플릿 및 라이브러리가 포함되어있어 데이터를 실시간으로 시각화하여 대시 보드를 신속하게 구축하고 경고 및 자동화 규칙을 쉽게 작성할 수 있습니다.


Kapacitor(https://github.com/influxdata/kapacitor)

Kapacitor는 원시 데이터 처리 엔진입니다. InfluxDB에서 스트림 및 배치 데이터를 모두 처리 할 수 ​​있습니다. Kapacitor를 사용하면 동적 임계 값으로 경고를 처리하고 패턴에 대한 메트릭을 일치 시키며 통계적 이상을 계산하고 동적로드 재조정과 같은 이러한 경고를 기반으로 특정 작업을 수행하는 사용자 정의 논리 또는 사용자 정의 함수를 연결할 수 있습니다. Kapacitor는 HipChat, OpsGenie, Alerta, Sensu, PagerDuty, Slack 등과 통합됩니다.


이렇듯 TICK Stack은 모니터링에 필요한 요소별로 구성원들을 만든 집합체일뿐 다양하게 조합을 사용할 수 있도록 제공합니다.


앞으로 TICK에 관해 쓸 것은 모니터링을 위한 세팅, 커스텀방법, 자동화 방법 등을 설명할 예정입니다.


꾸준하게 써야하는데 써야할 종류만 많아지는 느낌이네요.. 허허

'Monitoring > Influxdata(TICK Stack)' 카테고리의 다른 글

Influxdata의 Telegraf란?  (0) 2018.09.02