Wo finde ich eine RRD-Dateispezifikation?

987
Liesmith

Ich versuche, ein Python-Programm zu schreiben, um Informationen direkt aus den auf unseren Servern gespeicherten RRD-Leistungsdateien abzurufen, die Dateien werden jedoch nicht im Klartextformat gespeichert, und ich kann keine Spezifikation finden, die das tatsächliche Format von RRDtool unterbricht speichert Informationen in einer RRD-Datei (dh die ersten N Bits beschreiben X, die nächsten N Bits beschreiben Y usw.).

Ich weiß, dass ich die Hilfsprogramme "Abrufen" und "Ablegen" von RRDtool verwenden kann, um einen einzelnen Datensatz abzurufen oder die gesamte Datei in ein gigantisches XML-Abbild zu speichern, aber ich möchte etwas von Grund auf schreiben, das mir mehr Kontrolle darüber gibt, wie das funktioniert Datei wird gelesen und wie viel Speicherplatz belegt ist (die XML-Dumps sind jeweils etwa 1 GB groß).

Ein Beispiel für eine der Situationen, die ich ansprechen möchte: das letzte Mal, dass ein Server einen bestimmten Wert aufgezeichnet hat (dh das letzte Mal, wenn er mehr als eine bestimmte Anzahl von verworfenen Paketen registriert hat).

Ich habe online nachgesehen, aber alles, was ich finde, verweist auf die Verwendung der RRDtool-Dienstprogramme und nicht auf eine Beschreibung der Formatierung der RRD-Datei.

Ich entschuldige mich, wenn dies die falsche Börse ist, um diese Frage zu stellen. es schien die beste Lösung zu sein, da meine Frage nicht wirklich spezifisch für die Programmierung ist. Ich bin auch nicht sicher, dass ich die besten Tags für diese Frage verwende. Ich bin daher offen für Vorschläge.

1

2 Antworten auf die Frage

1
anantary

Haben Sie über die Verwendung der JSON-Exportfunktion von RRDTool nachgedacht?

Sie können den Inhalt der RRD-Datei zunächst nach JSON exportieren, das erheblich leichter als XML ist, und dann analysieren und nach Ihren Wünschen bearbeiten.

http://oss.oetiker.ch/rrdtool/doc/rrdxport.de.html

Erwähnenswert sind auch einige PERL- und R-Pakete, die Ihnen dabei helfen können, Ihr Ziel zu erreichen.

RRD-Editor für PERL: http://search.cpan.org/~dougleith/RRD-Editor/lib/RRD/Editor.pm Für R: https://github.com/pldimitrov/Rrd

Danke für die Empfehlungen; Ich werde in JSON nachsehen (ich weiß nichts von Perl oder R). Beide Links sind 404, wenn ich sie versuche. Liesmith vor 8 Jahren 0
@ Liesmith, ich habe die Links behoben. In Ihrem Fall würde ich mit dem JSON-Export gehen und dann in Python nachbearbeiten. anantary vor 8 Jahren 0
1
Richard Scrivener

Ich denke, die beste Lösung für das Verständnis des Binärformats einer RRD-Datei besteht darin, den RDDTool-Quellcode von https://oss.oetiker.ch/rrdtool/download.en.html herunterzuladen und die Dateispezifikation aus der Quelldatei rrd_fetch zurückzuentwickeln .c.

Wenn Sie einen Überblick über die Struktur von RRD-XML erhalten möchten, lesen Sie bitte https://serverfault.com/questions/287829/where-documentation-of-rrddump-xml-format-is

Nachdem Sie die harte Arbeit erledigt haben, können Sie hier eine Zusammenfassung Ihrer Ergebnisse posten :).

Danke, ich werde es irgendwann mal ausprobieren. Mein Wissen über C ist praktisch null, aber es kann Hinweise geben. Wenn ja, werde ich meine ursprüngliche Frage aktualisieren ... aber erwarten Sie nicht, dass diesbezüglich zu schnell erledigt wird ... Liesmith vor 5 Jahren 0