appsignal-wrap, un outil pour surveiller tout processus s’exécutant sur votre serveur, tel que vos tâches cron, votre serveur de base de données ou tout autre processus lié à votre application.
L’outil appsignal-wrap s’intègre parfaitement avec les moniteurs de processus cron et heartbeat d’AppSignal, le logging et le rapport d’erreurs. Il peut être utilisé pour surveiller tout processus s’exécutant sur vos serveurs, quel que soit le langage ou le framework dans lequel il est écrit.
AppSignal Wrap aide à répondre à des questions telles que :
Mon processus de base de données est-il opérationnel ?
Ma tâche cron s’exécute-t-elle à l’heure ?
Qu’est-ce qui s’est mal passé avec mon script de sauvegarde ?
Mon serveur d’application a-t-il échoué à démarrer ?
Fonctionnalités principales d’appsignal-wrap
Après avoir installéappsignal-wrap, vous pouvez utiliser l’outil pour démarrer les processus que vous souhaitez surveiller. L’outil appsignal-wrap va ensuite :
Rapporter la sortie standard et l’erreur standard du processus, en tant que logs que vous pouvez filtrer et interroger sur AppSignal Logging.
Envoyer des moniteurs de processus cron pour rapporter que le processus a démarré et s’est terminé avec succès, ou des moniteurs de processus heartbeat pour suivre son uptime.
Rapporter les statuts de sortie d’échec en tant qu’erreurs à AppSignal.
Installation
La façon la plus simple d’installerappsignal-wrap est d’exécuter la commande suivante :
appsignal-wrap pour votre OS (système d’exploitation) et architecture, et l’installera dans le $PATH de votre serveur.
Linux et macOS sont tous deux pris en charge, dans les architectures x86 64-bit (Intel) et ARM 64-bit (Apple Silicon). Alpine Linux est également pris en charge via nos builds activés pour musl pour les deux architectures.
Alternativement, vous pouvez télécharger la dernière version depuis la page de releases GitHub pour votre système d’exploitation et architecture, et l’installer manuellement dans le $PATH de votre serveur.
Utilisation
Pour surveiller un processus avecappsignal-wrap, vous passez la commande que vous souhaitez surveiller en dernier argument à appsignal-wrap. Par exemple :
[NAME] est le nom que vous souhaitez utiliser pour identifier le processus dans AppSignal, et [COMMAND] est la commande que vous souhaitez surveiller. Le nom et la commande sont tous deux requis. Par exemple :
appsignal-wrap comme argument de l’option en ligne de commande --api-key, ou comme variable d’environnement APPSIGNAL_APP_PUSH_API_KEY.
Par défaut, appsignal-wrap rapportera la sortie standard et l’erreur standard du processus en tant que logs vers AppSignal, et rapportera tout statut de sortie d’échec à AppSignal en tant qu’erreur.
Surveillance de processus
Par défaut,appsignal-wrap n’enverra aucun événement de surveillance de processus. Vous pouvez utiliser les options de ligne de commande --cron
ou --heartbeat pour activer respectivement les moniteurs de processus cron ou heartbeat.
L’outil appsignal-wrap utilisera le nom fourni comme premier argument en tant qu’identifiant du moniteur de processus. Par exemple, pour signaler des événements de moniteur de processus cron avec backup-script comme identifiant du moniteur de processus :
Moniteurs de processus cron
Lors de l’utilisation de--cron pour envoyer des moniteurs de processus cron, appsignal-wrap enverra un événement de moniteur de processus cron de démarrage lorsque le processus démarre, et un événement de moniteur de processus cron de fin si le processus se termine avec succès.
Si le processus se termine avec un statut de sortie d’échec, appsignal-wrap n’enverra pas d’événement de moniteur de processus cron de fin.
Moniteurs de processus heartbeat
Lors de l’utilisation de--heartbeat pour envoyer des moniteurs de processus heartbeat, appsignal-wrap enverra des événements de moniteur de processus heartbeat en continu pendant la durée de vie du processus.
Identifiant personnalisé
Pour envoyer des événements de moniteur de processus à AppSignal avec un identifiant différent du nom fourni comme premier argument, vous pouvez passer un identifiant différent en argument des options de ligne de commande--cron ou --heartbeat. Par exemple :
appsignal-wrap enverra des événements de moniteur de processus cron avec daily-backup comme identifiant du moniteur de processus, mais utilisera toujours backup comme nom pour identifier le processus lors du signalement des logs et des erreurs.
Journalisation
Par défaut,appsignal-wrap enverra à la fois la sortie standard et la sortie d’erreur standard du processus qu’il surveille en tant que logs à AppSignal. Les logs apparaîtront sous la source « application », et le nom fourni comme premier argument sera utilisé comme groupe de logs.
Désactiver la journalisation
Pour désactiver l’envoi de la sortie standard ou de la sortie d’erreur standard en tant que logs, vous pouvez utiliser respectivement les options de ligne de commande--no-stdout ou --no-stderr.
Pour désactiver complètement l’envoi des logs, vous pouvez utiliser l’option de ligne de commande --no-log.
Groupe de logs personnalisé
Pour envoyer les logs comme un groupe de logs différent, vous pouvez le passer en argument de l’option de ligne de commande--log. Par exemple :
appsignal-wrap utilisera db comme groupe de logs lors de l’envoi des logs à AppSignal, mais utilisera toujours mysql comme nom pour identifier le processus lors du signalement des moniteurs de processus et des erreurs.
Source de logs personnalisée
Pour envoyer les logs vers une source de logs différente, vous pouvez passer la clé API de la source de logs, que vous obtenez lors de la création d’une source de logs, en argument de l’option de ligne de commande--log-source, ou comme variable d’environnement APPSIGNAL_LOG_SOURCE_API_KEY. Par exemple :
Rapport d’erreurs
Par défaut,appsignal-wrap rapportera tout statut de sortie d’échec du processus qu’il surveille en tant qu’erreur à AppSignal. Les erreurs seront groupées par le nom fourni en premier argument.
Désactiver le rapport d’erreurs
Pour désactiver entièrement le rapport d’erreurs, vous pouvez utiliser l’option en ligne de commande--no-error.
Sortie dans les messages d’erreur
Lors du rapport d’erreurs à AppSignal,appsignal-wrap inclura les dernières lignes de la sortie standard et de l’erreur standard du processus comme message d’erreur.
L’utilisation des options en ligne de commande --no-stdout ou --no-stderr empêchera la sortie standard ou l’erreur standard d’être incluse dans le message d’erreur.
L’utilisation des deux options empêchera tout log d’être inclus dans le message d’erreur.
Regroupement personnalisé des erreurs
Pour grouper les erreurs différemment, vous pouvez passer un autre nom comme argument à l’option en ligne de commande--error. Par exemple :
appsignal-wrap rapportera les erreurs avec user-backup comme groupe d’erreurs, mais utilisera toujours backup comme nom pour identifier le processus lors du rapport des logs et des moniteurs de processus.
Révision d’application
Si une révision est fournie en utilisant le drapeau--revision ou la variable d’environnement APPSIGNAL_REVISION, les erreurs seront groupées avec le déploiement pour cette révision.
Comportement du processus
L’outilappsignal-wrap vise à être transparent — c’est-à-dire qu’exécuter une commande à l’aide d’appsignal-wrap doit avoir le même comportement que d’exécuter cette même commande seule.
Après la fin du processus surveillé,
appsignal-wrap attendra une courte période (généralement une seconde ou moins) avant de quitter, afin de s’assurer que tous les logs et moniteurs de processus sont envoyés à AppSignal.Si vous appelez appsignal-wrap dans une boucle, le délai causé par cette attente peut faire en sorte que la boucle s’exécute plus lentement que prévu.Variables d’environnement
Le processus hérite automatiquement des variables d’environnement du processus parentappsignal-wrap.
Statut de sortie
Si le processus qu’il surveille se termine avec un code de sortie,appsignal-wrap se terminera avec le même code de sortie d’échec.
Si le processus qu’il surveille est terminé par un signal, appsignal-wrap se terminera avec un code de sortie d’échec de 128 + signal, où signal est le nombre représentant le signal qui a causé la fin du processus. Le signal que ce nombre représente est spécifique au système d’exploitation.
Entrée et sortie
Le processus hérite automatiquement de son descripteur d’entrée standard du processus parentappsignal-wrap.
En plus de les rapporter à AppSignal, la sortie standard et l’erreur standard du processus sont redirigées vers la sortie standard et l’erreur standard du processus parent appsignal-wrap.
Lors de l’utilisation de --no-stdout ou --no-stderr, le processus hérite automatiquement, respectivement, du descripteur de sortie standard ou d’erreur standard du processus parent appsignal-wrap.
Cela signifie que vous pouvez utiliser appsignal-wrap dans un pipeline, ou rediriger sa sortie vers un fichier, par exemple :
Signaux
Lorsque le processusappsignal-wrap reçoit un signal qui peut être géré, il le transmet au processus qu’il surveille.
Par exemple, envoyer un signal SIGTERM au processus parent appsignal-wrap fera en sorte que le processus qu’il surveille reçoive un signal SIGTERM.
Lorsque le processus parent appsignal-wrap reçoit un signal qui ne peut pas être géré, tel que SIGKILL et SIGSTOP, ou s’il plante de manière inattendue, un signal SIGTERM sera envoyé au processus qu’il surveille.