Skip to main content
AppSignal unterstützt viele Gems out-of-the-box und benötigt keine zusätzliche Instrumentierung, um Fehler- und Performance-Daten zu melden. Für benutzerdefinierte Skripte und Bibliotheken, die wir nicht unterstützen, können Sie diesem Leitfaden folgend Monitoring hinzufügen.

Skripte überwachen

Ein AppSignal-Sample besteht aus zwei Elementen: einer Transaktion und Events. Bevor Sie Events mit unseren Instrumentierungs-Helpern melden, müssen Sie zuerst eine Transaktion erstellen. Verwenden Sie den Appsignal.monitor-Helper, um eine Transaktion zu erstellen und sie für die Dauer des angegebenen Blocks aktiv zu machen. Der Monitor-Helper meldet den instrumentierten Codeblock als Performance-Messungen, die im Performance-Bereich in der AppSignal-UI aufgeführt werden, gruppiert nach Action-Name. Er verfolgt die Dauer des Blocks und meldet Exceptions, die darin auftreten.
Der monitor-Helper akzeptiert zwei Keyword-Argumente:
  • namespace (optional): Passen Sie den Namespace der Transaktion an. Standardmäßig “web”.
  • action (erforderlich): Wir gruppieren die Samples des Skripts nach diesem Action-Namen für die Erstellung von Issues und Benachrichtigungen. Ohne Action-Name werden keine Informationen über den überwachten Block gemeldet, da wir nicht wissen, wie wir die Daten gruppieren sollen.

Action-Namen später setzen

Das action-Argument des Appsignal.monitor-Helpers kann auf nil belassen oder explizit auf :set_later gesetzt werden, jedoch nur, wenn der Helper Appsignal.set_action weiterhin innerhalb des Blocks aufgerufen wird, um den Action-Namen zu setzen. Ohne Action-Name werden keine Daten über den instrumentierten Block gemeldet. Diese Methode zum Setzen des Action-Namens kann hilfreich sein, wenn der Action-Name nur in einem Verarbeitungsschritt innerhalb des Blocks bestimmt werden kann.

Instrumentierungs-Events

Standardmäßig meldet das Ruby-Gem Events von unterstützten Integrationen. Diese Events erscheinen in der Event-Timeline. Verwenden Sie unsere Instrumentierungs-Helper, um Ihre eigenen Events zur Event-Timeline hinzuzufügen. Dies erzeugt eine detailliertere Aufschlüsselung dessen, was im überwachten Block geschieht.

Stopp-Anforderung

Für Skripte, die auf kurzlebigen Hosts laufen, ist es erforderlich, das AppSignal Ruby-Gem zu stoppen, bevor das Skript beendet wird. Dies stellt sicher, dass die Daten aus dem Skript an AppSignal gemeldet werden, bevor der Host heruntergefahren wird. Dieses Verhalten ist nur in solchen Szenarien erforderlich:
  • Wenn ein geplanter Task (ein Cron-Job) von einem Hosting-Dienst ausgeführt wird.
  • Wenn ein Skript auf einem Container ausgeführt wird, der zur Ausführung dieses Skripts startet und herunterfährt, wenn das Skript beendet wird.
  • Wenn ein Skript auf einem Heroku-Runner oder ähnlichen Hosting-Anbietern ausgeführt wird.
Es ist nicht erforderlich, das AppSignal Ruby-Gem zu stoppen, wenn der Host, auf dem das Skript gestartet wird, nach Beendigung des Skripts weiterhin läuft. AppSignal wird automatisch gestoppt, wenn das Skript beendet wird und ein Container oder eine Hosting-Umgebung wie Heroku erkannt wird. Dieses Verhalten wird durch die enable_at_exit_hook-Option gesteuert. Stellen Sie sicher, dass diese Option auf true gesetzt ist für Skripte, die ein Stoppen von AppSignal erfordern, falls dies nicht automatisch erkannt wird. Möglicherweise müssen Sie einen zusätzlichen sleep-Aufruf von einigen Sekunden hinzufügen, um sicherzustellen, dass genügend Zeit ist, um alle Daten zu senden. Verwenden Sie bei Bedarf das at_exit-Verwendungsbeispiel aus dem unten stehenden Code.

Monitor-and-Stop-Helper

Der Appsignal.monitor_and_stop-Helper ist zugunsten der enable_at_exit_hook-Option veraltet, die sicherstellt, dass Appsignal.stop aufgerufen wird, wenn der Prozess beendet wird, und nicht jedes Mal, wenn der Appsignal.monitor_and_stop-Helper aufgerufen wird. Seine Verwendung ist im Abschnitt darüber beschrieben.Verwenden Sie diesen Helper nur in Versionen des Ruby-Gems, die die enable_at_exit_hook-Option nicht unterstützen.
Wenn Ihr Prozess immer einen Task/Job ausführt und unmittelbar danach beendet wird, können Sie den Appsignal.monitor_and_stop-Helper verwenden. Dies stellt sicher, dass AppSignal nach der Ausführung des Blocks automatisch stoppt.