У меня есть данные о состоянии моего сервера, собранные за эти годы: температура, скорость вращения вентиляторов, загрузка процессора, данные SMART. Они хранятся в базе данных SQLite в различных таблицах, каждая из которых специфична для каждого типа данных.
Я перехожу на InfluxDB для упрощения построения графиков (Grafana) и будущего расширения: данные будут включать значения с другого сервера, а также данные ИБП (напряжение, аккумулятор, ...).
Я прочитал руководство по схемам в 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