Laravel Telescope einrichten – Debugging & Observability
Laravel Telescope ist eines der mächtigsten Debugging- und Monitoring-Tools im Laravel-Ökosystem. Es bietet Entwicklern tiefe Einblicke in Requests, Queries, Jobs, Exceptions und vieles mehr – alles über eine elegante Web-UI. In diesem Guide zeige ich dir, wie du Laravel Telescope einrichten kannst, welche Konfigurationen wichtig sind und worauf du in Produktionsumgebungen achten musst.
Was ist Laravel Telescope?
Laravel Telescope ist ein offizielles First-Party-Package von Laravel, das als "Debug Assistant" fungiert. Es zeichnet alle wichtigen Vorgänge deiner Anwendung auf und stellt sie übersichtlich dar:
- HTTP-Requests und Responses
- Datenbankabfragen mit Execution-Time
- Jobs, Queues und Mailversand
- Cache-Operationen
- Redis-Commands
- Exceptions und Logs
- Scheduled Tasks
Im Gegensatz zu reinen Log-Files bietet Telescope eine durchsuchbare, filterbare Oberfläche, die das Debugging erheblich beschleunigt.
Laravel Telescope einrichten: Schritt-für-Schritt
1. Installation via Composer
Die Installation von Telescope erfolgt über Composer. Wichtig: Telescope sollte nur in Entwicklungs- und Staging-Umgebungen aktiv sein, nicht in Production.
composer require laravel/telescope --dev
Der --dev-Flag stellt sicher, dass Telescope nur in deiner lokalen composer.json unter require-dev landet und nicht auf Production-Servern installiert wird.
2. Telescope installieren
Nach dem Download führst du den Installationsbefehl aus:
php artisan telescope:install
Dieser Befehl erledigt mehrere Dinge:
- Publiziert die Telescope-Config nach
config/telescope.php - Erstellt Migrations für die Telescope-Datenbanktabellen
- Registriert den TelescopeServiceProvider
Anschließend migrierst du die Datenbank:
php artisan migrate
Telescope erstellt mehrere Tabellen (z.B. telescope_entries, telescope_monitoring), in denen alle aufgezeichneten Daten gespeichert werden.
3. Telescope aufrufen
Nach erfolgreicher Installation kannst du Telescope über folgende URL aufrufen:
http://deine-app.test/telescope
Du siehst nun das Dashboard mit verschiedenen Tabs für Requests, Commands, Queries, Jobs usw.
Wichtige Konfigurationen
Beim Laravel Telescope einrichten solltest du einige Konfigurationsoptionen kennen. Die zentrale Config-Datei findest du unter config/telescope.php.
Umgebungsbasierte Aktivierung
Standardmäßig ist Telescope in allen Umgebungen aktiv, was ein Sicherheitsrisiko darstellt. In der TelescopeServiceProvider.php solltest du die Registrierung einschränken:
// app/Providers/TelescopeServiceProvider.php
public function register(): void
{
if ($this->app->environment('local')) {
$this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
$this->app->register(TelescopeServiceProvider::class);
}
}
Dies stellt sicher, dass Telescope nur in deiner lokalen Entwicklungsumgebung geladen wird.
Watchers konfigurieren
Telescope nutzt sogenannte "Watchers", um verschiedene Aspekte deiner Anwendung zu überwachen. In config/telescope.php kannst du diese einzeln aktivieren oder deaktivieren:
'watchers' => [
Watchers\QueryWatcher::class => [
'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
'slow' => 50, // Queries über 50ms markieren
],
Watchers\RequestWatcher::class => [
'enabled' => true,
'size_limit' => 64, // KB
],
Watchers\JobWatcher::class => true,
Watchers\MailWatcher::class => true,
// ...weitere Watchers
],
Der slow-Parameter beim QueryWatcher ist besonders nützlich: Du kannst langsame Queries automatisch hervorheben lassen.
Storage-Strategie anpassen
Telescope kann schnell viele Einträge sammeln. Mit der storage-Option bestimmst du, wie viele Einträge gespeichert werden:
'storage' => [
'database' => [
'connection' => env('DB_CONNECTION', 'mysql'),
'chunk' => 1000,
],
],
Du solltest regelmäßig alte Einträge löschen. Dafür kannst du einen Scheduler-Task einrichten:
// app/Console/Kernel.php
protected function schedule(Schedule $schedule): void
{
$schedule->command('telescope:prune --hours=48')->daily();
}
Dies löscht alle Telescope-Einträge, die älter als 48 Stunden sind.
Telescope in Staging/Production nutzen
Manchmal möchtest du Laravel Telescope einrichten auch auf Staging-Servern, um Produktionsprobleme zu debuggen. Dabei musst du besonders auf Sicherheit achten.
Zugriff über Gates beschränken
In app/Providers/TelescopeServiceProvider.php kannst du den Zugriff beschränken:
protected function gate(): void
{
Gate::define('viewTelescope', function (User $user) {
return in_array($user->email, [
'admin@example.com',
'dev@example.com',
]);
});
}
Nur Benutzer mit den angegebenen E-Mail-Adressen können Telescope dann aufrufen.
Telescope hinter HTTP-Auth schützen
Alternativ kannst du Telescope über Basic Authentication schützen. Füge in routes/web.php hinzu:
Route::middleware(['auth.basic'])->group(function () {
Telescope::auth(function ($request) {
return true;
});
});
Oder nutze Middleware direkt in der Route-Registrierung.
Performance-Überlegungen
In Production solltest du bestimmte Watchers deaktivieren, die Performance-Impact haben:
// config/telescope.php für Production
'watchers' => [
Watchers\QueryWatcher::class => [
'enabled' => false, // Queries nicht aufzeichnen
],
Watchers\RequestWatcher::class => [
'enabled' => true, // Nur kritische Watchers
],
],
Praktische Anwendungsfälle
1. N+1 Query-Probleme finden
Telescope zeigt dir genau, welche Queries ein Request ausgelöst hat. Über den Queries-Tab kannst du sehen, ob du versehentlich N+1-Probleme hast:
// Schlecht: N+1 Problem
$posts = Post::all();
foreach ($posts as $post) {
echo $post->author->name; // Separate Query für jeden Post
}
// Gut: Eager Loading
$posts = Post::with('author')->get();
Im Telescope-Dashboard siehst du sofort die Anzahl der Queries und kannst optimieren.
2. Job-Failures debuggen
Wenn Queue-Jobs fehlschlagen, zeigt dir Telescope den vollständigen Stack-Trace im Jobs-Tab. Du siehst:
- Welche Payload übergeben wurde
- Welcher Fehler aufgetreten ist
- Wie lange der Job lief
3. Mail-Versand testen
Im Mail-Tab kannst du alle verschickten E-Mails einsehen – inklusive HTML-Preview. Perfekt für lokales Testing ohne echten Mail-Versand.
Fazit: Laravel Telescope einrichten für besseres Debugging
Laravel Telescope einrichten ist in wenigen Minuten erledigt und bietet enormen Mehrwert beim Entwickeln und Debuggen von Laravel-Anwendungen. Die wichtigsten Takeaways:
- Installation nur als
--dev-Dependency - Zugriff auf Production-Umgebungen über Gates absichern
- Regelmäßig alte Einträge mit
telescope:prunelöschen - Watchers selektiv aktivieren, um Performance zu optimieren
Mit Telescope bekommst du X-Ray-Vision für deine Laravel-App und kannst Probleme identifizieren, bevor sie zu echten Issues werden.
Du arbeitest an einem Laravel-Projekt und brauchst Unterstützung beim Debugging oder Performance-Optimierung? Ich helfe dir gerne – von der Telescope-Konfiguration bis zur Anwendungsarchitektur.