Start · Sprachen · PHP · Referenz · rrd_lastupdate

rrd_lastupdate

Funktion

Liefert Informationen zur zuletzt aktualisierten Datenreihe einer RRD-Datei, einschließlich Zeitstempel und Datenwerte.

Kategorie: misc

Signatur

rrd_lastupdate(string $file): array|false

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

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array zurück. Dieses enthält den Schlüssel 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;
    }
}
Letzte Aktualisierung: 2024-05-01 14:32:00 Datenquellen: rx: 1234567 tx: 987654

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);
}
OK: Daten sind aktuell (42 Sekunden alt).

// 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.