2017-01-10 12 views
0

我有关于多年来收集的服务器状态的数据:温度,风扇速度,CPU负载,SMART数据。它们存储在各种表格下的SQLite数据库中,每种表格都针对每种类型的数据。什么InfluxDB模式适合这些测量?

为了更便于绘图(Grafana)和未来扩展,我正在切换到InfluxDB:数据将包含来自另一台服务器的值以及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 

回答

0

我发现同样的IPMI读数使用由官方电报plugin的模式,我有:

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

我会将旧数据转换为该格式,我将所有必填字段存储在旧SQLite数据库中。我将修改插件以保存服务器的名称而不是IP,这样在家里比名称本身更加易变。我也可能会将时间戳的精度降低到简单的毫秒或秒。

使用一个为例,据我所知,我提出了CPU读数一个可以改进:

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_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