Start · Sprachen · PHP · Referenz · rrd_info

rrd_info

Funktion

Liest Metadaten und Konfigurationsinformationen aus einer bestehenden RRD-Datei und gibt sie als assoziatives Array zurück.

Kategorie: misc

Signatur

rrd_info(string $file): array|false

Beschreibung

rrd_info() ist Teil der PECL-Erweiterung RRDtool für PHP und ermöglicht es, detaillierte Informationen über den Aufbau und Zustand einer RRD-Datei (Round Robin Database) zu ermitteln, ohne die darin gespeicherten Messdaten direkt auszulesen.

Die Funktion gibt ein assoziatives Array zurück, das unter anderem folgende Metadaten enthält: den Dateinamen, die RRDtool-Version, die Startzeit der Datenbank, den letzten Aktualisierungszeitpunkt (last_update), das Schrittintervall (step) sowie die Definitionen aller Data Sources (DS) und Round Robin Archives (RRA) mit ihren jeweiligen Parametern.

Typische Anwendungsfälle sind das Verifizieren einer neu angelegten RRD-Datei, das Auslesen von Konfigurationsparametern für Monitoring-Dashboards oder das dynamische Ermitteln vorhandener DS-Namen vor einem rrd_update()-Aufruf.

Die Funktion benötigt eine installierte und aktivierte PECL-Erweiterung rrd (pecl install rrd). Unter Linux ist außerdem die Systembibliothek librrd erforderlich.

Parameter

Name Typ Default Beschreibung
$file Pflicht string Pfad zur RRD-Datei, deren Informationen ausgelesen werden sollen. Der Pfad kann absolut oder relativ zum aktuellen Arbeitsverzeichnis des PHP-Prozesses angegeben werden.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit Metadaten der RRD-Datei zurück (z. B. filename, last_update, step, DS- und RRA-Definitionen). Im Fehlerfall (z. B. Datei nicht gefunden oder ungültiges Format) wird false zurückgegeben.

Beispiele

Grundlegende Informationen einer RRD-Datei auslesen

<?php
// RRD-Datei muss bereits existieren (z. B. mit rrd_create() angelegt)
$file = '/var/rrd/traffic.rrd';

$info = rrd_info($file);

if ($info === false) {
    echo 'Fehler: RRD-Datei konnte nicht gelesen werden.' . PHP_EOL;
} else {
    echo 'Dateiname:       ' . $info['filename']  . PHP_EOL;
    echo 'Letztes Update:  ' . date('Y-m-d H:i:s', $info['last_update']) . PHP_EOL;
    echo 'Schrittweite:    ' . $info['step'] . ' Sekunden' . PHP_EOL;
}
Dateiname: /var/rrd/traffic.rrd Letztes Update: 2024-06-01 12:00:00 Schrittweite: 300 Sekunden

Alle Data Sources einer RRD-Datei dynamisch ermitteln

<?php
$file = '/var/rrd/traffic.rrd';
$info = rrd_info($file);

if ($info !== false) {
    $dsSources = [];
    // DS-Schlüssel haben das Format: ds[NAME][type] etc.
    foreach ($info as $key => $value) {
        if (preg_match('/^ds\[([^\]]+)\]\[type\]$/', $key, $matches)) {
            $dsSources[] = $matches[1];
        }
    }

    echo 'Gefundene Data Sources:' . PHP_EOL;
    foreach ($dsSources as $ds) {
        echo ' - ' . $ds . PHP_EOL;
    }
} else {
    echo 'Fehler beim Lesen der RRD-Datei.' . PHP_EOL;
}
Gefundene Data Sources: - inOctets - outOctets

// Wichtig · Fallstricke

PECL-Erweiterung erforderlich: rrd_info() gehört zur PECL-Erweiterung rrd und ist in einer Standard-PHP-Installation nicht verfügbar. Die Erweiterung muss separat installiert und in der php.ini geladen werden (extension=rrd.so).

Fehlerbehandlung: Bei einem Rückgabewert von false kann rrd_error() aufgerufen werden, um die genaue Fehlermeldung der RRDtool-Bibliothek abzurufen.

Schlüsselformat: Die Schlüssel des zurückgegebenen Arrays folgen der RRDtool-Konvention und enthalten eckige Klammern (z. B. ds[traffic_in][type]), was bei der Verarbeitung mit regulären Ausdrücken oder Array-Funktionen beachtet werden muss.