influxdb 사용해보기
ID/PW(influxdb-2/nonrtric)
ID/PW(my-release-influxdb-85888dfd97-n8688/default)
container 내부와 외부는 token 이름만 다른 점을 기억하면 편함
- 내부 :
-t $INFLUXDB_ADMIN_USER_TOKEN
- 외부 :
-t $INFLUXDB_TOKEN
- ${INFLUXDB_TOKEN}
- influxdb 설치시 미리 설정해두었던 변수
- 재설정 방법
- token 추출
kubectl exec -it my-release-influxdb-c87cdb956-2mkr4 -- cat bitnami/influxdb/influxd.bolt | tr -cd "[:print:]" | grep -o '"token":"[^"]*"' | awk -F\" '{print $4}'
- token 설정
export INFLUXDB_TOKEN=<token>
- 확인 방법 :
echo $INFLUXDB_TOKEN
- token 추출
- ${INFLUXDB_TOKEN}
InfluxDB 계정생성
container 접속 o
- container 접속
kubectl exec -it -n default my-release-influxdb-c87cdb956-zrnsp -- /bin/bash
- 계정 생성
influx user create --org primary --name <name> --password <password> -t $INFLUXDB_ADMIN_USER_TOKEN
container 접속 x
- 계정 생성
-
kubectl exec -it -n default my-release-influxdb-c87cdb956-zrnsp -- influx user create --org primary --name <name> --password <password> -t $INFLUXDB_TOKEN`
-
InfluxDB web 열기
- port 열기
kubectl port-forward svc/my-release-influxdb 8086:8086
- vscode의 터미널에서 port 8086을 통해 접속 or http://localhost:8086/
- login
Data Preprocessing (container 밖)
- 새로운 directory 생성 후 preprocessing.py 파일과 csv 파일 저장
- venv 설정
sudo -i
python3 -m venv .venv
source .venv/bin/activate
pip3 install pandas
pip3 install influxdb_client
- 해당 directory에서 설정하면
.venv
directory가 생기면서 나중엔 2번째 4,5번째 줄은 생략 가능
- Data Preprocessing python code 실행
python3 ktdata_preprocessing.py <raw data filename> <processed data filename>
python3 ktdata_preprocessing.py KT_gimpo_1_1.csv KT_gimpo.csv
- venv 환경 나와서 확인
- venv 환경에서 생성된 전처리된 csv는 sudo 권한이 있어야 수정가능
InfluxDB에 data 등록 (여기서 부터는 GUI로도 가능함)
**글의 처음에서 명시한 것 처럼 container 내부, 외부에서는 token 값만 변경해주면 동일, container 외부만 작성하겠음**
- bucket 생성
kubectl exec -it my-release-influxdb-85888dfd97-bjr5g -- influx bucket create -n <bucket name> -o primary -t $INFLUXDB_TOKEN
- bucket list 확인 방법
kubectl exec -it my-release-influxdb-85888dfd97-bjr5g -- influx bucket list -o primary -t $INFLUXDB_TOKEN
- local에 있는 전처리 완료된 file을 container의 /tmp에 복사
kubectl cp <filename> default/<podname>:/tmp -c <containername>
kubectl cp KT_gimpo.csv default/my-release-influxdb-85888dfd97-bjr5g:/tmp -c influxdb
- InfluxDB의 bucket에 Data 등록
-
kubectl exec -it my-release-influxdb-85888dfd97-bjr5g -- influx write -b <bucketname> -f tmp/<filename.csv> -t $INFLUXDB_TOKEN -o primary --header "#constant measurement,DLdata" --header "#datatype long,dateTime:RFC3339"
-
kubectl exec -it my-release-influxdb-85888dfd97-bjr5g -- influx write -b KT_gimpo -f tmp/KT_gimpo.csv -t $INFLUXDB_TOKEN -o primary --header "#constant measurement,DLdata" --header "#datatype long,dateTime:RFC3339"
-
--header "#constant measurement,<measurement name>"
: data 맨 앞에을 붙임
-
- bucket 삭제 방법
kubectl exec -it my-release-influxdb-85888dfd97-bjr5g -- influx bucket delete --name KT_gimpo -o primary -t $INFLUXDB_TOKEN
- data 삭제 방법
- container 내부에서만 가능한듯
- 추후 정리 예정
- 애매하면 그냥 bucket 삭제하세요
influxdb data format
- format : measurement, tag_key1=tag_value1, tag_key2=tag_value2, field_key1=field_value1, timestamp
- example : temperature,location=New York,unit=celsius, value=23.5, 1628845800000000000
- measurement = temperature
- tag_key1 = location
- tag_value1 = New York
- tag_key2 = unit
- tag_value2 = celsius
- field_key1 = value
- field_value1 = 23.5
- timestamp = 1628845800000000000
- format
- Measurement : 데이터의 카테고리나 종류
- Tags : 데이터를 분류하거나 필터링하는 데 사용되는 키-값
- Fields : 실제 데이터를 저장하는 키-값
- Timestamp : 데이터의 수집 시점, 라인 프로토콜의 끝에 위치