appsignal-wrap, uma ferramenta para monitorar qualquer processo em execução no seu servidor, como seus cron jobs, seu servidor de banco de dados ou quaisquer outros processos relacionados à sua aplicação.
A ferramenta appsignal-wrap integra-se perfeitamente aos monitores de processos cron e heartbeat do AppSignal, logging e relatórios de erros. Pode ser usada para monitorar qualquer processo em execução nos seus servidores, independentemente da linguagem ou framework em que esteja escrito.
O AppSignal Wrap ajuda a responder perguntas como:
Meu processo de banco de dados está em execução?
Meu cron job está rodando no horário?
O que deu errado com meu script de backup?
Meu servidor de aplicação falhou ao iniciar?
Principais recursos do appsignal-wrap
Após instalar oappsignal-wrap, você pode usar a ferramenta para iniciar os processos que deseja monitorar. A ferramenta appsignal-wrap irá então:
Reportar a saída padrão e o erro padrão do processo, como logs que você pode filtrar e consultar no AppSignal Logging.
Enviar monitores de processos cron para reportar que o processo iniciou e terminou com sucesso, ou monitores de processos heartbeat para acompanhar seu tempo de atividade.
Reportar status de saída de falha como erros para o AppSignal.
Instalação
A maneira mais fácil de instalar oappsignal-wrap é executar o seguinte comando:
appsignal-wrap para seu SO (sistema operacional) e arquitetura, e o instalará no $PATH do seu servidor.
Tanto Linux quanto macOS são suportados, nas arquiteturas x86 64-bit (Intel) e ARM 64-bit (Apple Silicon). O Alpine Linux também é suportado através dos nossos builds com musl habilitado para ambas as arquiteturas.
Alternativamente, você pode baixar a última versão na página de releases do GitHub para seu sistema operacional e arquitetura, e instalá-la manualmente no $PATH do seu servidor.
Uso
Para monitorar um processo com oappsignal-wrap, você passa o comando que deseja monitorar como o último argumento para o appsignal-wrap. Por exemplo:
[NAME] é o nome que você quer usar para identificar o processo no AppSignal, e [COMMAND] é o comando que você quer monitorar. Tanto o nome quanto o comando são obrigatórios. Por exemplo:
appsignal-wrap como argumento da opção de linha de comando --api-key, ou como variável de ambiente APPSIGNAL_APP_PUSH_API_KEY.
Por padrão, o appsignal-wrap reportará a saída padrão e o erro padrão do processo como logs para o AppSignal, e reportará quaisquer status de saída de falha como erros para o AppSignal.
Monitoramento de Processos
Por padrão, oappsignal-wrap não enviará nenhum evento de monitor de processo. Você pode usar as opções de linha de comando --cron
ou --heartbeat para habilitar monitores de processo do tipo cron ou heartbeat, respectivamente.
A ferramenta appsignal-wrap usará o nome fornecido como primeiro argumento como o identificador do monitor de processo. Por exemplo, para reportar eventos de monitor de processo do tipo cron com backup-script como identificador do monitor de processo:
Monitores de processo do tipo cron
Ao usar--cron para enviar monitores de processo do tipo cron, o appsignal-wrap enviará um evento de início de monitor de processo cron quando o processo iniciar, e um evento de finalização de monitor de processo cron se o processo finalizar com sucesso.
Se o processo encerrar com status de saída de falha, o appsignal-wrap não enviará um evento de finalização de monitor de processo cron.
Monitores de processo do tipo heartbeat
Ao usar--heartbeat para enviar monitores de processo do tipo heartbeat, o appsignal-wrap enviará eventos de monitor de processo heartbeat continuamente durante o tempo de vida do processo.
Identificador personalizado
Para enviar eventos de monitor de processo ao AppSignal com um identificador diferente do nome fornecido como primeiro argumento, você pode passar um identificador diferente como argumento para as opções de linha de comando--cron ou --heartbeat. Por exemplo:
appsignal-wrap enviará eventos de monitor de processo cron com daily-backup como identificador do monitor de processo, mas ainda usará backup como o nome para identificar o processo ao reportar logs e erros.
Logging
Por padrão, oappsignal-wrap enviará tanto a saída padrão quanto a saída de erro padrão do processo monitorado como logs para o AppSignal. Os logs aparecerão sob a fonte “application”, e o nome fornecido como primeiro argumento será usado como o grupo de logs.
Desabilitar logging
Para desabilitar o envio da saída padrão ou da saída de erro padrão como logs, você pode usar as opções de linha de comando--no-stdout ou --no-stderr, respectivamente.
Para desabilitar o envio de logs completamente, você pode usar a opção de linha de comando --no-log.
Grupo de logs personalizado
Para enviar logs como um grupo de logs diferente, você pode passá-lo como argumento para a opção de linha de comando--log. Por exemplo:
appsignal-wrap usará db como o grupo de logs ao enviar logs para o AppSignal, mas ainda usará mysql como o nome para identificar o processo ao reportar monitores de processo e erros.
Fonte de logs personalizada
Para enviar logs para uma fonte de logs diferente, você pode passar a chave de API da fonte de logs, que você obtém ao criar uma fonte de logs, como argumento para a opção de linha de comando--log-source, ou como a variável de ambiente APPSIGNAL_LOG_SOURCE_API_KEY. Por exemplo:
Relatório de erros
Por padrão, oappsignal-wrap reportará qualquer status de saída de falha do processo que monitora como erros para o AppSignal. Os erros serão agrupados pelo nome fornecido como primeiro argumento.
Desabilitar relatório de erros
Para desabilitar completamente o relatório de erros, você pode usar a opção de linha de comando--no-error.
Saída em mensagens de erro
Ao reportar erros para o AppSignal, oappsignal-wrap incluirá as últimas linhas da saída padrão e do erro padrão do processo como a mensagem de erro.
Usar as opções de linha de comando --no-stdout ou --no-stderr impedirá que a saída padrão ou o erro padrão sejam incluídos na mensagem de erro.
Usar ambas as opções impedirá que quaisquer logs sejam incluídos na mensagem de erro.
Agrupamento de erros personalizado
Para agrupar erros de forma diferente, você pode passar um nome diferente como argumento para a opção de linha de comando--error. Por exemplo:
appsignal-wrap reportará erros com user-backup como grupo de erros, mas ainda usará backup como o nome para identificar o processo ao reportar logs e monitores de processo.
Revisão da aplicação
Se uma revisão for fornecida usando a flag--revision ou a variável de ambiente APPSIGNAL_REVISION, os erros serão agrupados com o deploy daquela revisão.
Comportamento do processo
A ferramentaappsignal-wrap busca ser transparente — ou seja, executar algum comando usando o appsignal-wrap deve ter o mesmo comportamento que executar esse mesmo comando sozinho.
Depois que o processo monitorado terminar, o
appsignal-wrap aguardará um curto período de tempo (geralmente um segundo ou menos) antes de sair, a fim de garantir que todos os logs e monitores de processo sejam enviados ao AppSignal.Se você invocar o appsignal-wrap em um loop, o atraso causado por essa espera pode fazer com que o loop rode mais lento do que o esperado.Variáveis de ambiente
O processo herda automaticamente as variáveis de ambiente do processo paiappsignal-wrap.
Status de saída
Se o processo que ele monitora sai com um código de saída, oappsignal-wrap sairá com o mesmo código de saída de falha.
Se o processo que ele monitora é encerrado por um sinal, o appsignal-wrap sairá com um código de saída de falha de 128 + signal, onde signal é o número que representa o sinal que causou o término do processo. O sinal que esse número representa é específico do sistema operacional.
Entrada e saída
O processo herda automaticamente seu descritor de entrada padrão do processo paiappsignal-wrap.
Além de reportá-las ao AppSignal, a saída padrão e o erro padrão do processo são canalizados para a saída padrão e o erro padrão do processo pai appsignal-wrap.
Ao usar --no-stdout ou --no-stderr, o processo herda automaticamente o descritor de saída padrão ou erro padrão, respectivamente, do processo pai appsignal-wrap.
Isso significa que você pode usar o appsignal-wrap em um pipeline, ou redirecionar sua saída para um arquivo, por exemplo:
Sinais
Quando o processoappsignal-wrap recebe um sinal que pode ser tratado, ele o encaminhará para o processo que monitora.
Por exemplo, enviar um sinal SIGTERM para o processo pai appsignal-wrap fará com que o processo que ele monitora receba um sinal SIGTERM.
Quando o processo pai appsignal-wrap recebe um sinal que não pode ser tratado, como SIGKILL e SIGSTOP, ou se ele falha inesperadamente, um sinal SIGTERM será enviado para o processo que ele monitora.