Signatur
Beschreibung
rrd_lastupdate() liest eine RRD-Datei (Round Robin Database) und gibt Informationen über den zuletzt gespeicherten Datensatz zurück. Zurückgegeben werden sowohl der Zeitstempel der letzten Aktualisierung als auch die zuletzt gespeicherten Werte aller in der RRD-Datei definierten Datenquellen (Data Sources, DS).
Diese Funktion ist besonders nützlich bei der Überwachung von Systemen und Netzwerken (Monitoring), um schnell den aktuellen Status einer RRD-Datei zu prüfen – zum Beispiel, ob Daten regelmäßig geschrieben werden oder ob ein Datenausfall vorliegt. Sie gehört zur PECL-Erweiterung rrd, die eine PHP-Schnittstelle zu RRDtool bereitstellt.
Der Rückgabewert enthält ein assoziatives Array mit dem Schlüssel last_update (Unix-Zeitstempel) sowie dem Schlüssel ds, der wiederum ein assoziatives Array mit den Namen der Datenquellen und deren zuletzt gespeicherten Werten enthält.
Im Fehlerfall – etwa wenn die angegebene Datei nicht existiert oder keine gültige RRD-Datei ist – gibt die Funktion false zurück. Mit rrd_error() lässt sich dann die genaue Fehlermeldung abrufen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $file Pflicht | string | Pfad zur RRD-Datei (.rrd), deren letzte Aktualisierungsinformationen abgerufen werden sollen. |
Rückgabewert
last_update (Unix-Zeitstempel der letzten Aktualisierung) sowie den Schlüssel ds, ein assoziatives Array mit den Datenquellennamen als Schlüssel und deren zuletzt gespeicherten Werten. Bei einem Fehler wird false zurückgegeben; die Fehlermeldung kann mit rrd_error() abgerufen werden.Beispiele
Letzten Aktualisierungsstatus einer RRD-Datei abrufen
<?php
$file = '/var/rrd/traffic.rrd';
$info = rrd_lastupdate($file);
if ($info === false) {
echo 'Fehler: ' . rrd_error() . PHP_EOL;
} else {
$lastUpdate = date('Y-m-d H:i:s', $info['last_update']);
echo 'Letzte Aktualisierung: ' . $lastUpdate . PHP_EOL;
echo 'Datenquellen:' . PHP_EOL;
foreach ($info['ds'] as $dsName => $dsValue) {
echo ' ' . $dsName . ': ' . $dsValue . PHP_EOL;
}
}
Prüfen, ob RRD-Daten aktuell sind (Monitoring-Check)
<?php
$file = '/var/rrd/cpu.rrd';
$maxAge = 300; // Maximales Alter in Sekunden (5 Minuten)
$info = rrd_lastupdate($file);
if ($info === false) {
echo 'UNKNOWN: Konnte RRD-Datei nicht lesen – ' . rrd_error() . PHP_EOL;
exit(3);
}
$age = time() - $info['last_update'];
if ($age > $maxAge) {
echo 'WARNING: Letzter Datenpunkt ist ' . $age . ' Sekunden alt!' . PHP_EOL;
exit(1);
} else {
echo 'OK: Daten sind aktuell (' . $age . ' Sekunden alt).' . PHP_EOL;
exit(0);
}
// Wichtig · Fallstricke
Voraussetzung: Die PECL-Erweiterung rrd muss installiert und aktiviert sein (pecl install rrd). Die Erweiterung setzt zudem eine installierte RRDtool-Bibliothek auf dem System voraus.
Die zurückgegebenen Datenwerte im Array ds können NaN (Not a Number) sein, wenn für eine Datenquelle zum Zeitpunkt der letzten Aktualisierung kein gültiger Wert vorlag. Prüfe dies bei der Weiterverarbeitung mit is_nan().
Die Funktion darf nicht mit dem gleichnamigen OOP-Interface RRDUpdater verwechselt werden. Für objektorientierte Nutzung steht die Klasse RRDGraph und verwandte Klassen zur Verfügung.