Was ist Horizon?
Laravel Horizon ist ein Überwachungs-Dashboard speziell für Redis-Queues in Laravel. Es visualisiert Job-Durchsatz, Laufzeiten und Fehler in Echtzeit und ermöglicht es, Worker-Einstellungen im Code zu verwalten.Horizon erweitert die Basisfunktionalität der Queue. Machen Sie sich zunächst mit den Grundlagen zu Queues und Jobs vertraut. Als Backend ist zwingend Redis erforderlich.
Installation
Installation via Composer:config/horizon.php und app/Providers/HorizonServiceProvider.php erzeugt.
Konfiguration
Aufbau der Datei config/horizon.php
config/horizon.php bündelt sämtliche Worker-Einstellungen. Kern ist die Option environments.
Horizon nutzt intern eine Redis-Verbindung namens
horizon. Vergeben Sie diesen Namen in config/database.php nicht an eine andere Verbindung.Supervisor
Jede Umgebung kann einen oder mehrere „Supervisor” enthalten. Ein Supervisor ist die Verwaltungseinheit für eine Worker-Gruppe; Sie können pro Umgebung mehrere Supervisor mit unterschiedlichen Queues, Balance-Strategien und Prozessanzahlen betreiben.Standardwerte
Indefaults legen Sie Standardwerte fest, die für alle Supervisor gelten.
Wartungsmodus
Ist die Anwendung im Wartungsmodus, verarbeitet Horizon standardmäßig keine Jobs. Um die Verarbeitung dennoch zu erzwingen, verwenden Sie die Optionforce.
Maximale Anzahl an Versuchen
tries auf 0 erlauben Sie unbegrenzte Wiederholungen.
Job-Timeout
Backoff (Wartezeit vor Wiederholung)
Wartezeit in Sekunden nach einer Ausnahme bis zum nächsten Versuch.Balance-Strategien
Horizon kennt drei Strategien zur Worker-Balancierung.auto (Standard)
auto (Standard)
Passt die Worker-Anzahl automatisch an die Queue-Auslastung an. Über
minProcesses und maxProcesses bestimmen Sie den Rahmen.time– Skalierung nach geschätzter Zeit bis zur Leerung der Queuesize– Skalierung nach Anzahl der Jobs in der Queue
Bei der Strategie
auto bestimmt die Reihenfolge der Queues nicht deren Priorität. Für strikte Prioritäten verwenden Sie mehrere Supervisor.simple
simple
Legt eine feste Anzahl Worker fest und verteilt sie gleichmäßig auf die angegebenen Queues.Im Beispiel erhalten
default und notifications jeweils fünf Prozesse.false (keine Balancierung)
false (keine Balancierung)
Priorisiert die Queues strikt in der angegebenen Reihenfolge. Das Verhalten entspricht dem Standard-Queue-System, skaliert die Worker-Anzahl aber dennoch bedarfsabhängig.Jobs der Queue
default werden immer vor denen der Queue notifications verarbeitet.Autorisierung des Dashboards
Das Horizon-Dashboard ist unter der Route/horizon erreichbar. Lokal ist es standardmäßig für alle zugänglich; in der Produktion schränken Sie den Zugriff über ein Gate ein.
Passen Sie die Methode gate() in app/Providers/HorizonServiceProvider.php an.
Horizon starten
Grundlegende Befehle
Lokale Entwicklung: automatisches Neustarten
Um Horizon bei Änderungen an Quellcode automatisch neu zu starten, verwenden Siehorizon:listen.
Dauerbetrieb mit Supervisor
In der Produktion betreiben Sie Horizon mit Supervisor dauerhaft.Supervisor installieren
Konfigurationsdatei anlegen
Legen Sie/etc/supervisor/conf.d/horizon.conf an.
Supervisor starten
Beim Deployment
Starten Sie Horizon nach jedem Deployment neu, damit Änderungen greifen.autostart=true und autorestart=true konfiguriert ist, startet Horizon anschließend automatisch neu.
Jobs verwalten
Tags
Horizon erkennt Eloquent-Modelle, die einem Job übergeben werden, automatisch und versieht Jobs mit passenden Tags.tags().
tags() die Event-Instanz übergeben.
Ausblenden (Silence)
Jobs, die nicht in der Liste „abgeschlossener Jobs” im Dashboard erscheinen sollen, können Sie inconfig/horizon.php ausblenden.
Silenced.
Metriken und Monitoring
Das Metrik-Dashboard von Horizon zeigt den Durchsatz und die Laufzeit von Jobs und Queues. Damit die Daten fortlaufend aktualisiert werden, richten Sie einen Snapshot-Zeitplan ein.Benachrichtigungen zu Job-Fehlern
Bei langen Wartezeiten in der Queue können Sie sich benachrichtigen lassen. Konfigurieren Sie dies in derboot()-Methode von app/Providers/HorizonServiceProvider.php.
Schwellenwerte für Wartezeiten
Inconfig/horizon.php legen Sie mit der Option waits die Wartezeit fest, ab der Benachrichtigungen gesendet werden.
0 deaktiviert die Benachrichtigung für die betreffende Queue.
Umgang mit fehlgeschlagenen Jobs
Fehlgeschlagene Jobs können Sie über ID oder UUID löschen.Upgrades
Vor einem Major-Update von Horizon sollten Sie stets die Upgrade-Anleitung lesen.Verwandte Seiten
Queues und Jobs
Grundlagen der Laravel-Queue: Job-Erstellung, Dispatchen, Batches und Fehlerbehandlung.
Redis
Konfiguration und Nutzung von Redis als Backend für Horizon.