콘텐츠로 이동

InfluxDB 시계열 간단 분석


소프트웨어 소개

InfluxDB는 Go 언어로 작성된 오픈소스 분산 시계열 및 메트릭 데이터베이스입니다.

업계 위치

InfluxDB는 꾸준히 1위 자리를 유지하고 있습니다. 최신 시계열 데이터베이스 순위에서 InfluxDB는 2위인 Kdb+를 세 배 차이로 따돌렸습니다.

image.png

기본 개념

  • Database: 데이터베이스

  • Measurement: 데이터 테이블, MySQL의 table과 유사합니다.

  • Field: InfluxDB에서 실제 데이터를 기록하는 키-값 쌍입니다(InfluxDB에서 필수이며 인덱싱되지 않습니다).
  • Field Set: Field 키-값 쌍의 집합입니다.
  • Field Key: Field 키-값 쌍의 키입니다.
  • Field Value: Field 키-값 쌍의 값입니다(실제 데이터).
  • Tag: Field를 설명하는 키-값 쌍입니다(InfluxDB에서 선택 사항이며 인덱싱됩니다).
  • Tag Set: Tag 키-값 쌍의 집합입니다.
  • Tag Key: Tag 키-값 쌍의 키입니다.
  • Tag Value: Tag 키-값 쌍의 값입니다.
  • TimeStamp: 데이터 포인트와 연결된 날짜 및 시간입니다.

고급 개념

  • Retention Policy: 데이터 저장 기간(기본값은 autogen, 영구 저장).

  • Series: 시계열은 Retention Policy, Measurement, Tag Set의 세 부분으로 구성됩니다.

Series 번호 Retention Policy Measurement Tag Set
시계열 1 autogen 날씨 省份=浙江, 城市=温州
시계열 2 autogen 날씨 省份=浙江, 城市=绍兴
시계열 3 autogen 날씨 省份=江苏, 城市=常州
시계열 4 autogen 날씨 省份=江苏, 城市=无锡
  • Point: 하나의 Series 내에서 동일한 TimeStamp를 가진 Field Set입니다. 테이블의 한 행 데이터로 이해할 수 있습니다.
TimeStamp Measurement Tag Set Field Set
2021-12-12T00:00:00Z disk host=a, path=/ free = 40836976 used = 20836976
  • Line Protocol: InfluxDB에 데이터 포인트를 쓰기 위한 텍스트 형식입니다.
# 위 테이블의 Point를 라인 프로토콜로 변환
disk,host=a,path=/ free=40836976,used=20836976 1639238400000000000

실습

1. 소프트웨어 설치

Influxdata의 yum 소스 추가

cat <<EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
Telegraf / Influxdb 설치
yum -y install telegraf influxdb
소프트웨어 시작
systemctl start influxdb
systemctl start telegraf

2. 데이터 조회

로컬 설치이므로 influx 명령어를 사용하여 데이터베이스에 직접 접속합니다(자세한 매개변수는 influx -h 참조).

influx

데이터 테이블 telegraf를 선택하고 select 명령어를 사용하여 데이터를 조회합니다(조회 언어는 InfluxQL).

use telegraf
select * from system limit 3

그림에서 3개의 Point를 확인할 수 있으며, 각 Point는 4개의 부분(measurement, timeStamp, tag set, field set)으로 구성됩니다.

image.png

Measurement

  • name = system

TimeStamp

  • time = 1637744500000000000 (나노초)

Tag Set

  • host = df-solution-ecs-018

Field Set

  • load = 0, load15 = 0, load5 = 0.01, n_cpus = 4, n_users = 5, uptime = 1106990, uptime_format = 12days,19:29

3. 시계열 확인

show series 명령어를 사용하여 시계열을 확인합니다.

show series from cpu

measurement가 cpu인 시계열이 5개(cpu-total, cpu0, cpu1, cpu2, cpu3, host는 모두 동일)임을 확인할 수 있습니다.

image.png

4. 시계열 테스트

4.1 inputs.tags (플러그인 태그) 추가

메인 설정 파일 /etc/telegraf/telegraf.conf에 inputs.cpu.tags를 추가합니다.

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false
[inputs.cpu.tags]
  cloud = 'aliyun'
telegraf 재시작
systemctl restart telegraf
show series 명령어를 사용하여 시계열을 확인합니다.
show series from cpu
measurement가 cpu인 시계열이 5 => 10개로 증가한 것을 확인할 수 있습니다.

image.png

4.2 measurement 삭제

drop 명령어를 사용하여 measurement를 삭제합니다.

drop measurement cpu

다시 show series 명령어를 사용하여 시계열을 확인합니다.

show series from cpu

measurement가 cpu인 시계열이 5개(cpu-total, cpu0, cpu1, cpu2, cpu3, host/cloud는 모두 동일)로 변경된 것을 확인할 수 있습니다.

image.png

4.3 global_tags (전역 태그) 추가

메인 설정 파일 /etc/telegraf/telegraf.conf에 global_tags를 추가합니다.

[global_tags]
  user = 'admin'

telegraf 재시작

systemctl restart telegraf

show series 명령어를 사용하여 시계열을 확인합니다.

show series from cpu

measurement가 cpu인 시계열이 다시 5 => 10개로 증가한 것을 확인할 수 있습니다.

image.png

show series 명령어를 사용하여 다른 measurement의 시계열을 확인합니다.

show series from mem

measurement가 mem인 시계열이 1 => 2개로 증가한 것을 확인할 수 있습니다.

image.png

간단한 분석

  • retention policy는 변경되지 않음
  • 플러그인 태그를 사용하면 해당 measurement의 시계열이 두 배가 됩니다.
  • 전역 태그를 사용하면 해당 database의 시계열이 두 배가 됩니다.
  • measurement도 변경되지 않는 경우, tag 조합이 많을수록 시계열이 더 많아집니다.

  • measurement

  • 한 번 삭제되면 해당 measurement 아래의 모든 시계열이 정리됩니다.

  • tag

  • 일반적으로 열거 가능해야 합니다(예: hostname, status).
  • container id, source ip와 같이 난수이면 안 됩니다. 그렇지 않으면 과도한 시계열이 발생할 수 있습니다.

문서 평가

이 페이지가 도움이 되었나요?