# 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