Diagnóstico
Nosso gem Ruby, pacote Elixir, pacote Node.js e pacote Python vêm com uma ferramenta de linha de comando de diagnóstico integrada que produz informações sobre a configuração da biblioteca do AppSignal e o ambiente em que está rodando. Todas essas informações podem ajudar a encontrar uma possível causa para um problema. Se você abrir uma solicitação de suporte, geralmente pediremos que você execute isso primeiro.Informações do diagnóstico
O comando diagnose produzirá os seguintes dados.- Informações do agente
- Versão do gem Ruby / pacote Elixir / Node.js / pacote Python
- Versão do agente
- Caminho de instalação do gem Ruby
- Extensão C / Nif carregada:
yes/no
- Informações do host
- Arquitetura de hardware
- Sistema operacional
- Versão do Ruby / Elixir & OTP / Node.js / Python
- Detecção de Heroku - visível apenas no Heroku
- Detecção de container
- Usuário atual é o usuário
root:yes/no
- Diagnóstico do Agente
- Inicia o agente no modo de diagnóstico
- Validação da configuração do agente
- Inicialização do logger do agente
- Verificação se o caminho do arquivo de lock do agente é gravável
- Configuração
- Ambiente
- O gem Ruby emite um aviso se nenhum for encontrado.
- Lista de opções de configuração
- Veja todas as opções de configuração disponíveis:
- Ambiente
- Validação da chave Push API
- Testa se a chave Push API que está sendo usada é uma chave válida no AppSignal.com.
- Informações de caminho
- Testa todos os caminhos necessários para verificar se são graváveis. Também exibe a propriedade do usuário atual.
current_path- caminho em que o comando diagnose é executado. Deve ser um caminho para a aplicação que você está tentando depurar. Geralmente o mesmo queroot_path. (Somente Ruby)root_path- caminho da aplicação. O AppSignal tentará encontrar um arquivoconfig/appsignal.rb/config/appsignal.ymlaqui. (Somente Ruby)log_dir_path- caminho em que o arquivo de log é criado.log_file_path- caminho em que o arquivo de log é criado. Fica vazio se nenhum caminho viável puder ser encontrado.
- Informações de instalação (Somente Ruby)
- Algo pode ter dado errado durante a instalação do agente do
AppSignal. Esta seção exibe os arquivos
install.logemkmf.log(log do Makefile).
- Algo pode ter dado errado durante a instalação do agente do
AppSignal. Esta seção exibe os arquivos
- A configuração
Environment/envestá definida. - A configuração
nameestá definida. - A configuração
push_api_keyestá definida. - A configuração
activeestá definida comotrue. - A chave Push API é validada. Uma conexão com a internet é necessária para isso.
Configuração
A configuração é fundamental. É importante, porque sem ela o agente do AppSignal não saberá qual aplicação está instrumentando e em qual ambiente. Usando as informações do diagnóstico, vemos se podemos encontrar um problema com a configuração do agente. Os agentes do AppSignal têm vários métodos de configuração. Recomendamos que você leia o tópico de configuração para começar, especificamente a configuração mínima necessária, a ordem de carregamento da configuração e as páginas de opções de configuração se você estiver enfrentando problemas.- Visão geral da configuração: Ruby / Elixir / Node.js / Python
- Configuração mínima necessária: Ruby / Elixir / Node.js / Python
- Ordem de carregamento da configuração: Ruby / Elixir / Node.js / Python
- Opções de configuração: Ruby / Elixir / Node.js / Python
Nenhum dado aparecendo
Pode haver muitas razões pelas quais uma aplicação não está sendo detectada pelo AppSignal. Somente quando os servidores do AppSignal começam a receber dados de uma aplicação ela é criada na UI no AppSignal.com; se nenhum dado for recebido, nenhuma aplicação é criada. Quando uma integração está quebrada ou não configurada corretamente, pode demorar muito para rastrear o problema. Para descartar o agente do AppSignal e seu processamento, podemos enviar “amostras de demonstração”.Logs
Quando nenhum problema é encontrado nas informações de diagnóstico, os logs do agente são a próxima coisa que você pode investigar. Os agentes do AppSignal criam arquivos de log para exibir informações úteis e problemas encontrados no próprio agente. Por padrão, os agentes registram logs de nível “info” e superiores (warning & error). Para registrar mais dados relevantes para depuração, defina a opçãolog_level (Ruby / Elixir / Python) / logLevel (Node.js) como debug.
Conteúdo dos logs
O arquivo de log do AppSignal contém informações de três componentes diferentes do AppSignal. Ele prefixará cada entrada de log com um carimbo de data/hora, nome do componente, PID do processo, indicador de nível de log e a própria mensagem de log. Os componentes do agente disponíveis são:processImplementação específica da linguagem (Ruby / Elixir).extensionExtensão em C para a implementação da linguagem. Roda no mesmo processo queprocess.agentAgente do sistema AppSignal em Rust. Um processo separado.
Análise da mensagem de log
Análise da mensagem de log do logger de arquivo
Text
Análise da mensagem de log no STDOUT
Para loggers no STDOUT, o gem Ruby do AppSignal prefixa um identificador “appsignal” reconhecível à mensagem para que mensagens específicas do AppSignal possam ser filtradas com grep na saída de log do processo pai.Text
Localização dos logs
Existem dois métodos para salvar logs da biblioteca AppSignal. Gravando os logs em um arquivo de log e imprimindo os logs no STDOUT do processo. Veja a configuraçãolog
para mais informações.
Os logs gravados em um arquivo de log não são gravados nos arquivos de log da sua aplicação, mas
têm seu próprio arquivo appsignal.log. Dependendo das permissões de um host, o
agente gravará os logs em uma localização diferente.
O gem Ruby tentará primeiro criar um arquivo de log no diretório da aplicação.
Para aplicações Ruby on Rails, ele criará um arquivo de log no diretório log/
em vez disso. Se não conseguir criar um arquivo de log, recorrerá ao
diretório /tmp do sistema. É também onde outros arquivos do agente AppSignal
são salvos.
O pacote Elixir gravará os arquivos de log no arquivo de log
/tmp/appsignal.log.
Se ele falhar completamente em encontrar uma localização gravável para salvar seus logs, ele
os exibirá no STDOUT do processo da aplicação pai. Isso também pode ser
configurado com a opção :log.
Atualmente, o agente do sistema não pode registrar no STDOUT, então sempre registrará no
arquivo appsignal.log mesmo quando o log estiver configurado para STDOUT.
Para deixar que o AppSignal informe onde gravará seus logs, veja a saída do
comando diagnose.
Rotação de logs
O AppSignal não realiza rotação de logs para seus arquivos de log. Recomendamos configurar uma ferramenta do sistema comologrotate para gerenciar o tamanho e a retenção de arquivos.
Logs do agente standalone
Se você está usando o agente standalone do AppSignal, você pode acessar os logs com o seguinte comando:Bash
sudo pode ser opcional em certos ambientes, como containers.)
Arquivos de log no Heroku
Na plataforma de hospedagem Heroku, a biblioteca de integração registrará automaticamente no STDOUT. Como o agente não pode registrar no STDOUT, ele continuará gravando no arquivoappsignal.log.
No Heroku, não é possível ver o conteúdo do arquivo de log com heroku run bash e depois ler o arquivo de log, devido à forma como os Dynos do Heroku são containerizados.
O Heroku fornece um complemento chamado “Heroku Exec” para permitir a execução de comandos no mesmo container de dyno que sua aplicação. Usando este complemento, podemos ler o arquivo de log nos dynos da sua aplicação.
O agente está rodando?
Quando uma aplicação com integração AppSignal inicia, ela inicializa o agente do sistema AppSignal. Este agente roda como um processo separado e se comunica com a aplicação. Após processar dados de instrumentação, é esse agente que envia os dados aos servidores do AppSignal, não o agente específico da linguagem. Quando o agente do sistema não está rodando, nenhum dado pode ser processado ou enviado ao AppSignal. É importante saber se o agente do sistema está rodando. Você pode encontrá-lo na lista de processos com o nomeappsignal-agent.
ps na linha de comando do seu host para ver se o agente está
rodando enquanto sua aplicação está rodando o AppSignal.
Outras perguntas
Pode haver muitos fatores em jogo quando um problema ocorre. Coisas a verificar quando o AppSignal parece não estar funcionando ou quando não há logs disponíveis.- Desde quando o problema ocorre?
- O agente foi atualizado?
- Outras bibliotecas foram atualizadas?
- O que dizem os logs do agente AppSignal com a opção
log_leveldefinida comodebug? - O Sistema Operacional é suportado?
- A “extensão” foi instalada e carregada corretamente? As respostas devem estar na saída do “diagnose”.
- A aplicação está rodando dentro de um sistema containerizado?
- Os servidores da aplicação estão sincronizados usando NTP para evitar desvio de relógio?
- Seu problema está mencionado em nossa lista de problemas conhecidos?