Naar hoofdinhoud gaan
AppSignal biedt appsignal-wrap, een tool om processen op uw server te monitoren, zoals uw cron jobs, uw databaseserver of andere processen die bij uw applicatie horen. De tool appsignal-wrap integreert naadloos met de cron- en heartbeat-procesmonitoren, logging en foutrapportage van AppSignal. Hij kan worden gebruikt om elk proces op uw servers te monitoren, ongeacht de taal of het framework waarin het is geschreven.

AppSignal Wrap helpt antwoord te geven op vragen zoals:

Is mijn databaseproces actief en draaiend?
Draait mijn cron job op tijd?
Wat ging er mis met mijn backup-script?
Is mijn applicatieserver niet gestart?

Belangrijkste functies van appsignal-wrap

Na het installeren van appsignal-wrap kunt u de tool gebruiken om processen te starten die u wilt monitoren. De tool appsignal-wrap zal vervolgens:
De standaarduitvoer en standaardfout van het proces rapporteren als logs die u kunt filteren en doorzoeken in AppSignal Logging.
Cron-procesmonitoren versturen om te rapporteren dat het proces succesvol is gestart en voltooid, of heartbeat-procesmonitoren om de uptime bij te houden.
Mislukte exit-statussen rapporteren als errors aan AppSignal.

Installatie

De eenvoudigste manier om appsignal-wrap te installeren, is door het volgende commando uit te voeren:
curl -sSL https://github.com/appsignal/appsignal-wrap/releases/latest/download/install.sh | sudo sh
Het commando downloadt automatisch de laatste release van appsignal-wrap voor uw OS (besturingssysteem) en architectuur, en installeert deze in het $PATH van uw server. Zowel Linux als macOS worden ondersteund, in de x86 64-bit (Intel)- en ARM 64-bit (Apple Silicon)-architecturen. Alpine Linux wordt ook ondersteund via onze musl-geactiveerde builds voor beide architecturen. Alternatief kunt u de laatste release downloaden van de GitHub releases-pagina voor uw besturingssysteem en architectuur, en handmatig installeren in het $PATH van uw server.

Gebruik

Om een proces te monitoren met appsignal-wrap, geeft u het commando dat u wilt monitoren als laatste argument mee aan appsignal-wrap. Bijvoorbeeld:
export APPSIGNAL_APP_PUSH_API_KEY=[APP_LEVEL_API_KEY]
appsignal-wrap [NAME] -- [COMMAND]
In het bovenstaande voorbeeld is [NAME] de naam die u wilt gebruiken om het proces in AppSignal te identificeren, en [COMMAND] is het commando dat u wilt monitoren. Zowel de naam als het commando zijn verplicht. Bijvoorbeeld:
appsignal-wrap backup-script -- bash /var/app/backup.sh
U hebt een AppSignal app-level API-sleutel nodig, die u kunt vinden in de “Push & Deploy”-instellingen van uw AppSignal-app. U kunt deze aan appsignal-wrap doorgeven als argument bij de command-line-optie --api-key, of als de omgevingsvariabele APPSIGNAL_APP_PUSH_API_KEY. Standaard rapporteert appsignal-wrap de standaarduitvoer en standaardfout van het proces als logs aan AppSignal, en rapporteert alle mislukte exit-statussen aan AppSignal als errors.

Procesmonitoring

Lees onze documentatie over procesmonitoring voor meer informatie over hoe AppSignal procesmonitoring werkt.
Standaard stuurt appsignal-wrap geen procesmonitor-events. U kunt de command-line opties --cron of --heartbeat gebruiken om respectievelijk cron- of heartbeat-procesmonitors in te schakelen. De appsignal-wrap-tool gebruikt de naam die als eerste argument is opgegeven als de identifier van de procesmonitor. Bijvoorbeeld, om cron-procesmonitor-events te rapporteren met backup-script als identifier van de procesmonitor:
appsignal-wrap backup-script --cron -- bash /var/app/backup.sh

Cron-procesmonitors

Bij gebruik van --cron om cron-procesmonitors te verzenden, stuurt appsignal-wrap een start-cron-procesmonitor-event wanneer het proces start, en een finish-cron-procesmonitor-event als het proces succesvol wordt afgerond. Als het proces eindigt met een mislukte exit-status, stuurt appsignal-wrap geen finish-cron-procesmonitor-event.

Heartbeat-procesmonitors

Bij gebruik van --heartbeat om heartbeat-procesmonitors te verzenden, stuurt appsignal-wrap continu heartbeat-procesmonitor-events tijdens de levensduur van het proces.

Aangepaste identifier

Om procesmonitor-events naar AppSignal te sturen met een identifier die verschilt van de naam die als eerste argument is opgegeven, kunt u een andere identifier als argument doorgeven aan de command-line opties --cron of --heartbeat. Bijvoorbeeld:
appsignal-wrap backup --cron daily-backup -- bash /var/app/backup.sh
In het bovenstaande voorbeeld stuurt appsignal-wrap cron-procesmonitor-events met daily-backup als identifier van de procesmonitor, maar gebruikt het nog steeds backup als naam om het proces te identificeren bij het rapporteren van logs en errors.

Logging

Standaard stuurt appsignal-wrap zowel de standaard output als de standaard error van het proces dat het monitort als logs naar AppSignal. De logs verschijnen onder de bron “application”, en de naam die als eerste argument is opgegeven, wordt gebruikt als de log group.

Logging uitschakelen

Om het verzenden van ofwel de standaard output of de standaard error als logs uit te schakelen, kunt u respectievelijk de command-line opties --no-stdout of --no-stderr gebruiken. Om het verzenden van logs helemaal uit te schakelen, kunt u de command-line optie --no-log gebruiken.

Aangepaste log group

Om logs als een andere log group te verzenden, kunt u deze als argument doorgeven aan de command-line optie --log. Bijvoorbeeld:
appsignal-wrap mysql --log db -- mysqld
In het bovenstaande voorbeeld gebruikt appsignal-wrap db als de log group bij het verzenden van logs naar AppSignal, maar wordt nog steeds mysql gebruikt als naam om het proces te identificeren bij het rapporteren van procesmonitors en errors.

Aangepaste log-bron

Om logs naar een andere log-bron te verzenden, kunt u de API-sleutel van de log-bron, die u verkrijgt bij het aanmaken van een log-bron, als argument doorgeven aan de command-line optie --log-source, of als de omgevingsvariabele APPSIGNAL_LOG_SOURCE_API_KEY. Bijvoorbeeld:
export APPSIGNAL_LOG_SOURCE_API_KEY=[LOG_SOURCE_API_KEY]
appsignal-wrap mysql -- mysqld

Foutrapportage

Standaard rapporteert appsignal-wrap alle mislukte exit-statussen van het proces dat het monitort als errors aan AppSignal. De errors worden gegroepeerd op de naam die als eerste argument is opgegeven.

Foutrapportage uitschakelen

Om het rapporteren van errors volledig uit te schakelen, kunt u de command-line-optie --no-error gebruiken.

Uitvoer in foutmeldingen

Bij het rapporteren van errors aan AppSignal voegt appsignal-wrap de laatste regels van de standaarduitvoer en standaardfout van het proces toe als foutmelding. Door de command-line-opties --no-stdout of --no-stderr te gebruiken voorkomt u dat de standaarduitvoer of standaardfout in de foutmelding wordt opgenomen. Door beide opties te gebruiken, worden er helemaal geen logs in de foutmelding opgenomen.

Aangepaste foutgroepering

Om errors anders te groeperen, kunt u een andere naam meegeven als argument aan de command-line-optie --error. Bijvoorbeeld:
appsignal-wrap backup --error user-backup -- bash /var/app/backup.sh --only-users
In het bovenstaande voorbeeld rapporteert appsignal-wrap errors met user-backup als foutgroep, maar gebruikt nog steeds backup als naam om het proces te identificeren bij het rapporteren van logs en procesmonitoren.

Applicatierevisie

Als een revisie wordt opgegeven via de vlag --revision of de omgevingsvariabele APPSIGNAL_REVISION, worden errors gegroepeerd met de deployment voor die revisie.

Procesgedrag

De tool appsignal-wrap streeft ernaar transparant te zijn — dat wil zeggen, het uitvoeren van een commando met appsignal-wrap zou hetzelfde gedrag moeten hebben als het uitvoeren van datzelfde commando op zichzelf.
Nadat het gemonitorde proces is voltooid, wacht appsignal-wrap korte tijd (meestal een seconde of minder) voordat het wordt afgesloten, om ervoor te zorgen dat alle logs en procesmonitoren naar AppSignal worden verzonden.Als u appsignal-wrap aanroept in een loop, kan de vertraging veroorzaakt door dit wachten ervoor zorgen dat de loop langzamer draait dan verwacht.

Omgevingsvariabelen

Het proces erft automatisch de omgevingsvariabelen van het appsignal-wrap-bovenliggende proces.

Exit-status

Als het proces dat het monitort wordt afgesloten met een exit-code, wordt appsignal-wrap afgesloten met dezelfde mislukte exit-code. Als het proces dat het monitort wordt beëindigd door een signaal, wordt appsignal-wrap afgesloten met een mislukte exit-code van 128 + signal, waarbij signal het nummer is dat het signaal vertegenwoordigt dat ervoor heeft gezorgd dat het proces werd beëindigd. Welk signaal dit nummer vertegenwoordigt is afhankelijk van het besturingssysteem.

Invoer en uitvoer

Het proces erft automatisch zijn standaardinvoer-descriptor van het appsignal-wrap-bovenliggende proces. Naast het rapporteren ervan aan AppSignal, worden de standaarduitvoer en standaardfout van het proces doorgesluisd naar de standaarduitvoer en standaardfout van het appsignal-wrap-bovenliggende proces. Bij gebruik van --no-stdout of --no-stderr erft het proces automatisch respectievelijk de standaarduitvoer- of standaardfout-descriptor van het appsignal-wrap-bovenliggende proces. Dit betekent dat u appsignal-wrap kunt gebruiken in een pipeline of de uitvoer kunt omleiden naar een bestand, bijvoorbeeld:
# Without monitoring
grep "active" customers.csv \
    | python /var/app/import.py \
    > /var/log/import.log

# With monitoring
grep "active" customers.csv \
    | appsignal-wrap import-customers -- python /var/app/import.py \
    > /var/log/import.log

Signalen

Wanneer het appsignal-wrap-proces een signaal ontvangt dat kan worden afgehandeld, stuurt het dit door naar het proces dat het monitort. Bijvoorbeeld, het sturen van een SIGTERM-signaal naar het appsignal-wrap-bovenliggende proces zorgt ervoor dat het proces dat het monitort een SIGTERM-signaal ontvangt. Wanneer het appsignal-wrap-bovenliggende proces een signaal ontvangt dat niet kan worden afgehandeld, zoals SIGKILL en SIGSTOP, of als het onverwacht crasht, wordt een SIGTERM-signaal verzonden naar het proces dat het monitort.