Sidekiq-Monitoring für Ruby-on-Rails-Apps
Das AppSignal-Ruby-Gem fügt automatisch einen Listener in den Sidekiq-Server-Middleware-Stack ein, wenn das ModulSidekiq vorhanden ist und Sie Rails verwenden. Weitere Maßnahmen sind nicht erforderlich.
Die Sidekiq-Integration ist mit Active Job kompatibel.
Sidekiq-Monitoring für Ruby-Apps
Das Hinzufügen dieser Konfiguration sollte nur erforderlich sein, wenn Sidekiq AppSignal nicht automatisch über das Framework der App, z. B. Rails, lädt. Fügen Sie diesen Code-Schnipsel mit der richtigen Umgebung und dem richtigen Namen zu Ihrer Sidekiq-Konfiguration hinzu:Performance-Monitoring
Sobald AppSignal beginnt, Sidekiq-Metriken zu melden, erhalten Sie Performance-Einblicke über:Trace-Timeline
perform_job.sidekiq-Spans erscheinen in der Trace-Timeline auf der Trace-Seite:

Fehlererfassung
Erfassen Sie Ausnahmen, die beim Ausführen von Sidekiq-Jobs auftreten. Wenn Sidekiq vor oder nach der Verarbeitung eines Jobs auf ein Problem stößt, etwa beim Parsen von JSON aus Redis, wird ein Fehler ausgelöst. Dieser Fehler wird unter der Action SidekiqInternal im Namespace Background gemeldet, da der Job-Kontext beim Auftreten des Fehlers unbekannt ist.
Fehler beim Verwerfen eines Jobs melden
Setzen Sie die Konfigurationsoptionsidekiq_report_errors 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 erneut versucht. Lesen Sie die Sidekiq-Dokumentation, um mehr über die Ausnahmebehandlung von Sidekiq und fehlgeschlagene Job-Wiederholungen zu erfahren.
Incident-Gruppierung
Job-Namen werden automatisch basierend auf dem Klassennamen des Sidekiq-Workers erkannt und mit dem Methodennamenperform ergänzt, was zu etwas wie MyWorker#perform führt.

Trace-Aufschlüsselung
Die Trace-Aufschlüsselung auf einer Trace-Seite zeigt, wie sich die Zeit eines Jobs auf Event-Gruppen wiesidekiq und active_record verteilt hat, sodass Sie Performance-Probleme erkennen können, ohne die gesamte Timeline durchzusehen.

Enqueue-Instrumentation
Das Einreihen eines Sidekiq-Jobs zeichnet einenqueue.sidekiq-event auf, benannt nach dem eingereihten Job.
AppSignal zeichnet enqueue-events in der event-timeline der aktiven transaction auf, zum Beispiel wenn Sie einen Job aus einem Web-Request oder aus einem anderen Job heraus einreihen. Sie werden nur aufgezeichnet, wenn eine transaction aktiv ist, sodass das Einreihen eines Jobs außerhalb einer transaction nichts aufzeichnet.
Um das Aufzeichnen von enqueue-events für alle background-job-integrations zu stoppen, setzen Sie die Konfigurationsoption enable_job_enqueue_instrumentation auf false. Dies beeinflusst die instrumentation der Jobs selbst nicht.
Intelligence dashboard
Wenn AppSignal Sidekiq-Metriken empfängt, wird ein Sidekiq Intelligence dashboard erstellt, das im Dashboard-Bereich der AppSignal-App verfügbar ist. Das Sidekiq Intelligence dashboard enthält die folgenden Graphen:Die Graphen Dauer pro Worker und Throughput pro Worker verwenden
trace_duration bei Accounts, die auf Trace-Metriken umgestellt wurden. Bei Accounts, die noch nicht umgestellt sind, basieren diese Graphen stattdessen auf transaction_duration.
Jedes Tag wird durch eine farbige Linie im Graphen dargestellt:

Connection-Count-Graph
Der Connection-Count-Graph zeigt die Anzahl der Clients, die mit dem von Sidekiq verwendeten Redis-Server verbunden sind, pro Redis-Host. Sie können den Connection-Count-Graphen verwenden, um Verbindungstrends und Engpässe zu erkennen und Ressourcen zu optimieren.Dauer-pro-Worker-Graph
Der Dauer-pro-Worker-Graph zeigt die Zeit, die zum Ausführen von Jobs benötigt wurde, gruppiert nach Namespace und Action. Sie können den Dauer-pro-Worker-Graphen verwenden, um die Performance der Worker pro Action und Namespace zu überwachen. So erhalten Sie einen Überblick über die Sidekiq-Performance und können Spitzen in der Dauer schnell identifizieren und untersuchen.Job-Status-pro-Queue-Graph
Der Job-Status-pro-Queue-mit-Priorität-Graph zeigt die Anzahl der ausgeführten Jobs, gruppiert nach ihrem resultierenden Status und nach der Queue, in der sie eingereiht wurden. Sie können den Job-Status-pro-Queue-Graphen verwenden, um Fehlerzählungen und die Performance pro Queue zu überwachen, Engpässe zu identifizieren und Ihre Background-Jobs für die Skalierbarkeit zu optimieren.Gesamter-Job-Status-Graph
Der Gesamter-Job-Status-Graph zeigt die Anzahl der Sidekiq-Jobs pro Status und Redis-Host. Sie können den Gesamter-Job-Status-Graphen verwenden, um fehlgeschlagene, tote, wiederholte, geplante und eingereihte Jobs zu überwachen.Queue-Latenz-Graph
Der Queue-Latenz-Graph zeigt die Latenz, die die Queue zum Zeitpunkt der Messung erfahren hat. Sidekiq berechnet dies als die Zeit seit der Einreihung des ältesten Jobs in der Queue. Dieser Wert wird in Millisekunden gemeldet. Sie können den Queue-Latenz-Graphen verwenden, um Verzögerungen bei der Verarbeitung von Jobs zu erkennen, Queue-Engpässe zu identifizieren und zu verstehen, wie schnell Background-Jobs starten.Queue-Länge-Graph
Der Queue-Länge-Graph zeigt die Länge der Sidekiq-Queues pro Queue und Redis-Host. Sie können den Queue-Länge-Graphen verwenden, um die Queue-Performance zu überwachen sowie Sidekiq-Engpässe zu erkennen und zu beheben.Redis-Speichernutzungs-Graph
Der Redis-Speichernutzungs-Graph zeigt:- Den gesamten von Redis reservierten Speicher (
sidekiq_memory_usage) - Die Resident Set Size, den physischen Speicher, den Redis aus Sicht des Betriebssystems belegt (
sidekiq_memory_usage_rss)
Throughput-pro-Worker-Graph
Der Throughput-pro-Worker-Graph zeigt die Anzahl der ausgeführten Jobs, gruppiert nach Namespace und Action. Sie können diesen Graphen verwenden, um zu sehen, wie viele Jobs jede Worker-Klasse verarbeitet, und um Worker zu erkennen, deren Volumen sich unerwartet ändert.Worker-/Prozessanzahl-Graph
Der Worker-/Prozessanzahl-Graph zeigt die Anzahl der Sidekiq-Worker und der ausgeführten Prozesse. Sie können den Worker-/Prozessanzahl-Graphen verwenden, um die Workload-Verteilung zu verwalten, die Ressourcenzuweisung zu optimieren und Performance-Probleme zu identifizieren.Hostname-Konfiguration
AppSignal versucht, den Hostnamen der Redis-Instanz zu erkennen, die Ihre Sidekiq-Instanz zum Speichern ihrer Queues verwendet. Wenn die Erkennung nicht genau ist, können Sie die Hostname-Konfiguration anpassen, indem Sie die Standard-Sidekiq-Probe überschreiben. Zuerst müssen Sie die Standard-Sidekiq-Probe überschreiben, indem Sie eine neue Probe mit demselben Namen (:sidekiq) registrieren. Diese Probe benötigt einen Konfigurations-Hash, einschließlich des Schlüssels :hostname mit dem neuen Hostname-Wert. Durch Angabe der Konfigurationsoption :hostname in der Sidekiq-Minutely-Probe werden die Metriken mit dem angegebenen Hostname-Wert getaggt. Der Wert der Konfigurationsoption :hostname wird nicht verwendet, um eine Redis- oder Sidekiq-Verbindung herzustellen.
Zum Beispiel:
SidekiqProbe in ein eigenes Modul verschoben. Beim Aufruf der Konstante wird eine Warnung ausgegeben und protokolliert. Aktualisieren Sie auf den neuen Konstantennamen Appsignal::Probes::SidekiqProbe, um die Warnung zu entfernen.
Span-Attribute
Nur im Collector-Modus: Dies gilt, wenn AppSignal für Ruby im Collector-Modus läuft. Andernfalls hat es keine Auswirkung.
messaging.system— die Queueing-Bibliothek.messaging.destination.name— die Queue, in die der Job eingereiht wurde.messaging.operation.type— ob der Span das Enqueue oder die Ausführung des Jobs ist.
error.type, die Klasse des Fehlers.
Verteiltes Tracing
Nur im Collector-Modus: Dies gilt, wenn AppSignal für Ruby im Collector-Modus läuft. Andernfalls hat es keine Auswirkung.
Siehe auch
- Sidekiq-Batches: Jobs parallel ausführen und dann handeln: Teilt eine Arbeitseinheit in viele Jobs auf und führt einen Callback aus, sobald jeder Job erfolgreich war. Erklärt, warum der Callback eine eigene Klasse benötigt und wie sich ein Batch an den nächsten anschließen lässt.