이번 포스팅은 요즘 핫한 InfluxDB에 대하여 작성하도록 하겠습니다.
InfluxDB 역시 작년 기상청 프로젝트에서 전국에서 관측되는 데이터를 효과적으로 처리하기 위하여 검토되었고 그때 자료조사를 한 내용입니다.
순서는
2020/06/11 - [개발관련 자료] - InfluxDB #1 - 개요 및 특징
2020/06/11 - [개발관련 자료] - InfluxDB #2 - 주요 개념
2020/06/11 - [개발관련 자료] - InfluxDB #3 - 용어 정리
2020/06/11 - [개발관련 자료] - InfluxDB #4 - SQL DB와 비교
2020/06/11 - [개발관련 자료] - InfluxDB #5 - Schema설계 및 데이터Layout
2020/06/11 - [분류 전체보기] - InfluxDB #6 - In-Memory Indexing과 TSM(Time-Structured Merge Tree)
2020/06/11 - [개발관련 자료] - InfluxDB #7 - TSI(Time Series Index) 개요
2020/06/11 - [개발관련 자료] - InfluxDB #8 - TSI(Time Series Index) 세부 정보
2020/06/11 - [개발관련 자료] - InfluxDB #9 - Linux CentOS 설치
2020/06/12 - [개발관련 자료] - InfluxDB #10 - 사용법
으로 진행되며 도입 검토 차원에서 이루어진 조사라서 실무적용 보다는 InfluxDB란 어떤 것인지 파악하는 정도로만 생각하시면 될듯합니다.
1. 개요
- InfluxDB는 높은 쓰기 및 쿼리로드를 처리하도록 설계된 시계열 데이터베이스입니다.
- InfluxDB는 DevOps 모니터링, 응용 프로그램 메트릭, IoT 센서 데이터 및 실시간 분석을 포함하여 많은 양의 타임스탬프가 적용된 모든 유스케이스의 백업 저장소로 사용됩니다.
- InfluxDB는 data store를 위해 구글이 만든 key/value database library인 LevelDB를 사용하고 있습니다. 따라서, 다음과 같은 LevelDB의 특징을 가지고 있습니다.(다음버전에는 RocksDB로 이동예정)
- 기본적으로 데이터를 compression하기 때문에 읽기와 삭제에 다소 느릴 수 있습니다. 그러나 LevelDB와 다르게 SQL-like query language를 지원합니다.
- group by, join, 또 복수개의 time series를 merge하는 것도 가능합니다.
2. 주요 특징
- 시계열 데이터를 위해 특별히 작성된 사용자 정의 고성능 데이터 스토어 TSM 엔진은 높은 수신 속도 및 데이터 압축을 허용함.
- 전체적으로 Go로 작성되었습니다. 외부 종속성 없이 단일 바이너리로 컴파일됨.
- 간단하고 고성능의 HTTP API 작성 및 쿼리.
- 집계된 데이터를 쉽게 쿼리 할 수 있도록 맞춤 설정된 표현형 SQL과 유사한 쿼리 언어.
- 태그를 사용하면 빠르고 효율적인 쿼리를 위해 시리즈를 인덱싱 할 수 있음.
- 보존 정책은 유효하지 않은 데이터를 자동으로 만료시킴.
- 연속 쿼리는 자동으로 집계 데이터를 계산하여 자주 쿼리를 하는 것 보다 효율적임.
- distributed and scale horizontally하게 설계되었음. 따라서, cluster에 새로운 node만 추가하면 쉽게 scale-out 할 수 있음. (Enterprise 버전)
3. InfulxDB 1.x 버전
○ Telegraf
- Telegraf는 메트릭을 수집하고 보고하는 플러그인 기반 서버 에이전트입니다. Telegraf 플러그인은 실행되는 시스템에서 직접 다양한 메트릭을 가져오고 타사 API에서 메트릭을 가져 오거나 StatsD 및 Kafka 소비자 서비스를 통해 메트릭을 수신합니다.
- 또한 InfluxDB, Graphite, OpenTSDB, Datadog, Librato, Kafka, MQTT, NSQ 및 기타 여러 데이터 스토어, 서비스 및 메시지 대기열에 메트릭을 전송하는 출력 플러그인이 있습니다.
○ InfluxDB
- InfluxDB는 높은 쓰기 및 쿼리로드를 처리하기 위해 처음부터 빌드 된 시계열 데이터베이스입니다.
- InfluxDB는 타임 스탬프 데이터 전용으로 작성된 맞춤형 고성능 데이터 저장소이며 특히 DevOps 모니터링 , IoT 모니터링 및 실시간 분석과 같은 사용 사례에 유용합니다.
- 정의 된 시간 동안 데이터를 보관하도록 InfluxDB를 구성하고 시스템에서 불필요한 데이터를 자동으로 만료 및 삭제하여 시스템의 공간을 절약합니다.
- 또한 InfluxDB는 데이터와 상호 작용할 수있는 SQL과 유사한 쿼리 언어를 제공합니다.
○ Chronograf
- - Chronograf는 스택의 관리 사용자 인터페이스 및 시각화 엔진입니다.
- 이를 통해 인프라에 대한 모니터링 및 경고를 쉽게 설정하고 유지 관리 할 수 있습니다.
- 사용이 간편하며 데이터를 실시간으로 시각화하여 대시 보드를 빠르게 작성하고 경고 및 자동화 규칙을 쉽게 작성할 수있는 템플릿 및 라이브러리가 포함되어 있습니다.
○ Kapacitor
- Kapacitor는 원시 데이터 처리 엔진입니다.
- InfluxDB에서 스트림 및 배치 데이터를 모두 처리 할 수 있습니다.
- Kapacitor를 사용하면 동적 임계값을 사용하여 경고를 처리하고 패턴의 메트릭을 일치 시키며 통계적 이상을 계산하고 동적로드 재조정과 같은 이러한 경고를 기반으로 특정 작업을 수행하는 사용자 정의 논리 또는 사용자 정의 함수를 연결할 수 있습니다.
- Kapacitor 는 HipChat, OpsGenie, Alerta, Sensu, PagerDuty, Slack 등을 통합합니다
4. InfulxDB 2.0 버전
○ 시간 단축 (Faster time to awesome)
- InfluxDB 2.0에는 single binary – multi-tenanted time series database, UI 및 대시 보드 도구, 백그라운드 처리 및 모니터링 에이전트 등이 모두 단일 API로 제공되는 시계열 플랫폼에서 필요한 모든 것이 있습니다.
- InfluxDB 1.x 에서 온 사람들에게는 TICK Stack의 "I, C, K"가 기본적으로 하나의 이진 파일로 축소되었습니다.
- 우리는 공유 할 수 있는 대시 보드, 경고 및 특정 작업 부하 및 솔루션에 최적화 된 쿼리를 보유하고 있습니다.
○ 깊은 통찰력과 분석 (Deep insights and analytics)
- Flux는 현재 InfluxDB 1.x에서 사용할 수 있지만 InfluxDB 2.0에서는 Flux의 모든 기능을 사용할 수 있습니다.
- Flux는 데이터 스크립팅, ETL, 모니터링 및 경고용으로 설계된 4 세대 프로그래밍 언어입니다.
○ 개발자 생산성 최적화 (Optimized for developer productivity)
- Inbound, 쿼리, 저장 및 시각화와 같은 InfluxDB의 모든 기능이 이제 통합 API에서 액세스 할 수 있습니다.
- 플랫폼의 모든 내용을 프로그래밍 방식으로 액세스하고 제어 할 수 있으므로 개발자가 시간을 단축할 수 있습니다.
- InfluxDB Cloud 2.0을 사용하면 단일 바이너리로 다운로드하거나 free tier에 액세스 할 수 있으며 통합 대시 보드, 경고 및 모니터링 에이전트의 모든 기능을 바로 사용할 수 있습니다.
- Go, Java, PHP 및 Python과 같은 인기있는 언어로 된 강력한 클라이언트 라이브러리를 사용하면 개발자가 몇 분 안에 실행됩니다.
○ 네이티브 프로메테우스 지원 (Native Prometheus support)
- InfluxDB는 Prometheus 설명 형식에 대한 일등급 지원을 제공하며 메트릭 스크레이퍼의 역할을 수행하여 푸시 및 풀 모델을 모두 지원합니다.
- 우리는 올해 말에 출시 될 기본 PromQL 지원을 위해 노력하고 있습니다.
'개발관련 자료' 카테고리의 다른 글
인플럭스DB(InfluxDB) #3 - 용어 정리 (0) | 2020.06.11 |
---|---|
인플럭스DB(InfluxDB) #2 - 주요 개념 (0) | 2020.06.11 |
쥬피커(Zookeeper) #3 - 사용 (2) | 2020.06.11 |
쥬키퍼(ZooKeeper) #2 - 데이터모델 (0) | 2020.06.11 |
쥬키퍼(ZooKeeper) #1 - 개요 및 특징 (0) | 2020.06.11 |
댓글