2016-07-26 28 views
0

Nachdem ich mit Collectd und InfluxDB für eine Weile herumgespielt habe, habe ich festgestellt, dass die Uptime jedes Mal als ein einziger Datenpunkt, z. führt zu Messungen wie folgt aussehen:Modellierung Datenbank für Uptime innerhalb Influxdb effizient

1469552552940296000 localhost uptime 426568 
1469552931893217000 localhost uptime 426947 
1469552991889480000 localhost uptime 427007 
1469553051889521000 localhost uptime 427067 
1469553111890071000 localhost uptime 427127 
1469553171889512000 localhost uptime 427187 
1469553231889512000 localhost uptime 427247 

Dies scheint mir ineffizient, da es irgendwie überflüssig ist. Bei der letzten Messung kann ich alle anderen berechnen, also warum sie überhaupt speichern? Ich beschäftige mich jetzt mit Aufbewahrungsrichtlinien, aber ich bin mir nicht sicher, wie ich sie hier anwenden soll. Was wäre eine gute Strategie für diese Art von Daten?

Ich möchte auf jeden Fall die Informationen haben, wenn das System ausgeschaltet war, also im Grunde möchte ich den "Start" -Punkt zusammen mit dem neuesten uptime_value speichern. Alles dazwischen ist überflüssig.

Antwort

0

Hier ist es richtig, kontinuierliche Abfragen und Aufbewahrungsrichtlinien zu verwenden. Ich weiß nicht, dass Sie nur die ersten und letzten Punkte speichern können, aber Sie können das definitiv.

Die kontinuierliche Abfrage wird verwendet, um alle Ihre Daten auf einen einzelnen Punkt zu reduzieren. Die Aufbewahrungsrichtlinie wird verwendet, um die alten Daten zu löschen.

Es wäre

in etwa so aussehen
CREATE RETENTION POLICY myrp on mydb DURATION 1d REPLICATION 1 

Dann etwas wie das folgende kontinuierliche Abfrage haben

CREATE CONTINUOUS QUERY mycq on mydb BEGIN 
    SELECT max(uptime) FROM mymeasurement GROUP BY time(10m), * 
END 

aber sagen, dass nach der Kompression, jeden dieser Punkte wird nehmen weniger als 2,5 Bytes auf der Festplatte. Ich würde mir wahrscheinlich nicht allzu viele Sorgen machen, dass ich sehr effizient bin.