# RRDtool Cache Daemon

In großen Installationen wird man über kurz oder lang feststellen, dass die Verarbeitung der Performance-Daten eine recht hohe I/O-Last zur Folge hat. RRDtool muss extrem viele Updates auf Disk schreiben, kann dabei jedoch den Disk-Cache nicht optimal ausnutzen.

Eine Optimierung stellt das Sammeln und Sortieren der Daten dar. Es ist für das System effektiver, viele Updates im Block in eine RRD-Datenbank zu schreiben. Der Disk-Cache kann dabei effektiver genutzt werden.

In der aktuellen RRDtool-Version ( SVN trunk 1550+ ) ist der rrdcached enthalten, der genau diese Situation verbessern soll.

An dieser Stelle möchte ich mich bei Florian octo Forster, Kevin Brintnall und Tobi Oetiker bedanken. Die Entwicklung dieses Daemons wurde vorbildlich auf der rrd-developers Mailingliste koordiniert.

## Arbeitsweise

Der rrdcached arbeitet als Daemon im Hintergrund und öffnet einen UNIX- oder TCP-Socket, auf dem er auf Anfragen von rrdtool wartet. Aufgrund von Sicherheitsbedenken ist es in neueren Versionen von rrdcached aber nicht mehr möglich absolute Pfadangaben (wie bei pnp4nagios üblich) bei Netzwerkzugriffen zu verwenden, daher ist derzeit nur Nutzung von UNIX-Sockets möglich.

### rrdcached

Der rrdcached kennt einige wichtige Optionen, die beim Start übergeben werden.

Option -l definiert den Socket, auf dem der rrdcached Requests annimmt. Der Default-UDP-Port ist 42217, der Default-UNIX-Socket /tmp/rrdcached.sock.

    -l unix:/pfad/zum/rrdcached.sock
    -l /pfad/zum/rrdcached.sock
    -l 127.0.0.1
    -l 127.0.0.1:8888

Option -P gibt die für die nachfolgenden Sockets (mit -l spezifiziert) erlaubten Befehle an, welche auf die RRD-Datenbanken angewendet werden können.

    -P FLUSH,PENDING

Option -s erlaubt es die Gruppenzugehörigkeit der nachfolgenden UNIX-Sockets zu ändern.

    -s nagios

Option -m setzt die Zugriffsrechte für die nachfolgenden UNIX-Sockets auf die (in oktal) angegebenen Werte.

    -m 0660

Option -w bestimmt den Intervall in Sekunden, in dem die Daten auf Disk geschrieben werden sollen.

    -w 1800

Option -z definiert einen Delay, der die über die Option -w definierten Schreibzyklen in einen zufälligen Bereich [0-delay] verteilt, um gleichzeitige Schreibzugriffe zu verhindern. Der Wert der Option -z darf nicht größer gewählt werden als -w.

    -z 1800

Option -p definiert ein PID File

    -p /var/run/rrdcached.pid

Option -j definiert den Pfad zu einem Journal-Verzeichnis. Dort werden alle Aufträge protokolliert und ggf. beim nächsten Start nachgefahren, falls der rrdcached-Daemon abstürzt.

    -j /var/cache/rrdcached

Daraus ergibt sich beispielsweise ein Aufruf von rrdached mit folgenden Parametern

     rrdcached -w 1800 -z 1800 -p /tmp/rrdcached.pid -j /tmp -s nagios -m 0660 -l unix:/tmp/rrdcached.sock

### rrdtool

RRDtool selbst wird die Existenz des Daemons über die Option --daemon=<socket> mitgeteilt.

     rrdtool --daemon=unix:/tmp/rrdcached.sock update ...

Dies muss natürlich mit den Startoptionen des rrdcached übereinstimmen!

## Integration in PNP

Da zwei Bestandteile von PNP auf den rrdcached vorbereitet werden müssen, ergeben sich Änderungen in zwei Config-Files. Außerdem muß der User unter welchem der Webserver läuft zur Gruppe unter der Nagios läuft hinzugefügt werden.

1. Anpassen der `process_perfdata.cfg` für den Datensammler `process_perfdata.pl`

    # EXPERIMENTAL rrdcached Support
    # Use only with rrdtool svn revision 1511+
    #
    RRD_DAEMON_OPTS = unix:/var/run/rrdcached.sock

2. Anpassen der `config_local.php` (bzw. config.php) für das Webinterface

    #
    # EXPERIMENTAL rrdcached Support
    # Use only with rrdtool svn revision 1511+
    #
    # $conf['RRD_DAEMON_OPTS'] = 'unix:/tmp/rrdcached.sock';
    $conf['RRD_DAEMON_OPTS'] = 'unix:/var/run/rrdcached.sock';

Die passenden Optionen sind bereits in den Beispieldateien enthalten.

zurück zur Übersicht | migrieren von RRD-Dateien