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

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

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Criar um problema

Agente Python e Heroku

Heroku é uma solução de plataforma como serviço (PaaS) para hospedagem de aplicativos web em várias linguagens de agente, incluindo Python. Com o agente, você pode estender o Heroku com métricas da New Relic.

Este documento descreve considerações especiais para usar o Heroku como serviço de hospedagem com agente Python.

Instale o complemento New Relic

Após implantar seu aplicativo Python no Heroku, instale o agente Python:

A instalação do complemento cria automaticamente uma conta privada New Relic e configura o acesso para hosts Heroku. O agente começará a monitorar o desempenho do aplicativo, a experiência do usuário final e o desempenho do host coletados após a instalação do complemento. Dentro de alguns minutos, os dados deverão começar a aparecer na página Resumo do APM.

Atualizar a partir de uma instalação de agente existente

Se um agente já estiver instalado, reinstale o complemento usando o comando Heroku toolbelt.

bash
$
heroku config:set NEW_RELIC_APP_NAME='Your Application Name'

Instale o agente Python

Para instalar um pacote Python de terceiros, como nosso agente Python no Heroku, use pip. O Heroku procura automaticamente um arquivo requirements.txt no diretório raiz do seu projeto. Ele instala tudo o que está listado nesse arquivo quando você envia seu projeto para o Heroku.

  1. Crie ou edite o arquivo requirements.txt , adicionando a linha:

    newrelic
  2. Django users: Modifique a entrada web do seu Procfile, prefixando o valor com newrelic-admin run-program. Por exemplo:

    web: newrelic-admin run-program gunicorn mysite.wsgi
  3. Envie seu projeto para o Heroku.

Isso instalará o pacote do agente Python com a versão mais recente listada no Python Package Index (PyPi).

Atualizar o agente Python

Heroku armazena pacotes em cache e não detecta quando uma versão mais recente do agente Python está disponível. Para forçar uma atualização:

  1. Edite o arquivo requirements.txt incluindo a versão específica do agente Python (n.n.n.n) com o nome do pacote:

    newrelic==n.n.n.n
  2. Envie seu projeto para o Heroku.

Verifique o complemento New Relic

Para verificar se o complemento New Relic foi ativado, execute:

bash
$
heroku run env | grep NEW_RELIC

Isso gera uma lista de variáveis de ambiente específicas do New Relic no Heroku. O agente Python os usa para determinar quais dados de conta e aplicativo da New Relic usar para relatar dados.

No mínimo, você deverá ver:

NEW_RELIC_LOG=stdout
NEW_RELIC_LICENSE_KEY=****************************************
NEW_RELIC_APP_NAME=Your app name

O é exclusivo da sua conta New Relic.

Solucione problemas de sua instalação

Alguns minutos após a instalação e configuração do agente, os dados deverão começar a aparecer na página Resumo do APM do seu aplicativo. Se nenhum dado aparecer, teste se as variáveis de ambiente estão sendo detectadas corretamente executando:

bash
$
heroku run newrelic-admin validate-config - stdout

Isso criará uma conexão e reportará dados de transação de teste no aplicativo Python Agent Test. Capture a saída da execução do teste e use os dados para solucionar o problema. Se precisar de mais assistência, siga os procedimentos de resolução de problemas do agente Python.

Inicialize o agente Python

Para inicializar o agente Python:

  1. Na raiz do seu projeto, encontre o Procfile
  2. Modifique a entrada web em Procfile para definir o que fazer para iniciar seu aplicativo Web Python.
  3. Consulte os exemplos a seguir para inserir newrelic-admin run-program no início do comando.
  4. Execute seu aplicativo Web Python sob o controle do script de administração do agente Python.

Mecanismo de hospedagem

Exemplo de entrada da web

Flask com o host de desenvolvimento integrado

web: newrelic-admin run-program python hello.py

Frasco com gunicórnio

web: newrelic-admin run-program gunicorn -b "0.0.0.0:$PORT" -w 3 hello:app

Django com gunicorn listado em INSTALLED_APPS

web: newrelic-admin run-program python hellodjango/manage.py run_gunicorn -b "0.0.0.0:$PORT" -w 3

Cuidado

Evite usar hosts de desenvolvimento integrados de qualquer framework web anterior ao Python versão 2.7.4 ou anterior ao Django 1.4. Em vez disso, use gunicorn ou uWSGI.

O host WSGI que usa o módulo wsgiref não era totalmente compatível com WSGI para hosts de desenvolvimento anteriores à versão 2.7.4 do Python. Isso impediu que o agente Python pudesse relatar dados corretos.

Envolvimento de aplicativo WSGI

O agente fornece encapsulamento automático do ponto do aplicativo WSGI para estas estruturas da web:

  • Bottle
  • Django
  • Flask

Se você estiver usando qualquer uma dessas estruturas da web Python, nenhuma etapa adicional será necessária.

Para outros, você deve modificar o arquivo de código Python com o ponto de entrada do aplicativo WSGI para encapsular o objeto do aplicativo WSGI com um wrapper de aplicativo WSGI. Isso iniciará o tempo para as solicitações da web recebidas pelo seu aplicativo.

Se o ponto de entrada for este...

Fazem isto...

O ponto de entrada é uma função

Embrulhe em um decorador:

import newrelic.agent
@newrelic.agent.wsgi_application()
def application(environ, start_response):
...

O ponto de entrada é uma função ou objeto importado de um módulo diferente

Envolva-o no estilo decorador pre :

import myapp
application = myapp.WSGIHandler()
application = newrelic.agent.WSGIApplicationWrapper(application)

Acompanhe as tarefas do Celery

Para registrar o tempo de execução de tarefas do Celery como tarefas em segundo plano em seu aplicativo da web, envolva a inicialização do host do Celery com o comando newrelic-admin .

Prefixe o comando de inicialização existente definido pela entrada worker em seu Procfile:

worker: newrelic-admin run-program python hellodjango/manage.py celeryd -E -B --loglevel=INFO

Depure o agente Python

Para começar a depuração, colete a saída de log do agente Python. Heroku envia a saída do agente Python para a saída padrão e a captura no log do servidor web.

Para obter acesso ao log do servidor web do Heroku, execute:

bash
$
heroku logs

Por padrão, o agente Python log no nível info. Se o suporte da New Relic solicitar um nível alternativo de registro em log, você deverá adicionar manualmente uma variável de configuração. Por exemplo, para definir a saída de registro como debug, execute:

bash
$
heroku config:add NEW_RELIC_LOG_LEVEL=debug

Seu aplicativo é reiniciado automaticamente quando você altera o nível de log.

Cuidado

O nível de log debug produz grandes quantidades de saída. Certifique-se de remover esta configuração assim que ela não for mais necessária, executando:

bash
$
heroku config:remove NEW_RELIC_LOG_LEVEL

Edite o arquivo de configuração do agente

Ao usar o complemento do Heroku com o New Relic, isso define automaticamente as principais variáveis de ambiente para o agente Python. Você também pode personalizar configurações adicionais com o arquivo de configuração do agente ou usar configuração no lado do servidor.

Não adicione configurações básicas, como chave de licença, nome do aplicativo, etc., ao arquivo de configuração. Heroku adiciona automaticamente essas configurações.

Para personalizar outras configurações, use o arquivo de configuração do agente Python com Heroku:

  1. Adicione o arquivo de configuração do agente newrelic.ini ao diretório raiz do repositório do projeto que você está enviando para o Heroku: Na seção [newrelic] , inclua a definição de configuração específica; por exemplo:

    [newrelic]
    transaction_tracer.function_trace = mydbm:connect
  2. Envie o arquivo de configuração para o seu repositório e envie a alteração para o Heroku.

  3. Use o comando heroku config:add para definir a variável de ambiente NEW_RELIC_CONFIG_FILE para seu aplicativo implantado:

    bash
    $
    heroku config:add NEW_RELIC_CONFIG_FILE=newrelic.ini

Se você estiver usando o programa wrapper newrelic-admin para lançar seu host WSGI, as configurações de sua chave de licença, nome do aplicativo etc. serão obtidas nas variáveis de ambiente definidas pelo Heroku. Quaisquer configurações adicionais definidas no arquivo de configuração do agente também serão aplicadas. Então, quando o agente se registrar no New Relic, qualquer configuração no lado do servidor também será mesclada para criar a configuração final que o agente utilizará.

Copyright © 2024 New Relic Inc.

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