Zum Hauptinhalt springen
Active Job ist ein Framework zum Deklarieren von Jobs und deren Ausführung auf einer Vielzahl von Queuing-Backends, das mit Rails ausgeliefert wird. Die Active-Job-Integration verfolgt die Ausführung und Events des ausgeführten Jobs. Wenn AppSignal Active-Job-Metriken erkennt, erstellt es ein Magic Dashboard, mit dem Sie die Kernmetriken visuell überwachen können.

Unterstützte Adapter

Die Active-Job-Integration unterstützt alle Active-Job-Adapter. Sie kann auch Adapter unterstützen, die nicht auf dieser Seite aufgeführt sind und über ein separates Gem erreichbar sind. Bitte beachten Sie jedoch, dass diese Adapter nicht getestet wurden.

Integration mit von AppSignal unterstützten Bibliotheken

Die folgenden von AppSignal unterstützten Hintergrundjob-Bibliotheken sind automatisch in Active Job integriert, sodass AppSignal Ihnen tiefere Performance-Einblicke geben kann:

Fehler bei Job-Verwerfen melden

Setzen Sie die activejob_report_errors-Konfigurationsoption auf discard, um Fehler nur dann zu melden, wenn ein Job verworfen wird. Wenn ein Job verworfen wird, sind alle Job-Wiederholungen aufgebraucht, und der Job wird nicht mehr wiederholt. Lesen Sie die Active-Job-Dokumentation, um mehr über Active-Job-Exception-Handling und fehlgeschlagene Job-Wiederholungen zu erfahren.
class ExampleJob < ActiveJob::Base
  # Configure the retry attempts using the `retry_on` method
  retry_on StandardError, :attempts => 2

  # ...
end
Einige Active-Job-Adapter (wie Sidekiq, Delayed::Job usw.) haben ihr eigenes Retry-System. Nachdem Active Job seine Wiederholungen aufgebraucht hat, können diese Bibliotheken ihr eigenes Job-Retry-System auslösen.Dies wird Jobs auch dann wiederholen, wenn Active Job die Active-Job-Wiederholungen aufgebraucht und den Job verworfen hat. Um zu vermeiden, dass Jobs nach Beendigung der Active-Job-Wiederholungen weiter wiederholt werden und Fehler für diese Wiederholungen gemeldet werden, stellen Sie sicher, dass das Retry-System des Adapters deaktiviert ist.Wenn Sie sich auf Sidekiqs Retry-System verlassen, konfigurieren Sie es auch so, dass es Fehler nur bei Verwerfen meldet, damit Fehler nicht mehrfach gemeldet werden.

Metadaten

AppSignal sammelt die folgenden Metadaten für Active-Job-Jobs:
MetadatenBeschreibung
Active Job IDDie Active Job ID wird vom Active-Job-Adapter gemeldet.
ArgumenteBeim Aufruf von perform_later an den Job übergebene Argumente.
EventsAlle *.active_job-Events.
Job-Namez. B. MyBackgroundJob#perform, wird verwendet, um den Job für AppSignal-Incidents zu gruppieren.
PrioritätDie Priorität des Samples, falls ein Adapter verwendet wird, der Job-Prioritäten unterstützt.
Provider-Job-IDDie vom Active-Job-Adapter gemeldete Job-ID.
QueueDer Queue-Name des Samples, falls ein Adapter verwendet wird, der mehrere Queues unterstützt.
Queue-Zeit*Verstrichene Zeit zwischen Einreihen und Ausführen eines Jobs.
*Ab Rails-Version 6 werden Queue-Zeiten für den Namespace gemeldet, aus dem sie gemeldet werden, und können in den Performance-Graphen von AppSignal angezeigt werden. AppSignal verwendet Active-Job-Metadaten, um Ihnen tiefere kontextbezogene Einblicke in die Job-Performance zu geben. Beim Inspizieren von Active-Job-Samples in AppSignal:
  • Der Job-Name wird verwendet, um den Job für AppSignal-Incidents zu gruppieren:
Example performance issues overview
  • Metadaten (außer Job-Name und Events) sind als filterbare Tags auf Incident-Samples verfügbar:
Example Active Job tags
  • *.active_job-Events werden in der Event-Timeline für Performance-Samples angezeigt:
Example Event timeline

Magic Dashboard

Wenn AppSignal Active-Job-Metriken empfängt, erstellt es ein Active-Job-Magic-Dashboard, das im Dashboard-Bereich der AppSignal-App verfügbar ist. Das Active-Job-Magic-Dashboard enthält die folgenden Graphen:
GraphMetrikenTags
Dauer pro Job-Klassetransaction_duration
  • namespace
  • action
  • Job-Status pro Queueactive_job_queue_job_count
  • status
  • queue
  • Job-Status pro Queue mit Prioritätactive_job_queue_job_count
  • status
  • queue
  • priority
  • Durchsatz pro Job-Klassetransaction_duration
  • namespace
  • action
  • Tags geben Ihnen eine kontextbezogene Aufschlüsselung der Active-Job-Performance-Informationen, derzeit meldet AppSignal die folgenden Tags für Active-Job-Jobs:
    NameBeschreibung
    actionDer Name der Action, aus der die Metrik gemeldet wurde (z. B.: YourWorker#perform).
    queueBenannte Queue, in der Jobs verarbeitet werden, z. B. default oder mailer.
    statusStatus jedes Jobs, entweder processed oder failed.
    Jobs mit failed werden ebenfalls als processed gezählt.
    priorityDie jedem Job zugewiesene Priorität, z. B. 0 oder 1.
    Jedes Tag wird durch eine farbige Linie im Graph dargestellt: Example Actie Job dashboard

    Graph “Dauer pro Job-Klasse”

    Der Graph “Dauer pro Job-Klasse” zeigt die Zeit, die zur Ausführung von Jobs benötigt wurde, gruppiert nach der Klasse, die den Job definiert. Mit diesem Graph können Sie die Performance von Jobs pro Klasse überwachen und erhalten so eine Übersicht über die Job-Performance, mit der Sie Spitzen in der Ausführungszeit schnell identifizieren und untersuchen können.

    Graph “Job-Status pro Queue”

    Der Graph “Job-Status pro Queue mit Priorität” zeigt die Anzahl der ausgeführten Jobs, gruppiert nach ihrem resultierenden Status und nach der Queue, in der sie eingereiht wurden. Mit diesem Graph können Sie Fehleranzahlen und Performance von Jobs basierend auf der Queue überwachen, Bottlenecks identifizieren und Ihre Hintergrundjobs auf Skalierbarkeit optimieren.

    Graph “Job-Status pro Queue mit Priorität”

    Nicht alle Active-Job-Adapter unterstützen Job-Prioritäten. Wenn Jobs keine Prioritätswerte haben, ist der Graph leer.
    Der Graph “Job-Status pro Queue mit Priorität” zeigt die Anzahl der ausgeführten Jobs, gruppiert nach ihrem resultierenden Status, nach der Queue, in der sie eingereiht wurden, und nach der ihnen zugewiesenen Priorität. Mit diesem Graph können Sie Fehleranzahlen und Performance von Jobs basierend auf Queue und Priorität überwachen, Bottlenecks identifizieren und Ihre Hintergrundjobs auf Skalierbarkeit optimieren.

    Graph “Durchsatz pro Job-Klasse”

    Der Graph “Durchsatz pro Job-Klasse” zeigt die Anzahl der ausgeführten Jobs, gruppiert nach der Klasse, die den Job definiert. Mit diesem Graph können Sie überwachen, wie viele Jobs ausgeführt werden, gruppiert nach der Klasse, die den Job definiert.