appsignal-wrap bereit, ein Tool zur Überwachung beliebiger Prozesse, die auf Ihrem Server laufen, wie Ihre Cronjobs, Ihr Datenbankserver oder andere Prozesse, die zu Ihrer Anwendung gehören.
Das appsignal-wrap-Tool integriert sich nahtlos mit den Cron- und Heartbeat-Prozessmonitoren, dem Logging und der Fehlerberichterstattung von AppSignal. Es kann verwendet werden, um jeden auf Ihren Servern laufenden Prozess zu überwachen, unabhängig von der Sprache oder dem Framework, in dem er geschrieben ist.
AppSignal Wrap hilft, Fragen wie diese zu beantworten:
Läuft mein Datenbankprozess?
Läuft mein Cronjob pünktlich?
Was ist mit meinem Backup-Skript schiefgelaufen?
Konnte mein Anwendungsserver nicht gestartet werden?
Kern-Funktionen von appsignal-wrap
Nach der Installation vonappsignal-wrap können Sie das Tool verwenden, um Prozesse zu starten, die Sie überwachen möchten. Das appsignal-wrap-Tool wird dann:
Die Standardausgabe und den Standardfehler des Prozesses als Logs melden, die Sie in AppSignal Logging filtern und abfragen können.
Cron-Prozessmonitore senden, um zu melden, dass der Prozess erfolgreich gestartet und beendet wurde, oder Heartbeat-Prozessmonitore, um seine Verfügbarkeit zu verfolgen.
Fehlschlag-Exit-Status als Fehler an AppSignal melden.
Installation
Der einfachste Weg,appsignal-wrap zu installieren, ist die Ausführung des folgenden Befehls:
appsignal-wrap für Ihr Betriebssystem und Ihre Architektur herunter und installiert sie in den $PATH Ihres Servers.
Sowohl Linux als auch macOS werden unterstützt, in den Architekturen x86 64-Bit (Intel) und ARM 64-Bit (Apple Silicon). Alpine Linux wird ebenfalls durch unsere musl-fähigen Builds für beide Architekturen unterstützt.
Alternativ können Sie die neueste Version von der GitHub Releases-Seite für Ihr Betriebssystem und Ihre Architektur herunterladen und manuell in den $PATH Ihres Servers installieren.
Verwendung
Um einen Prozess mitappsignal-wrap zu überwachen, übergeben Sie den Befehl, den Sie überwachen möchten, als letztes Argument an appsignal-wrap. Zum Beispiel:
[NAME] der Name, den Sie verwenden möchten, um den Prozess in AppSignal zu identifizieren, und [COMMAND] ist der Befehl, den Sie überwachen möchten. Sowohl der Name als auch der Befehl sind erforderlich. Zum Beispiel:
--api-key oder als Umgebungsvariable APPSIGNAL_APP_PUSH_API_KEY an appsignal-wrap übergeben.
Standardmäßig meldet appsignal-wrap die Standardausgabe und den Standardfehler des Prozesses als Logs an AppSignal und meldet alle Fehlschlag-Exit-Status als Fehler an AppSignal.
Prozessüberwachung
Standardmäßig sendetappsignal-wrap keine Prozessüberwachungs-Events. Sie können die Befehlszeilenoptionen --cron
oder --heartbeat verwenden, um Cron- bzw. Heartbeat-Prozessüberwachungen zu aktivieren.
Das Tool appsignal-wrap verwendet den als erstes Argument angegebenen Namen als Bezeichner für die Prozessüberwachung. Um beispielsweise Cron-Prozessüberwachungs-Events mit backup-script als Bezeichner für die Prozessüberwachung zu melden:
Cron-Prozessüberwachungen
Bei Verwendung von--cron zum Senden von Cron-Prozessüberwachungen sendet appsignal-wrap ein Start-Cron-Prozessüberwachungs-Event, wenn der Prozess startet, und ein Finish-Cron-Prozessüberwachungs-Event, wenn der Prozess erfolgreich beendet wird.
Wenn der Prozess mit einem Fehler-Exit-Status beendet wird, sendet appsignal-wrap kein Finish-Cron-Prozessüberwachungs-Event.
Heartbeat-Prozessüberwachungen
Bei Verwendung von--heartbeat zum Senden von Heartbeat-Prozessüberwachungen sendet appsignal-wrap während der Lebensdauer des Prozesses kontinuierlich Heartbeat-Prozessüberwachungs-Events.
Benutzerdefinierter Bezeichner
Um Prozessüberwachungs-Events mit einem anderen Bezeichner als dem als erstes Argument angegebenen Namen an AppSignal zu senden, können Sie einen anderen Bezeichner als Argument an die Befehlszeilenoptionen--cron oder --heartbeat übergeben. Zum Beispiel:
appsignal-wrap Cron-Prozessüberwachungs-Events mit daily-backup als Bezeichner für die Prozessüberwachung, verwendet aber weiterhin backup als Namen zur Identifizierung des Prozesses bei der Meldung von Logs und Fehlern.
Logging
Standardmäßig sendetappsignal-wrap sowohl die Standardausgabe als auch die Standardfehlerausgabe des überwachten Prozesses als Logs an AppSignal. Die Logs erscheinen unter der Quelle “application”, und der als erstes Argument angegebene Name wird als Log-Gruppe verwendet.
Logging deaktivieren
Um das Senden entweder der Standardausgabe oder der Standardfehlerausgabe als Logs zu deaktivieren, können Sie die Befehlszeilenoptionen--no-stdout bzw. --no-stderr verwenden.
Um das Senden von Logs vollständig zu deaktivieren, können Sie die Befehlszeilenoption --no-log verwenden.
Benutzerdefinierte Log-Gruppe
Um Logs als andere Log-Gruppe zu senden, können Sie diese als Argument an die Befehlszeilenoption--log übergeben. Zum Beispiel:
appsignal-wrap db als Log-Gruppe beim Senden von Logs an AppSignal, verwendet aber weiterhin mysql als Namen zur Identifizierung des Prozesses bei der Meldung von Prozessüberwachungen und Fehlern.
Benutzerdefinierte Log-Quelle
Um Logs an eine andere Log-Quelle zu senden, können Sie den API-Schlüssel der Log-Quelle, den Sie beim Erstellen einer Log-Quelle erhalten, als Argument an die Befehlszeilenoption--log-source oder als Umgebungsvariable APPSIGNAL_LOG_SOURCE_API_KEY übergeben. Zum Beispiel:
Fehlerberichterstattung
Standardmäßig meldetappsignal-wrap alle Fehlschlag-Exit-Status des überwachten Prozesses als Fehler an AppSignal. Die Fehler werden nach dem als erstes Argument angegebenen Namen gruppiert.
Fehlerberichterstattung deaktivieren
Um die Fehlerberichterstattung vollständig zu deaktivieren, können Sie die Befehlszeilenoption--no-error verwenden.
Ausgabe in Fehlermeldungen
Beim Melden von Fehlern an AppSignal nimmtappsignal-wrap die letzten Zeilen der Standardausgabe und des Standardfehlers des Prozesses als Fehlermeldung auf.
Die Verwendung der Befehlszeilenoptionen --no-stdout oder --no-stderr verhindert, dass die Standardausgabe oder der Standardfehler in die Fehlermeldung aufgenommen wird.
Die Verwendung beider Optionen verhindert, dass irgendwelche Logs in die Fehlermeldung aufgenommen werden.
Benutzerdefinierte Fehlergruppierung
Um Fehler anders zu gruppieren, können Sie einen anderen Namen als Argument an die Befehlszeilenoption--error übergeben. Zum Beispiel:
appsignal-wrap Fehler mit user-backup als Fehlergruppe, verwendet aber weiterhin backup als Namen zur Identifizierung des Prozesses beim Melden von Logs und Prozessmonitoren.
Anwendungs-Revision
Wenn eine Revision über das Flag--revision oder die Umgebungsvariable APPSIGNAL_REVISION angegeben wird, werden Fehler mit dem Deployment für diese Revision gruppiert.
Prozessverhalten
Dasappsignal-wrap-Tool soll transparent sein — das heißt, das Ausführen eines Befehls über appsignal-wrap sollte das gleiche Verhalten haben wie das Ausführen desselben Befehls allein.
Nachdem der überwachte Prozess beendet ist, wartet
appsignal-wrap eine kurze Zeit (in der Regel eine Sekunde oder weniger), bevor es beendet wird, um sicherzustellen, dass alle Logs und Prozessmonitore an AppSignal gesendet werden.Wenn appsignal-wrap in einer Schleife aufgerufen wird, kann die durch diese Wartezeit verursachte Verzögerung dazu führen, dass die Schleife langsamer als erwartet läuft.Umgebungsvariablen
Der Prozess erbt automatisch die Umgebungsvariablen desappsignal-wrap-Elternprozesses.
Exit-Status
Wenn der überwachte Prozess mit einem Exit-Code beendet wird, beendetappsignal-wrap sich mit demselben Fehlschlag-Exit-Code.
Wenn der überwachte Prozess durch ein Signal beendet wird, beendet appsignal-wrap sich mit einem Fehlschlag-Exit-Code von 128 + signal, wobei signal die Nummer ist, die das Signal repräsentiert, das den Prozess zum Beenden gebracht hat. Das Signal, das diese Nummer repräsentiert, ist betriebssystemspezifisch.
Eingabe und Ausgabe
Der Prozess erbt seinen Standardeingabe-Deskriptor automatisch vomappsignal-wrap-Elternprozess.
Zusätzlich zur Meldung an AppSignal werden die Standardausgabe und der Standardfehler des Prozesses an die Standardausgabe und den Standardfehler des appsignal-wrap-Elternprozesses weitergeleitet.
Bei der Verwendung von --no-stdout oder --no-stderr erbt der Prozess automatisch den Standardausgabe- bzw. Standardfehler-Deskriptor des appsignal-wrap-Elternprozesses.
Das bedeutet, dass Sie appsignal-wrap in einer Pipeline verwenden oder seine Ausgabe in eine Datei umleiten können, zum Beispiel:
Signale
Wenn derappsignal-wrap-Prozess ein Signal empfängt, das verarbeitet werden kann, leitet er es an den überwachten Prozess weiter.
Beispielsweise führt das Senden eines SIGTERM-Signals an den appsignal-wrap-Elternprozess dazu, dass der überwachte Prozess ein SIGTERM-Signal empfängt.
Wenn der appsignal-wrap-Elternprozess ein Signal empfängt, das nicht verarbeitet werden kann, wie z. B. SIGKILL und SIGSTOP, oder wenn er unerwartet abstürzt, wird ein SIGTERM-Signal an den überwachten Prozess gesendet.