【发布时间】:2017-01-13 07:52:50
【问题描述】:
多年来,我收集了有关我的服务器状态的数据:温度、风扇速度、cpu 负载、SMART 数据。它们存储在 SQLite 数据库中的各种表下,每个表都特定于每种类型的数据。
我正在切换到 InfluxDB,以便更轻松地进行绘图 (Grafana) 和未来扩展:数据将包括来自另一台服务器的值以及 UPS 数据(电压、电池等)。
我阅读了有关 schemas in InfluxDB 的指南,但我仍然感到困惑,因为我没有这方面的经验。我找到了 another question 关于架构推荐的信息,但我无法将它应用到我的案例中。
我应该如何解决这个问题以及如何为时间序列设计合适的架构?我应该在标签中放什么,在字段中放什么?我应该使用单个“测量”系列还是应该创建多个?
这些是我开始的数据:
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
【问题讨论】:
标签: schema database-schema influxdb