• 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 OpenShift

OpenShift é uma solução de plataforma como serviço (PaaS) capaz de hospedar aplicativos web usando diversas linguagens, incluindo o agente Python.

Prepare seu aplicativo

Antes de instalar o agente Python, certifique-se de que seu aplicativo Web Python esteja instalado e em execução no OpenShift usando um dos cartuchos Python disponíveis. Consulte os guias dos desenvolvedores do OpenShift para obter mais informações.

Instale o agente Python do APM

OpenShift oferece suporte a duas maneiras diferentes de instalar pacotes Python de terceiros. Você pode listar o pacote como uma dependência no setup.py do seu aplicativo da web ou no arquivo requirements.txt usado por pip.

Se você estiver usando um arquivo setup.py , instale o agente adicionando newrelic à lista de módulos de terceiros passados para install_requires:

from setuptools import setup
setup(name='YourAppName',
version='1.0',
description='OpenShift App',
author='Your Name',
author_email='example@example.com',
url='https://www.python.org/community/sigs/current/distutils-sig',
install_requires=['Flask>=0.7.2', 'MarkupSafe', 'newrelic'],
)

Se você estiver usando pip, adicione a seguinte linha a requirements.txt:

newrelic

Quando você envia seu projeto para o OpenShift, isso instalará o pacote do agente Python. Ele usará a versão mais recente do agente Python do espelho OpenShift do Python Package Index (PyPi). As atualizações do espelho OpenShift do PyPi podem ser atrasadas, então você pode ter que esperar até um dia antes que uma nova versão do PyPi esteja disponível no OpenShift.

Atualizar o agente Python

O OpenShift armazenará pacotes em cache e não detectará quando uma versão mais recente do agente Python estiver disponível. Para forçar um upgrade para uma versão mais recente, liste explicitamente a versão em relação ao nome do pacote no arquivo setup.py ou requirements.txt e envie seu aplicativo. Use esta sintaxe:

newrelic==A.B.C.D

Substitua A.B.C.D pela versão do agente Python que você deseja instalar.

Use variáveis de ambiente do agente Python

Para que o agente Python relate dados para a conta correta, você precisa informar a ele o da sua conta New Relic. Para o OpenShift, a maneira mais segura de fornecer a chave de licença é usar uma variável de ambiente configurada na configuração do seu aplicativo usando o comando rhc env set . Isso evita o armazenamento de informações confidenciais em seu repositório GIT e também funciona se você estiver usando um aplicativo da web dimensionado hospedado em vários hosts físicos.

rhc env set NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY -a YOUR_APP_NAME

Ao especificar sua chave de licença, informe também ao agente Python onde gravar a mensagem do log:

rhc env set NEW_RELIC_LOG=stderr -a YOUR_APP_NAME

Para verificar se as variáveis de ambiente estão sendo definidas, execute:

rhc env list -a YOUR_APP_NAME

Embora definidos, eles só entrarão em vigor na próxima vez que as engrenagens do aplicativo da web forem reiniciadas.

Teste a instalação do agente

Para testar se o pacote do agente Python foi instalado corretamente e se as variáveis de ambiente do agente estão sendo definidas corretamente, você pode ssh entrar na engrenagem principal do seu aplicativo e executar:

newrelic-admin validate-config - stdout

Este script administrativo criará uma conexão e reportará dados de transação de teste no aplicativo Python Agent Test em sua conta.

Os dados podem levar até cinco minutos para aparecer na interface. Se não aparecer depois de algum tempo, capture a saída da execução do teste e use os dados para solucionar o problema. Se precisar de mais assistência, obtenha suporte em support.newrelic.com.

Inicialize o agente Python

Os cartuchos OpenShift Python fornecem duas maneiras de executar um aplicativo WSGI.

  • O primeiro método usa uma instalação pré-configurada do Apache/mod_wsgi. Neste caso, o ponto de entrada do seu aplicativo WSGI deve ser definido no arquivo wsgi.py .
  • O segundo método depende de você fornecer um script de aplicativo Web Python independente chamado app.py. Normalmente, isso iniciará um servidor WSGI Python integrado, com o ponto de entrada do aplicativo WSGI especificado no arquivo app.py ou será importado de um arquivo de código Python separado, como o arquivo wsgi.py .

Para qualquer um dos métodos, o OpenShift controla a inicialização do servidor WSGI. Você deve integrar manualmente o agente Python ao seu aplicativo WSGI. Não é possível usar o script wrapper newrelic-admin na inicialização do servidor WSGI.

Se você estiver usando a abordagem Apache/mod_wsgi, adicione o seguinte código bem no início do arquivo wsgi.py :

import newrelic.agent
newrelic.agent.initialize()

Certifique-se de que isso precede qualquer outra importação de módulo Python que apareça no arquivo wsgi.py . Não é necessário fornecer nenhum argumento para a chamada initialize() , porque as informações da chave de licença e o destino da criação de log são lidos nas variáveis de ambiente.

Se você estiver usando um servidor WSGI Python integrado de app.py, coloque essas linhas na parte superior do arquivo app.py , mesmo se você importar o ponto de entrada do aplicativo WSGI de um arquivo wsgi.py . Ao usar app.py com wsgi.py, não adicione essas linhas a wsgi.py.

Evite usar os servidores de desenvolvimento integrados de qualquer framework web. Além disso, não use o cartucho OpenShift Python 2.6 ou versões mais antigas do Django. Isso ocorre porque esses servidores de desenvolvimento geralmente são baseados no servidor WSGI do módulo wsgiref da biblioteca padrão do Python. O servidor WSGI do módulo wsgiref tinha um bug, o que significava que não era totalmente compatível com WSGI e isso faria com que o agente Python relatasse dados incorretos. Este problema com o módulo wsgiref foi corrigido apenas no Python 2.7.4. O servidor WSGI integrado em versões mais antigas do Django anteriores ao Django 1.4 tinha um problema semelhante.

Envolva o aplicativo WSGI

Se você estiver usando uma framework web Python para a qual o agente fornece encapsulamento automático do ponto de entrada do aplicativo WSGI, isso é tudo o que precisa ser feito. A estrutura web Python com empacotamento automático inclui Django, Flask e Bottle.

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.

Ponto de entrada

Código de exemplo

O ponto de entrada é uma função

Envolva-o em um decorador.

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

Enty point é uma função ou objeto importado de um módulo diferente.

Envolva-o em estilo pré-decorador.

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

Substituir o nome do aplicativo

Por padrão, seus dados são registrados com o nome do aplicativo Python Application. Para alterar o nome de exibição, use a interface do usuário do APM. No entanto, do lado do agente, é altamente recomendável mantê-lo como um valor único e imutável, independente de alterações no nome de exibição na interface. Isso é necessário se você pretende administrar vários sites distintos na mesma conta New Relic e deseja que os dados sejam relatados separadamente.

Para substituir o nome do aplicativo, use o comando rhc env set :

rhc env set NEW_RELIC_APP_NAME='Web Site (Production)' -a yourappname

Para verificar se a configuração foi atualizada, execute:

rhc env list -a yourappname

Então procure:

NEW_RELIC_APP_NAME=Web Site (Production)

As alterações nas variáveis de ambiente só terão efeito na próxima vez que você reiniciar o seu aplicativo da web.

Depure o agente Python

Para começar a depuração, colete a saída de log do agente Python. Quando a variável de ambiente NEW_RELIC_LOG for definida como stderr, a mensagem do log do agente Python será capturada no web log padrão do aplicativo Python.

Para seguir o log da web do aplicativo no OpenShift, execute:

rhc tail -a YOUR_APP_NAME

Para obter o log completo, copie de cada um dos seus aplicativos da web o arquivo de log:

$OPENSHIFT_PYTHON_LOG_DIR/python.log

Por padrão, o agente Python log no nível info. Se o agente exigir um nível alternativo de log, você precisará adicionar manualmente uma variável de ambiente adicional. Por exemplo, para definir a saída de registro como debug, execute:

rhc env set NEW_RELIC_LOG_LEVEL=debug -a YOUR_APP_NAME

As variáveis de ambiente não entram em vigor imediatamente, portanto, reinicie o equipamento do seu aplicativo da web.

Execute a geração de registros debug somente quando solicitado e somente pelo tempo necessário. O log de depuração pode produzir muitos resultados e sobrecarregar seu arquivo de log. Remova essa configuração assim que ela não for mais necessária, executando o seguinte comando e, em seguida, reinicie o seu aplicativo da web:

rhc env unset NEW_RELIC_LOG_LEVEL -a YOUR_APP_NAME

Use o arquivo de log para solucionar o problema. Se precisar de mais assistência, obtenha suporte em support.newrelic.com

Atualizar arquivo de configuração do agente

Com o OpenShift, a maneira preferida de especificar a chave de licença da sua conta e definir para onde deve ir o registro é usar variáveis de ambiente. Isso significa que não é necessário usar um arquivo de configuração do agente para que o agente funcione. Entretanto, sem o arquivo de configuração do agente, não é possível personalizar outras configurações do agente.

Se você ativar a configuração no lado do servidor para seu aplicativo, não precisará de um arquivo de configuração do agente. Isso é feito a partir de Application settings no aplicativo de interface do usuário do APM. Usando a configuração no lado do servidor você pode substituir as configurações principais do agente. Quando uma alteração é feita em uma configuração por meio da interface, o agente em execução em cada um dos processos do seu aplicativo da web será notificado e coletará as configurações alteradas.

Porém, alguns recursos do agente são incompatíveis com a configuração no lado do servidor. Nesses casos, use um arquivo de configuração do agente enviado com seu aplicativo da web para o OpenShift.

Para adicionar e ativar um arquivo de configuração de agente com OpenShift:

  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 OpenShift. Ele deve conter uma seção [newrelic] junto com apenas a definição de configuração específica que você precisa definir. Por exemplo:

    [newrelic]
    transaction_tracer.function_trace = mydbm:connect

    Não use o arquivo de configuração do agente para configurações principais, como a chave de licença ou o nome do aplicativo, pois isso substituirá as configurações da variável de ambiente. Você provavelmente também não deseja a chave de licença como parte do seu repositório GIT, especialmente se o código-fonte do projeto estiver disponível publicamente.

    Observe também que se a configuração no lado do servidor estiver habilitada ao mesmo tempo, qualquer configuração que possa ser definida por meio da configuração no lado do servidor sempre substituirá a configuração local. Portanto, use isto apenas para configurações que não podem ser definidas usando a configuração no lado do servidor se a configuração no lado do servidor estiver habilitada.

  2. Agora modifique o arquivo wsgi.py ou app.py onde você adicionou o código para inicializar o agente Python. Altere o código que você já adicionou:

    import os
    import newrelic.agent
    repo_dir = os.environ['OPENSHIFT_REPO_DIR']
    config_file = os.path.join(repo_dir, 'newrelic.ini')
    newrelic.agent.initialize(config_file)
  3. Confirme o arquivo de configuração em seu repositório e envie a alteração para o OpenShift.

Copyright © 2024 New Relic Inc.

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