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/
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이 설정된 것을 확인 할 수 있다.