Каква схема на InfluxDB е подходяща за тези измервания?

Имам данни за състоянието на моя сървър, събрани през годините: температури, скорости на вентилатора, натоварване на процесора, SMART данни. Те се съхраняват в база данни SQLite под различни таблици, всяка от които е специфична за всеки тип данни.

Преминавам към InfluxDB за по-лесно графикиране (Grafana) и бъдещо разширяване: данните ще включват стойности от друг сървър, а също и UPS данни (напрежения, батерия, ...).

Прочетох указанията за схеми в InfluxDB, но все пак съм объркан, защото нямам опит по темата. Намерих още един въпрос относно препоръка за схема, но не мога да я приложа към моя случай.

Как трябва да подходя към проблема и как да проектирам подходяща схема за времевия ред? какво трябва да поставя в етикети и какво в полета? трябва ли да използвам една серия от „измервания“ или трябва да създам няколко?

Това са данните, с които започвам:

CREATE TABLE "case_readings"(date, sensor_id INTEGER, sensor_name TEXT, Current_Reading)

CREATE TABLE cpu_load(date, load1 REAL, load2 REAL, load3 REAL)

CREATE TABLE smart_readings(date, disk_serial TEXT, disk_long_name TEXT, smart_id INTEGER, value)

Примери за действителни данни:

case_readings:
"1478897100"    "4"     "01-Inlet Ambient"  "20.0"
"1478897100"    "25"    "Power Supply 1"    "0x0"

cpu_load:
"1376003998"    "0.4"   "0.37"  "0.36"

smart_readings:
"1446075624"    "50026B732C022B93" "KINGSTON SV300S37A60G"  "194"   "26 (Min/Max 16/76)"
"1446075624"    "50026B732C022B93" "KINGSTON SV300S37A60G"  "195"   "0/174553172"
"1446075624"    "50026B732C022B93" "KINGSTON SV300S37A60G"  "196"   "0"
"1446075624"    "50026B732C022B93" "KINGSTON SV300S37A60G"  "230"   "100"

Това е моята идея за схема на InfluxDB. Използвам главни букви, за да покажа действителната стойност и интервали само когато низ действително съдържа интервали:

case_readings,server=SERVER_NAME,sensor_id=SENSOR_ID "sensor name"=CURRENT_READING DATE

cpu_readings,server=SERVER_NAME load1=LOAD1 load2=LOAD2 load3=LOAD3 DATE

smart_readings,server=SERVER_NAME,disk=SERIAL,disk="DISK LONG NAME" smart_id=VALUE DATE

person FarO    schedule 10.01.2017    source източник


Отговори (1)


Намерих схемата, използвана от официален плъгин на Telegraph за същите IPMI показания, които имам:

ipmi_sensor,server=10.20.2.203,unit=degrees_c,name=ambient_temp \
 status=1i,value=20 1458488465012559455

Ще конвертирам старите си данни в този формат, имам всички задължителни полета, съхранени в моята стара SQLite DB. Ще модифицирам плъгина, за да запиша името на сървъра вместо IP, което тук у дома е по-променливо от самото име. Също така вероятно ще намаля точността на клеймото за време до прости милисекунди или секунди.

Използвайки този като пример, разбирам, че този, който предложих за показанията на процесора, може да бъде подобрен:

cpu,server=SERVER_NAME,name=load1 value=LOAD1 DATE
cpu,server=SERVER_NAME,name=load2 value=LOAD2 DATE
cpu,server=SERVER_NAME,name=load3 value=LOAD3 DATE

Въпреки това все още обмислям предложеното от мен, без индексиране на единичните стойности:

cpu,server=SERVER_NAME load1=LOAD1 load2=LOAD2 load3=LOAD3 DATE

За SMART данни моето предложение също не беше оптимално, така че ще използвам:

smart_readings,server=SERVER_NAME,serial=SERIAL,name=DISK_LONG_NAME",\
 smart_id=SMART_ID,smart_description=SMART_DESCRIPTION \
 value=VALUE value_raw=VALUE_RAW DATE
person FarO    schedule 12.01.2017