check_icmp liefert mit Squeeze mehr PerfDatas als mit Lenny

Alternativ-Titel: Keine PNP4Nagios-Graphen mehr mit check_icmp nach Squeeze-Upgrade

Irgendwann zwischen den Releases 1.4.12 (Lenny) und 1.4.15 (Squeeze) sind bei "check_icmp" zwei zusätzliche PerfData-Werte hinzugekommen "rtmin" und "rtmax". Beim Update meiner privaten Nagios-Installation ist mir das natürlich ziemlich auf die Füße gefallen, denn die vorhandenen RRD-Files von PNP4Nagios kannten nur die zwei bisherigen "rta" und "pl" PerfDatas bzw. Datasources.

Jetzt hätte man natürlich einfach alle RRDs, die es betrifft, löschen können, dann hätte sie PNP4Nagios wieder neu angelegt. Aber damit wären dann ja auch die alten Werte verloren gegangen. Also habe ich nach einer Lösung gesucht, wie man die RRD-Dateien erweitern kann.

Da das leider nicht so einfach möglich ist, habe ich mir ein Python-Skript geschrieben, dass letztendlich die Daten aus der RRD-Datei dump't (XML), das XML an den entsprechenden Stellen erweitert, und dann aus diesem "neuen" XML wieder eine RRD-Datei baut. Und siehe da, es funktioniert :)

BITTE VORHER DIE RRD-DATEIEN SICHERN!

Aufruf: add_ds.py [-v] Ping.rrd
Dadurch wir eine neue Datei "Ping.rrd.new" erzeugt, die entsprechend erweitert ist.

Theoretisch wäre es sogar möglich, das Tool folgendermaßen aufzurufen:
cd /var/lib/pnp4nagios/perfdata; add_ds.py --rename */Ping.rrd
ICH würd's aber nur mit einer vorherigen Sicherung machen ;-)

Update 1:
Das Skript ist so (vor)eingestellt, dass es genau für diesen Fall (Lenny->Squeeze) funktioniert.

Update 2:
Noch etwas genauer: Es überprüft, dass genau zwei ("--expect=2") DS/Datasources in der RRD-Datei existieren und fügt dann zwei weitere ("--addds=2") des Typs GAUGE ("--adddstype=GAUGE") hinzu. Über die Parameter kann man dies steuern und natürlich für andere Fälle auch andere Datasources hinzufügen.

Download
Da ich noch nicht ganz schlüssig bin, wo ich das Skript letztendlich hinlegen werde, wird es einfach mal hier angehängt.