본문 바로가기
카테고리 없음

InfluxDB 데이터 베이스 관리 [ SHARD & RP (Retention Policy ) ]

by jaeaemin 2022. 8. 22.

 

1. InfluxDB Config file 설정 [ 구성 파일 설정 ] 


 

InfluxDB 상에서 기본 설정들을 바꿔주기 위해서는 Influxdb.config 파일을 수정해야 한다.

파일을 수정한 뒤 InfluxDB의 시스템 상에서 수정된 설정을 적용하기 위해서는 2가지 방식이 있다.

 

 

[1] conf 파일을 수정한 뒤 influxd 를 실행할 때 마다 conf 파일 위치를 인자로 주어 프로세스가 구성 파일을 가리키도록 설정하는 방식 

influxd -config /etc/influxdb/influxdb.conf

 

[2] 환경 변수를 설정하여 구성 파일의 경로를 설정하여 influxd가 적용되어 실행하도록 하는 방식 ( 추천 ) 

echo $INFLUXDB_CONFIG_PATH
/etc/influxdb/influxdb.conf

influxd

 

 

Influx.config 파일에서 설정 가능한 옵션 

[meta] 사용자, 데이터베이스, 보존 정책, 샤드 및 연속 쿼리에 대한 정보를 저장하는 InfluxDB 메타스토어에 대한 매개변수를 제어
[data] InfluxDB의 실제 샤드 데이터가 있는 위치와 WAL(Write-Ahead Log)에서 데이터를 플러시하는 방법을 제어
[coordinator] 쿼리 관리를 위한 구성 설정이 포함됨 
[retention] 보존 정책 설정 
[shard-precreation] 샤드 생성  서비스 설정 
[monitor] influx 시스템 자체의 모니터링에 대한 설정 
[http] http관련 인증 및 엔드포인트 설정
[logging] 로거가 로그를 출력으로 내보는 방식을 설정함
[subscriber] kapacitor( 데이터 처리 오픈소스 ) 가 데이터를 수신하는 방식을 제어함 
[[graphite]]  graphite 데이터에 대한 리스너 설정 
[[collectd]  [ collectd ]] 리스너 제어
[[opentsdb[[ OpenTSDB 데이터 수신기를 제어함 
[[udp]]  udp 설정 제어
[[ Continuous_queries ]]  연속 쿼리(CQ)에 대한 방식을 제어함 
[tls] 전송 계층 보안 설정 

 

 

Influx Config의 추가적인 정보는 아래 링크를 참조 

https://docs.influxdata.com/influxdb/v1.8/administration/config/

 

Configure InfluxDB OSS | InfluxDB OSS 1.8 Documentation

Thank you for your feedback! Let us know what we can do better:

docs.influxdata.com

 

Influx config에서 retenton policy를 위한 설정 

[retention ]

[1] enabled = true/false
InfluxDB가 보존 정책을 시행할지 안할지 결정
(환경 변수 : INFLUXDB_RETENTION_ENABLED)

[2] check-interval = "30m0s"
InfluxDB가 보존 정책을 실행할지 여부를 체크하는 시간 간격
(환경 변수:INFLUXDB_RETENTION_CHECK_INTERVAL)

 

 

 

 

 

 

2. Retention Policy 설정 


 

1. CREATE RETENTION POLICY로 보존 정책을 생성 

CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]

 

  • duration : InfluxDB에서 데이터를 보관할 기간을 결정함. 
    • 기간 리터럴로 설정하며 Max : INF ,  Min : 1시간
  • replication : 클러스터에 저장되는 각 지점의 독립 복사본 수를 결정함
  • shard duration : 샤드 그룹이 적용되는 시간 범위를 결정함
    • 기본적으로 보존 정책에 따라 결정되며, 기간 리터럴로 지정되고 INF는 사용 불가

 

 

 

2. RP 예시 

NOAA_water_database에 하루 치 보존 정책을 새로 만들기 위한 코드는 아래와 같다.

 - 1d 기준으로 데이터를 삭제하는 명령을 호출한다. 

 - 복제 계수는 1h

> CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 1d REPLICATION 1

 

 

3. 그 외 명령어 

DROP RETENTION POLICY <retention_policy_name> ON <database_name>
ALTER RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> SHARD DURATION <duration> DEFAULT

 

 

 

 

 

 

 

3. 시스템 적용


우리 시스템은 현재 센서 데이터 시각화 대시보드를 특정 시간 기준으로 출력하는 웹 대시보드 환경을 구축할 예정이다.

모든 시각화 대시보드는 3600개의 시간 간격으로 노드별 센서 데이터를 출력하고, 따라서 시각화할 그래프의 요소수는 아래와 같다.

기준 시간 max-sampling 되는 시간 주기 관리할 measurements
1h 1s  동일 measurments
4h 4s
12s 12s
24h 24s 
3d 1m 12s 1
7d 2m 48s 1
30d 12m 1
3M 36n 1

 

 

Retention policy 설계 

 

 

 

 

Shard_duration 기준 ( influx 권장 사항 )    ( 공식 문서 참고 ) 

  • 선택 과목. 이 SHARD DURATION절은 샤드 그룹 이 적용되는 시간 범위를 결정합니다 .
  • 기간 리터럴<duration> 이며 ( 무한) 기간 을 지원하지 않습니다 .INF
  • 기본적으로 샤드 그룹 기간은 보존 정책에 따라 결정됩니다 DURATION.

보존 정책의 DURATION샤드 그룹 기간

< 2일 1 시간
>= 2일 및 <= 6개월 1 일
> 6개월 7 일

 

 

 

 

 

4. 현재 적용된 RP 예시 


위의 예제가 아닌 RP와 CQ가 성공적으로 실행되는지 여부를 확인하기 위해서 

테스트 목적의 CQ & RP를 생성해 실행한 뒤 결과를 확인해보자 ! 

 

 

1. RP ( show retention policies ) 

각 1시간, 4시간, 2시간 주기로 관리되는 Retention policy를 생성함

one_hours => 1시간 치 데이터를 관리하고 , 샤드는 1시간 씩 관리함 

four_hours => 4시간 치 데이터를 관리하고, 샤드는 1시간 씩 관리함 

 

 

 

 

2. CQ ( show continuous queries ) 

one_hours RP에는 10초마다 샘플링 된 센서 데이터들의 맥스 샘플링 값을 저장함

four_hours RP에는 30초마다 샘플링 된 센서 데이터들의 맥스 샘플링 값을 저장함

 

 

 

3. Shard 확인하기 ( show shards ) 

CQ & RP를 완료하고 데이터들의 입력을 Testing 하면서 생긴 샤드를 관찰하면 다음과 같이 목적에 맞게 start time, end time, expiry time이 설정된 것을 확인 할 수 있다.

반응형