2017-01-10 11 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