Stackato é uma solução PaaS privada desenvolvida pela ActiveState. O agente Python pode ser usado em conjunto com Stackato seguindo as etapas descritas abaixo.
As instruções aqui exigem que você use a versão 0.6 ou superior da imagem Stackato VM. Se você usar uma versão mais antiga da imagem Stackato VM, precisará atualizar.
Instalação do pacote
ActiveState hospeda uma cópia do pacote do agente Python em seu repositório de pacotes PyPM . Para instalar o pacote Python para o agente, adicione newrelic
ao arquivo requirements.txt em uma linha separada:
newrelic
Em seguida, você executaria o comando update
usando o cliente Stackato.
O repositório de pacotes PyPM é atualizado diariamente. Se você precisar usar uma versão mais recente do agente Python do que a disponível no repositório de pacotes PyPM, você precisará usar pip e pacotes de origem do PyPI.
Neste caso você precisará criar além do arquivo requirements.txt usado pelo PyPM, um arquivo requirements.pip como entrada para o pip. No arquivo requirements.pip você deve listar o pacote newrelic
.
Arquivo de configuração do agente
Você precisará gerar a configuração do agente Python em seu sistema local conforme descrito em Instalação do agente Python e adicioná-la ao diretório que você envia para sua instância Stackato.
A opção no arquivo de configuração do agente para especificar onde a saída do arquivo de log do agente deve ir deve ser definida como:
log_file = stderr
Inicialização do agente Python
Embora seja possível incluir manualmente o código para inicializar o agente Python no módulo Python que contém o ponto de entrada do aplicativo WSGI, conforme instruções para integração com o aplicativo Python, um método de inicialização simplificado também está disponível usando o script newrelic-admin .
No caso de você fazer isso manualmente, essas alterações normalmente serão feitas no arquivo wsgi.py que inclui seu aplicativo Web Python. Como o arquivo de configuração do agente estaria no mesmo diretório, a alteração no arquivo wsgi.py seria adicionar:
import newrelic.agentconfig_file = os.path.join(os.path.dirname(__file__), 'newrelic.ini')newrelic.agent.initialize(config_file)
Como o diretório no sistema de arquivos onde o aplicativo está instalado pode mudar, o local da configuração do agente é calculado automaticamente em relação ao local do arquivo wsgi.py .
A alternativa para adicionar código para executar a inicialização do agente manualmente é usar o script newrelic-admin .
Se você estiver definindo explicitamente no arquivo stackato.yml como inicializar seu aplicativo da web definindo a entrada web
na seção processes
:
processes: web: python app.py
Você substituiria web
para que ficasse:
processes: web: newrelic-admin run-program python app.py
Em outras palavras, você está prefixando o comando existente com newrelic-admin run-program
.
Ao mesmo tempo, você também deve adicionar uma seção env
ao arquivo stackato.yml com:
env: NEW_RELIC_CONFIG_FILE: newrelic.ini
Se você ainda não estiver substituindo a entrada web
e, em vez disso, estiver contando com o padrão da stack Stackato executando uWSGI para você, o processo será um pouco diferente. Neste caso, você precisará adicionar uma entrada web
a stackato.yml como:
processes: web: newrelic-admin run-program $PROCESSES_WEB
A seção env
também é novamente obrigatória.
Se PROCESSES_WEB
não estiver definido e isso não funcionar, indica que você está usando uma imagem de VM mais antiga e deve fazer upgrade.
Quer o método manual ou mais automatizado seja usado, se necessário para a framework da web Python que está sendo usada, o objeto de ponto de entrada do aplicativo WSGI também precisará ser empacotado adequadamente.