DB

InfluxDB 설치, 사용법 및 개념(Docker Container)

호기심 많은 1인 2023. 4. 10. 12:30

초기 설정 값 정의 및 컨테이너 생성

source run.sh 명령어를 이용하여 설치(run.sh 파일 생성)

파일 실행 이전에 network 생성 필요 (2023.04.04 - [DevOps] - Docker Desktop 설치)

# run.sh
# passwrord 생성 시 password 생성 규칙을 지켜야함
# bucket name은 소문자로 작성
docker run -d \
  --network=iot \
  -p 8086:8086 \
  -v $PWD/influxdb-data:/var/lib/influxdb2 \
  -v $PWD/config:/etc/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=setup \
  -e DOCKER_INFLUXDB_INIT_USERNAME=[username] \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=[password] \
  -e DOCKER_INFLUXDB_INIT_ORG=[oranigzation] \
  -e DOCKER_INFLUXDB_INIT_BUCKET=[bucketname] \
  --name influxdb24 \
  influxdb:2.4

InfluxDB 개념 (TSDB)

TSDB : Time series data
공식 URL : https://docs.influxdata.com/influxdb/v2.7/get-started/

InfluxDB는 시계열 데이터를 수집, 저장, 처리 및 시각화하기 위한 플랫폼

시계열 데이터는 시간 순서로 인덱싱된 데이터 포인터 (ex. 산업용 센서 데이터, 서버 성능 지표 등)

 

Influx 2.X로 바뀌면서 Bucket 추가, flux(이전에 influxql) 사용

 

Data organization (데이터 구성)

Bucket 시계열 데이터가 저장되는 이름이 지정된 위치
Bucket 안에는 Measurement 포함
RDB의 database와 데이터 보존 기간 정책(retention policy)가 합쳐진 개념, 보존 기간이 지나면 삭제
Measurement RDB의 table과 유사
Tags Key-value 형태로 변경이 자주 발생하지 않는 데이터
RDB의 PK or indexed column과 유사
Fields Key-value 형태로 변경이 자주 발생하는 데이터 (ex. 온도, 압력 등)
RDB의 unindexed column과 유사
Timestamp 모든 데이터는 시간 순으로 정렬
point measurement, tag keys, tag values, field key 및 timestamp 로 식별되는 단일 데이터 레코드
series measurement, tag keys 및 tag values이 동일한 포인트 그룹

Point와 Series 예시

Line protocol elements (data point 작성 format)

 

tag set 쉼표로 구분
태그 키와 값은 인용 부호가 없는 문자열
공백, 쉼표 및 등가 문자는 escape 필요(이스케이프 : 백슬레시)
field set 쉼표로 구분
필드 키는 인용 부호가 없는 문자열
공백과 쉼표는 escape 필요
지원 타입 : strings(quoted), floats, integers, unsigned integers, booleans
timestamp Unix 타임스탬프
최대 nanoseconds 지원 (nanoseconds가 아닐 경우 별도 지정 필요)
\n 줄 바꿈으로 줄을 구분

Query 사용법


Install completion scripts (자동완성)

influx completion bash
# Mac with bash
source <(influx completion bash)