Skip to main content
Shoryuken ist ein Thread-basierter Message-Prozessor für AWS SQS. AppSignal instrumentiert Shoryuken automatisch, wenn das Shoryuken-gem beim Start erkannt wird. Eine manuelle Installation ist nicht erforderlich, wenn Shoryuken Teil einer Rails-App ist. Wenn Sie eine eigenständige Shoryuken-App verwenden, sehen Sie sich bitte unseren Integrationsleitfaden an.

Performance-Monitoring

Event-Timeline

Shoryuken-Jobs erscheinen in der Event-Timeline der Performance-Actions Ihrer Anwendung als perform_job.shoryuken-events.

Incident-Gruppierung

AppSignal erkennt Job-Namen anhand des Klassennamens des Shoryuken-worker, ergänzt um den Methodennamen perform, was zu etwas wie MyWorker#perform führt. AppSignal gruppiert Jobs für Performance-Monitoring und Benachrichtigungen anhand dieses Namens.

Enqueue-Instrumentation

Das Einreihen eines Shoryuken-Jobs zeichnet ein enqueue.shoryuken-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.

Batch-Unterstützung

Wenn eine App einen worker mit der Option :batch => true verwendet, verarbeitet dieser worker mehrere Nachrichten im selben Tick. Dies erfordert Ruby-gem 2.11.3 oder höher, das Unterstützung für die Batch-Option hinzufügt.

Beispielanwendung

Wir haben eine Beispielanwendung für eine eigenständige Shoryuken-Anwendung in unserem Examples-Repository auf GitHub verfügbar.

Span-Attribute

Nur im Collector-Modus: Dies gilt, wenn AppSignal für Ruby im Collector-Modus läuft. Andernfalls hat es keine Auswirkung.
Der Enqueue- und der eigene Span des Jobs tragen jeweils:
  • 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.
Ein Span für einen Job, der einen Fehler ausgelöst hat, trägt außerdem 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.
Ein Job läuft im selben Trace wie der Code, der ihn eingereiht hat, und erscheint unter dem Request oder Job, der ihn eingeplant hat. So können Sie einen langsamen Job bis zu seiner Ursache zurückverfolgen. Der Trace wird in den SQS-Message-Attributen der Nachricht mitgeführt. SQS erlaubt höchstens zehn davon pro Nachricht. Nutzt eine Nachricht bereits alle zehn, wird sie ohne Trace gesendet. Nachrichten, die in Batches empfangen werden, setzen keinen Trace fort. Ein Batch wird als eine Einheit behandelt, daher gibt es keinen einzelnen Trace, zu dem er gehören könnte. Weitere Informationen zu verteiltem Tracing.