InfluxDB 와 Grafana 사용시 시간에 관하여
InfluxDB 와 Grafana 를 사용하는 방법은 아래 링크를 통해 알 수 있다.
이 둘을 같이 쓰다보면 시간때문에 헥깔릴 수 있는데 간단 정리 해본다.
A 기기 : InfluxDB 에 데이터를 넣는 머신 ( OS시간 1시 30분 )
DB 서버 : InfluxDB 가 돌아가는 서버 ( OS 시간 1시 )
내 PC : 브라우저를 (Grafana) 통해 가시화하는 내 컴퓨터 (OS 시간 12시 30분)
가 있다고 하자.
A 기기에서 InfluxDB 서버에 현재 시간 1시 30분을 UTC 시간으로 변경하여 데이터와 함께 INSERT 해주면
InfluxDB 에 저장된다.
이때 내 PC, 즉 내 브라우저 통해서는 어떻게 데이터가 나올까?
내 컴퓨터에선 안나온다. 아마 한 시간 후에나 나올 것이다. (물론 타임쉬프트는 0 이다)
매우 상식적인 범위에서 시간이 다루어지는데..
내 브라우저에서의 Grafana 의 x 축은 InfluxDB 의 시간에 따라 변경되는건 아니다. 즉 InfluxDB 에 데이터가 1시30분으로 들어가 있으므로 , 내 브라우저에서의 X 축이 1시30분까지 보여지는게 아니라 내 브라우저의 시간인 12시 30분까지만 보여진다. 따라서 입력된 데이터가 보여지지 않는다. 데이터가 보여지게 하려면 적어도
내 PC 의 시간이 입력시간보다 빨라야한다.
서버에 저장된 시간이 내 컴퓨터의 OS 시간에 맞추어져서 변경된다든가..
입력하면 InfluxDB 의 OS 시간에 맞추어서 재 변경된다던가 하는 이런 일들이 벌어지진 않는다.
매우 상식적인 일도 몇가지가 꼬이니깐 헥깔려지더라..
InfluxDB 시간 쿼리 예제 )
1. 하루전 부터 지금까지 (상대시간 지정)
SELECT mean("watt") as watt, mean("pf") as pf FROM "jinyoung1_5" WHERE time > now() - 1d GROUP BY time(1h)
2. 날짜 지정 (8월 12일만 출력됨)
SELECT mean("watt") as watt, mean("pf") as pf FROM "{0}"
WHERE time > '2013-08-12' and time < '2013-08-13' # 2017-04-04 00:00:01
GROUP BY time({1}) fill(null)
3. 절대시간 지정 (00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970.)
select value from response_times where time > 1388534400s