• /
  • EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Registro de agente Python

Problema

Você pode configurar o agente Python para log a saída. Essa configuração permite que o agente rastreie se está se conectando corretamente ao New Relic e se ocorre algum erro. Esta informação será útil para o suporte da New Relic se você tiver problemas.

Solução

O registro debug detalhado pode ajudar a solucionar problemas de instalação do agente Python padrão.

Importante

Alguns parceiros utilizam procedimentos diferentes:

Para ativar o registro debug :

  1. Abra seu newrelic.ini, geralmente localizado na hierarquia do seu aplicativo.

  2. Remova o comentário #log_file = /tmp/newrelic-python-agent.log. Certifique-se de ter permissões de gravação no local do log, alterando o caminho e o nome do arquivo, se necessário. Se não houver um local de arquivo adequado, você poderá definir log_file como stderr.

  3. Altere log_level para debug (de info).

    Cuidado

    O registro em debug pode gerar muitos dados muito rapidamente. monitor o tamanho do seu arquivo de log de perto, alterando log_level de volta para info conforme você conclui a resolução de problemas.

  4. Salve e feche o arquivo. Reinicie seu aplicativo para que as configurações tenham efeito.

  5. Gere alguns minutos de tráfego para seu aplicativo.

  6. Se estiver enviando seu arquivo de log para o suporte da New Relic, anexe seu newrelic.ini ao seu ticket de suporte e informe ao suporte seu fuso horário.

Importante

Quando resolver problemas com seu agente New Relic Python, certifique-se de que ele tenha sido configurado para gerar arquivos de log de nível de depuração e monitor de perto o tamanho de seu arquivo de log. Usar log_level = debug gera muitos dados muito rapidamente. Após reproduzir seu problema, retorne o arquivo de log para log_level = info.

Log em um arquivo

O agente usa o módulo de log do Python para gerar a mensagem do log. A saída do agente deve, portanto, ser levada em consideração na estratégia geral de log do seu aplicativo.

Se você não estiver usando o módulo de log, o agente fornecerá uma maneira simplificada de ativar um arquivo de log para o agente Python. Para usar isso, defina as opções log_file e log_level no arquivo de configuração do agente.

Example:

log_file = /tmp/newrelic-python-agent.log
log_level = info

O caminho fornecido para log_file deve ser gravável para o usuário com o qual seu aplicativo é executado.

Dica

Se estiver usando Apache/mod_wsgi o usuário Apache restringiu o acesso ao sistema de arquivos. Crie um diretório especial no qual o arquivo de log possa ser colocado e que seja gravável para o usuário Apache. É recomendado usar um caminho absoluto e não um caminho relativo.

O nível de log usado pode ser error, warning, info ou debug. Em circunstâncias normais, use info. Opções de depuração mais detalhadas são usadas para debug. Não use essas opções de depuração detalhadas por um longo período de tempo. Eles podem gerar saída excessiva e o manipulador de arquivo de log do módulo de registro é o manipulador de arquivo padrão e não executa nenhuma rotação de arquivo de log.

Log no erro padrão

Para alguns provedores de hospedagem, talvez não seja possível usar um arquivo de log distinto para o agente. Configure o módulo de registro para log na saída de erro padrão. Essa saída é capturada no arquivo de log de erros normal do seu mecanismo de hospedagem.

Para fazer isso no arquivo de configuração do agente:

log_file = stderr
log_level = info

O valor stdout também pode ser usado em vez de stderr.

Log todos os dados ( log de auditoria)

Se precisar registrar e visualizar informações sobre dadosall transmitidos entre o processo de monitoramento e o coletor New Relic, você poderá ativar o registro de auditoria por curtos períodos de tempo. Isso é útil, por exemplo, para depuração ou auditoria, quando você precisa de informações detalhadas sobre o que exatamente está sendo transmitido.

Solucionar problemas de conflitos do módulo de log

Se nenhum registro for capturado, poderá haver um conflito com a forma como o módulo de registro do Python está sendo inicializado e/ou configurado. Podem surgir problemas usando as seguintes funções:

Consulte a documentação de qualquer framework ou aplicativo da web em uso. Pode fornecer um mecanismo especializado para configurar o módulo de registro do Python. Por exemplo, ao usar o Django, a abordagem de dicionário para configurar o módulo de registro do Python é suportada automaticamente, com as definições sendo definidas no atributo LOGGING dentro do módulo de configurações do Django.

Para obter mais informações, consulte a documentação de configuração de log do Django .

Alternar arquivo de log do agente

Ao usar a opção log_file na configuração do agente, o manipulador de arquivo padrão do módulo de geração de registros é usado. Isso não faz nenhuma rotação do arquivo de log. A rotação do arquivo de log não é feita automaticamente, pois não saberemos que tipo de manipulador de arquivo de log rotativo você pode querer usar, além disso, os manipuladores de arquivo de log rotativo padrão fornecidos com Python não são necessariamente seguros para uma configuração de vários processos. Como tal, pode ser necessário baixar e usar um dos manipuladores de arquivo de log rotativos de terceiros ou usar um sistema de registro dedicado.

Se seu aplicativo for executado em um único processo, você poderá usar com segurança um dos manipuladores RotatingFileHandler ou TimedRotatingFileHandler fornecidos com o módulo de geração de registros. Para usar isso apenas para a saída do agente Python, inclua no início do arquivo ou módulo de script WSGI, mas antes da importação do módulo newrelic , o seguinte:

_LOG_FORMAT = (
"%(asctime)s (%(process)d/%(threadName)s)" " %(name)s %(levelname)s - %(message)s"
)
_logger = logging.getLogger("newrelic")
_handler = logging.handlers.TimedRotatingFileHandler(
"agent.log", when="midnight", backupCount=7
)
_formatter = logging.Formatter(_LOG_FORMAT)
_handler.setFormatter(_formatter)
_logger.addHandler(_handler)
_logger.setLevel(logging.INFO)

Esse código acessa a instância do agente raiz newrelic , anexa o manipulador de arquivo de log rotativo a ela e define o nível de log para mensagens a serem enviadas para esse arquivo de log. Também mostramos como configurar o formato da mensagem do log, mas isso é opcional.

Se o módulo de registro como um todo for inicializado, qualquer saída log será propagada e registrada por qualquer manipulador associado ao agente raiz, incluindo possivelmente o erro padrão. Para evitar duplicatas, configure o manipulador de log para o agente root.

O código acima também pode ser simplificado usando a função logging.fileConfig() e um arquivo de configuração. Para obter mais detalhes sobre o uso de um arquivo de configuração, consulte a documentação do módulo de log do Python em Logging configuração.

Girar log na configuração de vários processos

Os manipuladores rotativos de arquivo de log fornecidos no módulo de registro padrão não são totalmente seguros para uso em uma configuração de servidor multiprocessos. Os problemas que podem ocorrer são a mistura de mensagens de vários processos e tentativas de vários processos de executar a rotação do arquivo de log ao mesmo tempo.

Para um mecanismo de rotação de arquivo de log mais robusto, use um manipulador de log de terceiros em conjunto com o módulo de log do Python.

Uma dessas implementações disponíveis no PyPi é:

Para uma solução mais complexa, você também pode considerar um serviço de registro como:

Consulte também a lista de outros manipuladores fornecidos como padrão no módulo de registro do Python, pois aqueles para envio para um soquete ou postagem para uma URL HTTP também podem ser soluções razoáveis em algumas circunstâncias.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.