Upgrade auf Version 0.6.x

Das Web-Frontend ist komplett neu geschrieben worden und basiert nun auf dem PHP MVC Framework Kohana. Somit ergeben sich grundlegend andere Abhängigkeiten, die dringend vor der Installation geprüft werden müssen.

Anmerkung: Ein Upgrade läuft zuerst wie eine Neuinstallation. Anschließend sind einige Anpassungen durchzuführen, die weiter unten beschrieben sind.

PNP 0.4.x wurde ohne weitere Angabe von Optionen beim Aufruf von ./configure unterhalb einer Nagios-Installation unter /usr/local/nagios installiert.

PNP 0.6.x wird bei Angabe keiner weiteren Optionen unter /usr/local/pnp4nagios installiert, ist also wie Nagios als eigenständige Applikation zu sehen.

Anmerkung: Es reicht aus, die *.rrd-Dateien vom alten ins neue Verzeichnis zu kopieren. Sie enthalten die eigentlichen Daten. Die *.xml-Dateien werden jedes Mal neu angelegt, wenn Performance-Daten verarbeitet werden, denn sie enthalten lediglich Meta-Informationen. Außerdem hat sich die interne Struktur geändert, so dass sie sowieso nicht nutzbar sind.

Vergleich der Struktur

Summary einer Installation von PNP 0.4.14

./configure
...
*** Configuration summary for pnp 0.4.14 05-02-2009 ***

  General Options:
  -------------------------         -------------------
  Nagios user/group:                nagios nagios
  Install directory:                /usr/local/nagios
  HTML Dir:                         /usr/local/nagios/share/pnp
  Config Dir:                       /usr/local/nagios/etc/pnp
  Location of rrdtool binary:       /usr/bin/rrdtool Version 1.3.1
  RRDs Perl Modules:                FOUND (Version 1.3001)
  RRD Files stored in:              /usr/local/nagios/share/perfdata
  process_perfdata.pl Logfile:      /usr/local/nagios/var/perfdata.log
  Perfdata files (NPCD) stored in:  /usr/local/nagios/var/spool/perfdata/

Summary einer Installation von 0.6.0

./configure
...
*** Configuration summary for pnp4nagios-0.6.0 07-30-2009 ***

  General Options:
  -------------------------         -------------------
  Nagios user/group:                nagios nagios
  Install directory:                /usr/local/pnp4nagios
  HTML Dir:                         /usr/local/pnp4nagios/share
  Config Dir:                       /usr/local/pnp4nagios/etc
  Location of rrdtool binary:       /usr/bin/rrdtool Version 1.3.1
  RRDs Perl Modules:                FOUND (Version 1.3001)
  RRD Files stored in:              /usr/local/pnp4nagios/var/perfdata
  process_perfdata.pl Logfile:      /usr/local/pnp4nagios/var/perfdata.log
  Perfdata files (NPCD) stored in:  /usr/local/pnp4nagios/var/spool

  Web Interface Options:  -------------------------         -------------------
  HTML URL:                         http://localhost/pnp4nagios/
  Apache Config File:               /etc/apache2/conf.d/pnp4nagios.conf

Aus diesen Infos ergeben sich die zu ändernden Parameter und somit die Upgrade-Strategie.

Anpassungen

Die Vorlagen der action_url-Definitionen haben sich verändert. Statt ”/nagios/pnp” ist ”/pnp4nagios” einzutragen und statt “index.php” wird nun “graph” benutzt

define host {
   name       host-pnp
   action_url /pnp4nagios/graph?host=$HOSTNAME$
   register   0
}

define service {
   name       srv-pnp
   action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}

Ähnliches gilt für die Preview-Popup-Funktion

define host {
   name       host-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
   register   0
}

define service {
   name       srv-pnp
   action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}

Achtung: Es ist kein Fehler, dass die Zeichenketten vor und nach “class” jeweils nur ein Apostroph enthalten.

Anders als in der 0.4.x Dokumentation vermerkt gelten die Templates für Nagios 2.x und 3.x. Der einzige Unterschied besteht darin, dass die action_url-Direktive in Nagios 2.x nicht in der Service-Definition, sondern in eigenen serviceextinfo-Definitionen verfügbar ist.

Innerhalb der PHP-Dateien im templates-Verzeichnis müssen alle Variablen vor der ersten Benutzung initialisiert werden, z.B.

$lower = ""

Das gilt auch für Variablen, an die früher “angehängt” werden konnte, ohne sie vorher zu initialisieren. Daher wird aus

foreach ($DS as $i) {
    $def[1] .= "DEF:var$i=$rrdfile:$DS[$i]:AVERAGE " ;

nun

$def[1] = "";
foreach ($DS as $i) {
    $def[1] .= "DEF:var$i=$rrdfile:$DS[$i]:AVERAGE " ;


Konstanten in Template-Dateien funktionieren nicht mehr, so dass diese in Variablen umzuwandeln sind. Aus

define("_WARNRULE", '#FFFF00');

wird dann z.B.

 $WARNRULE = '#FFFF00';

Man sollte daran denken, alle Vorkommen in der Datei zu ändern ;-).

Upgrade Szenario mit NPCD

  1. Planen des neuen Aufbaus.
  2. Testinstallation durchführen und sich mit dem neuen System vertraut machen.
  3. Backup erstellen.
  4. PNP 0.6.x nach /usr/local/pnp4nagios installieren.
  5. make install-config
  6. make install-webconf
  7. Apache reload.
  8. Apache-Config testen.
    1. Aufruf /pnp4nagios muss ein leeres Perfdata-Verzeichnis melden.
  9. /usr/local/pnp4nagios/etc/npcd.cfg aus der npcd.cfg-sample erstellen.
    1. Pfade überprüfen und ggf. Änderungen der 0.4.x nachziehen.
  10. Alle Pfade zur neuen Installation in der nagios.cfg anpassen.
  11. Alle Pfade in den Command-Definitionen anpassen.
  12. npcd über /etc/init.d/npcd stop anhalten.
  13. make install-init installiert das neue Init Script für den npcd.
  14. Nagios anhalten.
  15. /usr/local/nagios/share/perfdata nach /usr/local/pnp4nagios/var/perfdata kopieren. Achtung: Auf Permissions achten.
  16. /etc/init.d/npcd start
  17. /etc/init.d/nagios start