Installation - Laravel
Erstelle zuerst ein Projekt im DockRay-Panel. In seinen Einstellungen findest du den Projekt-Token - die öffentliche Kennung, die in die Ingest-URL eingeht - und im Tab API-Schlüssel erzeugst du einen privaten Schlüssel. Der Schlüssel wird nur einmal angezeigt, beim Erzeugen: DockRay speichert lediglich seinen Hash. Wenn noch kein Projekt existiert, beginne mit Erste Schritte.
Voraussetzungen
- Laravel 10 oder neuer,
- PHP 8.2 oder neuer,
- Composer 2.
Paket installieren
composer require dockcodes/dock-ray-laravel
php artisan vendor:publish --tag=ray-config
Der Service Provider wird automatisch erkannt - es ist nichts manuell zu registrieren. Das Veröffentlichen der Konfiguration erzeugt config/ray.php; ohne sie läuft das Paket mit seinen Standardwerten.
Zugangsdaten
RAY_TOKEN=projekt-token
RAY_PRIVATE_KEY=privater-projektschluessel
RAY_TRACES_SAMPLE_RATE=0.2
Ohne RAY_TOKEN und RAY_PRIVATE_KEY bleibt das Paket untätig: keine Anfragen, keine Fehler. Deshalb kannst du es einmal einbinden und musst es nie in eine Bedingung kapseln - die lokale Umgebung bekommt einfach keine Zugangsdaten.
Ausnahmemeldung einbinden
Laravel 11 und 12, in bootstrap/app.php:
use Dock\Ray\Laravel\Ray;
use Illuminate\Foundation\Configuration\Exceptions;
->withExceptions(function (Exceptions $exceptions) {
$exceptions->reportable(fn (Throwable $e) => Ray::report($e));
})
Laravel 10, in app/Exceptions/Handler.php:
public function register(): void
{
$this->reportable(fn (Throwable $e) => Ray::report($e));
}
Ray::report() wirft nie und wirft nie weiter: eine Monitoring-Störung darf die Fehlerbehandlung nicht zerstören, aus der sie aufgerufen wurde. Es gibt außerdem void zurück und unterbindet damit nicht das eigene Logging des Frameworks.
Antwortzeiten messen
Für die Messung wird die Middleware den Gruppen hinzugefügt, die gemessen werden sollen - meist web und api:
->withMiddleware(function (Illuminate\Foundation\Configuration\Middleware $middleware) {
$middleware->appendToGroup('web', \Dock\Ray\Laravel\Http\Middleware\TrackTransaction::class);
})
Solange ray.traces_sample_rate bei 0 steht, wird nichts gemessen.
Der erste Test
Am einfachsten aus Tinker - der Aufruf nimmt denselben Weg wie das Melden aus der Anwendung:
php artisan tinker --execute="\Dock\Ray\Laravel\Ray::message('DockRay-Kontrollmeldung');"