- Playwright MCP Server: Wie man der KI das Debuggen und Testen beibringt - 11. September 2025
- GitLab CI/CD zu langsam? So beschleunigen sie ihre Pipeline mit Caching! - 21. Juli 2025
- Effiziente Deployments mit GitLab Runner und CI/CD - 16. Januar 2025
Laravel unterstützt viele Datenbank-Provider out-of-the-box, jedoch ist InfluxDB nicht direkt integriert. In diesem Beitrag zeige ich, wie Sie InfluxDB – sowohl lokal als auch in der Cloud – mit Laravel verbinden, Metriken schreiben und lesen, typische Fehler vermeiden und die Performance optimieren.
Paket installieren
Wir nutzen das Paket tray-labs/laravel-influxdb, getestet in der Version v1.2.0.
bashcomposer require tray-labs/laravel-influxdb:^1.2
Stellen Sie vor der Installation sicher, dass die Laravel- und PHP-Version mit dem Paket kompatibel sind. Für InfluxDB v2 (Cloud) benötigen Sie zusätzlich einen gültigen Token.
Umgebungsvariablen (.env)
Für InfluxDB 1.x (lokal oder On-Premise)
INFLUXDB_HOST=localhost
INFLUXDB_PORT=8086
INFLUXDB_USER=some_user
INFLUXDB_PASSWORD=some_password
INFLUXDB_SSL=false
INFLUXDB_VERIFYSSL=false
INFLUXDB_TIMEOUT=0
INFLUXDB_DBNAME=some_database
INFLUXDB_UDP_ENABLED=false
INFLUXDB_UDP_PORT=4444
Für InfluxDB 2.x (Cloud)
INFLUXDB_URL=https://eu-central-1-1.aws.cloud2.influxdata.com
INFLUXDB_TOKEN=your_token
INFLUXDB_ORG=your_org
INFLUXDB_BUCKET=your_bucket
INFLUXDB_SSL=true
INFLUXDB_VERIFYSSL=true
Hinweis: Das tray-labs-Paket unterstützt standardmäßig v1-Variablen. Für v2 müssen Sie ggf. die Verbindung über eine angepasste config/influxdb.php herstellen oder auf einen v2-kompatiblen Client setzen.
Provider konfigurieren
Nach der Installation veröffentlichen wir die Konfiguration:
php artisan vendor:publish --provider="TrayLabs\InfluxDB\InfluxDBServiceProvider"
Passen Sie die Datei config/influxdb.php entsprechend Ihrer .env-Werte an.
Beispiel: Schreiben von Messwerten
Im Controller oder Service können wir Messwerte direkt an InfluxDB senden:
use Illuminate\Http\Request;
public function storeMetrics(Request $request)
{
$influx = app('influxdb'); // alternativ via Dependency Injection
$point = [
'measurement' => 'cpu',
'tags' => ['host' => 'server1'],
'fields' => ['usage' => 0.56],
'time' => now()->toIso8601String()
];
$influx->write($point, env('INFLUXDB_DBNAME', 'some_database'));
return response()->json(['status' => 'ok']);
}
Beispiel: Abfragen von Messwerten
$results = app('influxdb')->query(
"SELECT mean(usage) FROM cpu WHERE time > now() - 1h GROUP BY time(5m)"
);
Bei v2-Clouddatenmodellen müssen Sie die bucket– und org-Parameter des Clients mitgeben.
Praxisfall: 100k Metriken pro Tag
In einem internen Projekt nutzen wir InfluxDB zur Speicherung von ca. 100.000 Metriken/Tag.
Tipps aus der Praxis:
- Batch Writes verwenden, um die Latenz zu senken
- Retention Policies konfigurieren, um alte Daten automatisch zu löschen
- Indexierung über Tags optimieren
- Zeitpräzision auf ms setzen, um unnötige Genauigkeit zu vermeiden
Troubleshooting
Verbindungsfehler: Prüfen Sie Host, Port und Firewall-Regeln.
Auth-Fehler: Für v2-Cloud muss der Token anstelle von User/Password genutzt werden.
SSL-Fehler: INFLUXDB_VERIFYSSL=false zum Testen verwenden (Produktiv: immer true).
Zeitformat-Fehler: Nutzen Sie ISO8601 für bessere Kompatibilität.
UDP-Verbindungsprobleme: UDP in der .env aktivieren und Port freigeben.
Typische Logs für Auth-Fehler in v2:
401 Unauthorized - Invalid token
Weiterführende Links
- Offizielle Laravel-Dokumentation
- tray-labs/laravel-influxdb GitHub
- InfluxDB v1 Dokumentation
- InfluxDB v2 Dokumentation
Für persönliche Beratung oder Projekte im Bereich Laravel und Datenbankintegration besuchen Sie unsere Webseite oder nehmen Sie direkt Kontakt auf.