Mein erster Beitrag hier, also ich hoffe, ich war nicht zu ausführlich. Ich habe festgestellt, dass ich Datenpunkte verlor, da ich nur 10 Zeilen in meiner rrdtool-Konfiguration hatte und von einer Backup-Quelldatei mit älteren Daten aktualisieren wollte.Aktualisierung der rrdtool Datenbank
rrdtool create dailySolax.rrd \
--start 1451606400 \
--step 21600 \
DS:toGrid:GAUGE:172800:0:100000 \
DS:fromGrid:GAUGE:172800:0:100000 \
DS:totalEnerg:GAUGE:172800:0:100000 \
DS:BattNow:GAUGE:1200:0:300 \
RRA:LAST:0.5:1d:1010 \
RRA:MAX:0.5:1d:1010 \
RRA:MAX:0.5:1M:1010
und die Update-Linie in Python ist
newline = ToGrid + ':' + FromGrid + ':' + TotalEnergy + ':' + battNow
UpdateE = 'N:'+ (newline)
print UpdateE
try:
rrdtool.update(
"%s/dailySolax.rrd" % (os.path.dirname(os.path.abspath(__file__))),
UpdateE)
Diese alle Originaldaten zur Eingabe fein gearbeitet (von crontabbed Website schabt), aber: Nachdem die Zeilen Festsetzung Zahl wurde die Config mit erstellt Wie gesagt, ich habe Daten verloren und wollte die früheren Datenpunkte wieder hinzufügen. Aus meiner Backup-Quelle hatte ich eine einfache Textdatei mit Zeilen wie
1509386401:10876.9:3446.22:18489.2:19.0
1509408001:10879.76:3446.99:18495.7:100.0
, wo das erste Feld der Zeitstempel ist. Und verwendet dann diesen Code in den Zeilen zu lesen für die Updates:
with open("rrdRecovery.txt","r") as fp:
for line in fp:
print line
## newline = ToGrid + ':' + FromGrid + ':' + TotalEnergy + ':' + battNow
UpdateE = line
try:
rrdtool.updatev(
"%s/dailySolax.rrd" % (os.path.dirname(os.path.abspath(__file__))),
UpdateE)
Wenn es nicht richtig ich auf eine leere Datenbank versuchte es noch einmal mit einer Kopie der aktuellen Version der Datenbank funktionierte die gleiche Konfiguration erstellt. In jedem Fall führt das Update nur zu den Zeitstempeldaten in der Datenbank und keine Daten von den anderen Feldern. Python ist nicht beschweren und ich erwartete
1509386401:10876.9:3446.22:18489.2:19.0
würde das gleiche aktualisieren ebenso wie
N:10876.9:3446.22:18489.2:19.0
Der Dump zeigt die lastupdate Daten für alle Felder, aber diese dann für die RRA-Datenbank
<!-- 2017-10-31 11:00:00 AEDT/1509408000 --> <row><v>NaN</v><v>NaN</v><v>NaN</v><v>NaN</v></row>
Nicht sicher, ob ich ein Python-Problem habe - wahrscheinlicher ein rrdtool-Verständnisproblem. Danke für irgendwelche Hinweise.
Danke für Ihre Antwort. Scheint so, als ob einige meiner obigen Probleme von der Verwendung aufeinanderfolgender RESIZE-Befehle, z. '1755 rrdtool resize scripts/dailySolax.rrd 0 GROW 1000 1756 rrdtool Größe ändern scripts/dailySolax.rrd 1 GROW 1000 1757 rrdtool Größe ändern scripts/dailySolax.rrd 2 GROW 1000' , die die Anzahl der Zeilen nicht korrekt für alle RRAs wuchs. Jetzt aber, wenn ich eine neue RRD erstellen und mein Python-Skript ausführen, wird das vierte Datenfeld nicht aktualisiert. –
Wenn ich verwende: 'rrdtool Update dailySolaxTemp.rrd 1508371201: 10740.95: 3430.97: 18259.2: 58.0' macht es das gleiche und" 58.0 "wird" NaN "in der Rrd. Wenn ich einen Fehler in der Update-Zeile habe, kann ich es nicht sehen. –
Ok Ich habe eine Anpassung an die Rrd-Parameter vorgenommen und jetzt bekomme ich einen Fehler, der darauf hindeutet, dass ich einige Newline- oder CR-Zeichen habe, die Probleme verursachen. –