Heroku es una solución de plataforma como servicio (PaaS) para alojar aplicaciones web en varios lenguajes de agentes, incluido Python. Con el agente podrás ampliar Heroku con métrica de New Relic.
Este documento describe consideraciones especiales para usar Heroku como servicio de alojamiento con el agente Python.
Instale el complemento New Relic
Después de implementar su aplicación Python en Heroku, instale el agente Python:
La instalación del complemento crea automáticamente una cuenta privada de New Relic y configura el acceso para los hosts de Heroku. El agente comenzará a monitorear el rendimiento de la aplicación, la experiencia del usuario final y el rendimiento del host recopilados después de instalar el complemento. En unos minutos, los datos deberían comenzar a aparecer en su página Resumen de APM.
Actualizar desde una instalación de agente existente
Si ya hay un agente instalado, reinstale el complemento usando el comando del cinturón de herramientas de Heroku.
$heroku config:set NEW_RELIC_APP_NAME='Your Application Name'
Instalar el agente Python
Para instalar un paquete Python de terceros, como nuestro agente Python en Heroku, use pip. Heroku busca automáticamente un archivo requirements.txt en el directorio raíz de su proyecto. Instala todo lo que figura en ese archivo cuando envía su proyecto a Heroku.
Cree o edite el archivo
requirements.txt
, agregando la línea:newrelicDjango users: Modifique la entrada
web
de suProcfile
, anteponiendo el valor connewrelic-admin run-program
. Por ejemplo:web: newrelic-admin run-program gunicorn mysite.wsgiEnvía tu proyecto a Heroku.
Esto instalará el paquete del agente Python con la última versión que figura en el Índice de paquetes Python (PyPi).
Actualizar el agente Python
Heroku almacena en caché los paquetes y no detecta cuando hay disponible una versión más nueva del agente Python. Para forzar una actualización:
Edite el archivo
requirements.txt
incluyendo la versión específica del agente Python (n.n.n.n
) con el nombre del paquete:newrelic==n.n.n.nEnvía tu proyecto a Heroku.
Verifique el complemento New Relic
Para verificar que el complemento New Relic se haya habilitado, ejecute:
$heroku run env | grep NEW_RELIC
Esto genera una lista de variables de entorno específicas de New Relic en Heroku. El agente de Python los utiliza para determinar qué cuenta de New Relic y qué datos de aplicación utilizar para generar informes.
Como mínimo, deberías ver:
NEW_RELIC_LOG=stdoutNEW_RELIC_LICENSE_KEY=****************************************NEW_RELIC_APP_NAME=Your app name
El es exclusivo de su cuenta New Relic.
Solucionar problemas de su instalación
A los pocos minutos de instalar y configurar el agente, los datos deberían comenzar a aparecer en la página Resumen de APM de su aplicación. Si no aparecen datos, pruebe que las variables de entorno se estén detectando correctamente ejecutando:
$heroku run newrelic-admin validate-config - stdout
Esto creará una conexión e informará los datos de la transacción de prueba en la aplicación Python Agent Test. Capture el resultado de la ejecución de la prueba y utilice los datos para solucionar el problema. Si necesita más ayuda, siga los procedimientos de resolución de problemas del agente Python.
Inicializar el agente Python
Para inicializar el agente Python:
- Desde la raíz de su proyecto, busque el
Procfile
- Modifique la entrada
web
en suProcfile
para definir qué hacer para iniciar su aplicación web Python. - Consulte los siguientes ejemplos para insertar
newrelic-admin run-program
al inicio del comando. - Ejecute su aplicación web Python bajo el control del script de administración del agente Python.
Mecanismo de alojamiento | Ejemplo de entrada web |
---|---|
Flask con el host de desarrollo incorporado |
|
Frasco con gunicorn |
|
Django con gunicorn listado en |
|
Advertencia
Evite el uso de hosts de desarrollo integrados de cualquier framework web anterior a la versión 2.7.4 de Python o anterior a Django 1.4. En su lugar, utilice gunicorn o uWSGI.
El host WSGI que utilizaba el módulo wsgiref no era totalmente compatible con WSGI para los hosts de desarrollo anteriores a la versión 2.7.4 de Python. Esto impidió que el agente Python pudiera informar datos correctos.
Envoltura de aplicaciones WSGI
El agente proporciona un ajuste automático del punto de aplicación WSGI para estos marcos web:
- Bottle
- Django
- Flask
Si está utilizando alguno de estos marcos web de Python, no se requieren pasos adicionales.
Para otros, debe modificar el archivo de código Python con el punto de entrada de su aplicación WSGI para encapsular el objeto de la aplicación WSGI con un contenedor de aplicación WSGI. Esto iniciará el tiempo para las solicitudes web recibidas por su aplicación.
Si el punto de entrada es este... | Hacer esto... |
---|---|
El punto de entrada es una función. | Envuélvelo en un decorador:
|
El punto de entrada es una función u objeto importado de un módulo diferente. | Envuélvalo en estilo decorador
|
Seguimiento de tareas de Celery
Para registrar el tiempo de ejecución de las tareas de Celery como tareas en segundo plano en su aplicación web, complete el inicio del host de Celery con el comando newrelic-admin
.
Anteponga el comando de inicio existente definido por la entrada worker
en su Procfile
:
worker: newrelic-admin run-program python hellodjango/manage.py celeryd -E -B --loglevel=INFO
Depurar el agente Python
Para comenzar la depuración, recopile la salida log del agente Python. Heroku envía la salida del agente Python a la salida estándar y la captura en el log del servidor web.
Para obtener acceso al log del servidor web de Heroku, ejecute:
$heroku logs
De forma predeterminada, el agente Python iniciará log en el nivel info
. Si el soporte de New Relic solicita un nivel alternativo de registro, debe agregar manualmente una variable de configuración. Por ejemplo, para configurar la salida del registro en debug
, ejecute:
$heroku config:add NEW_RELIC_LOG_LEVEL=debug
Su aplicación se reinicia automáticamente cuando cambia el nivel de registros.
Advertencia
El nivel de registros debug
produce grandes cantidades de resultados. Asegúrese de eliminar esta configuración tan pronto como ya no sea necesaria, ejecutando:
$heroku config:remove NEW_RELIC_LOG_LEVEL
Editar el archivo de configuración del agente
Cuando se utiliza el complemento de Heroku con New Relic, esto establece automáticamente variables de entorno clave para el agente Python. También puede personalizar configuraciones adicionales con el archivo de configuración del agente o usar la configuración del lado del servidor.
No agregue configuraciones principales como la clave de licencia, el nombre de la aplicación, etc. al archivo de configuración. Heroku agrega automáticamente estas configuraciones.
Para personalizar otras configuraciones, use el archivo de configuración del agente Python con Heroku:
Agregue el archivo de configuración del agente
newrelic.ini
al directorio raíz del repositorio de su proyecto que está subiendo a Heroku: en la sección[newrelic]
, incluya la configuración específica; Por ejemplo:[newrelic]transaction_tracer.function_trace = mydbm:connectConfirme el archivo de configuración en su repositorio y envíe el cambio a Heroku.
Utilice el comando
heroku config:add
para configurar la variable de entornoNEW_RELIC_CONFIG_FILE
para su aplicación desplegar:bash$heroku config:add NEW_RELIC_CONFIG_FILE=newrelic.ini
Si está utilizando el programa contenedor newrelic-admin para lanzar su host WSGI, la configuración de su clave de licencia, nombre de la aplicación, etc., se obtendrá de las variables de entorno establecidas por Heroku. También se aplicará cualquier configuración adicional que establezca en el archivo de configuración del agente. Luego, cuando el agente se registre en New Relic, cualquier configuración del lado del servidor también se fusionará para crear la configuración final que utilizará el agente.