• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Python agent et OpenShift

OpenShift est une solution de plateforme en tant que service (PaaS) capable d'héberger des applications Web utilisant différents langages, y compris l'agent Python .

Préparez votre application

Avant d’installer l’agent Python, assurez-vous que votre application Web Python est installée et exécutée sous OpenShift à l’aide de l’une des cartouches Python disponibles. Consultez les guides des développeurs OpenShift pour plus d’informations.

Installer l'agent Python APM

OpenShift prend en charge deux manières différentes d'installer un package Python tiers. Vous pouvez soit répertorier le package en tant que dépendance dans le setup.py de votre application Web, soit dans le fichier requirements.txt utilisé par pip.

Si vous utilisez un fichier setup.py, installez l'agent en ajoutant newrelic à la liste des modules tiers transmis à 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"],
)

Si vous utilisez pip, ajoutez la ligne suivante à requirements.txt:

newrelic

Lorsque vous transférez votre projet vers OpenShift, cela installera le package de l'agent Python. Il utilisera la dernière version de l'agent Python du miroir OpenShift du Python package Index (PyPi). Les mises à jour du miroir OpenShift de PyPi peuvent être retardées, vous devrez donc peut-être attendre jusqu'à un jour avant qu'une nouvelle sortie sur PyPi ne soit disponible sur OpenShift.

Mettre à jour l'agent Python

OpenShift mettra en cache le package et ne détectera pas quand une version plus récente de l'agent Python est disponible. Pour forcer une mise à niveau vers une version plus récente, répertoriez explicitement la version par rapport au nom du package dans le fichier setup.py ou requirements.txt et envoyez votre application. Utilisez cette syntaxe :

newrelic==A.B.C.D

Remplacez A.B.C.D par la version de l'agent Python que vous souhaitez installer.

Utiliser les variables d’environnement de l’agent Python

Pour que l'agent Python signale les données au bon compte, vous devez lui indiquer le de votre compte New Relic. Pour OpenShift, le moyen le plus sûr de fournir la clé de licence est d'utiliser une variable d'environnement configurée dans la configuration de votre application à l'aide de la commande rhc env set . Cela évite de stocker des informations sensibles dans votre référentiel GIT et fonctionne également si vous utilisez une application Web à grande échelle hébergée sur plusieurs hôtes physiques.

bash
$
rhc env set NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY -a YOUR_APP_NAME

Lors de la spécification de votre clé de licence, indiquez également Python agent à log l' où enregistrer le message de :

bash
$
rhc env set NEW_RELIC_LOG=stderr -a YOUR_APP_NAME

Pour vérifier que les variables d’environnement sont définies, exécutez :

bash
$
rhc env list -a YOUR_APP_NAME

Bien que définis, ils ne prendront effet qu'au prochain redémarrage des engrenages de l'application Web.

Tester l'installation de l'agent

Pour vérifier que le package de l'agent Python a été correctement installé et que les variables d'environnement de l'agent sont correctement définies, vous pouvez ssh accéder à l'engrenage principal de votre application et exécuter :

bash
$
newrelic-admin validate-config - stdout

Ce script d'administration créera une connexion et signalera les données de transaction de test sous l'application Python Agent Test dans votre compte.

Les données peuvent prendre jusqu'à cinq minutes pour apparaître dans l' UI. Si le message n'apparaît pas après un certain temps, capturez le résultat de l'exécution du test et utilisez les données pour résoudre le problème. Si vous avez besoin d'aide supplémentaire, obtenez de l'aide sur support.newrelic.com.

Initialiser l'agent Python

Les cartouches Python OpenShift offrent deux manières d'exécuter une application WSGI.

  • La première méthode utilise une installation Apache/mod_wsgi préconfigurée. Dans ce cas, votre point d'entrée d'application WSGI doit être défini dans le fichier wsgi.py .
  • La deuxième méthode repose sur votre demande de fourniture d'un script d'application Web Python autonome appelé app.py. Cela démarrera généralement un serveur Python WSGI intégré, avec le point d'entrée de l'application WSGI spécifié dans le fichier app.py, ou importé à partir d'un fichier de code Python distinct, tel que le fichier wsgi.py .

Quelle que soit la méthode utilisée, OpenShift contrôle le démarrage du serveur WSGI. Vous devez intégrer manuellement l'agent Python dans votre application WSGI. Vous ne pouvez pas utiliser le script wrapper newrelic-admin autour du démarrage du serveur WSGI.

Si vous utilisez l'approche Apache/mod_wsgi, ajoutez le code suivant au tout début du fichier wsgi.py :

import newrelic.agent
newrelic.agent.initialize()

Assurez-vous que cela précède toutes les autres importations de modules Python apparaissant dans le fichier wsgi.py . Vous n’avez pas besoin de fournir d’arguments à l’appel initialize(), car les informations de clé de licence et la destination de logging sont lues à partir des variables d’environnement.

Si vous utilisez un serveur Python WSGI intégré à partir de app.py, placez ces lignes tout en haut du fichier app.py, même si vous importez le point d'entrée de l'application WSGI à partir d'un fichier wsgi.py . Lorsque vous utilisez app.py avec wsgi.py, n'ajoutez pas ces lignes à wsgi.py.

Évitez d’utiliser les serveurs de développement intégrés de tout framework Web. N'utilisez pas non plus la cartouche OpenShift Python 2.6 ou les anciennes versions de Django. Cela est dû au fait que ces serveurs de développement sont souvent basés sur le serveur WSGI du module wsgiref de la bibliothèque standard Python. Le serveur WSGI du module wsgiref présentait un bug, ce qui signifiait qu'il n'était pas entièrement compatible WSGI, ce qui pouvait amener l'agent Python à signaler des données incorrectes. Ce problème avec le module wsgiref n'est résolu que dans Python 2.7.4. Le serveur WSGI intégré dans les anciennes versions de Django antérieures à Django 1.4 avait un problème similaire.

Envelopper l'application WSGI

Si vous utilisez un framework Web Python pour lequel l’agent fournit un encapsulage automatique du point d’entrée de l’application WSGI, c’est tout ce qui doit être fait. Les frameworks Web Python avec encapsulation automatique incluent Django, Flask et Bottle.

Pour d’autres, vous devez modifier le fichier de code Python avec votre point d’entrée d’application WSGI pour encapsuler l’objet d’application WSGI avec un wrapper d’application WSGI. Cela lancera le chronométrage des requests Web reçues par votre application.

Point d'entrée

Exemple de code

Le point d'entrée est une fonction

Enveloppez-le dans un décorateur.

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

Le point d'entité est une fonction ou un objet importé d'un module différent.

Enveloppez-le dans un style pré-décorateur.

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

Remplacer le nom de l'application

Par défaut, vos données sont enregistrées sous le nom d'application Python Application. Pour modifier le nom d’affichage, utilisez l’interface utilisateur APM. Cependant, du côté de l' agent, nous recommandons fortement de conserver cette valeur comme une valeur unique et immuable, indépendante des modifications apportées au nom d'affichage dans l' UI. Cela est nécessaire si vous avez l'intention d'exécuter plusieurs sites distincts sous un seul compte New Relic et que vous souhaitez que les données soient signalées séparément.

Pour remplacer le nom de l'application, utilisez la commande rhc env set :

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

Pour vérifier que la configuration a été mise à jour, exécutez :

bash
$
rhc env list -a yourappname

Recherchez ensuite :

bash
NEW_RELIC_APP_NAME=Web Site (Production)

Les modifications apportées aux variables d’environnement ne prennent effet qu’au prochain redémarrage de votre application Web.

Déboguer l'agent Python

Pour commencer le débogage, collectez la log sortie de l'agent Python . Lorsque la NEW_RELIC_LOG variable d'environnement est définie stderr sur, le message de log de l'agent Python sera capturé dans le log Python Web standard deapplication.

Pour suivre le log Web d'application sous OpenShift, exécutez :

bash
$
rhc tail -a YOUR_APP_NAME

Pour obtenir le log complet, recopiez depuis chacune de vos applications web le fichier de log:

$OPENSHIFT_PYTHON_LOG_DIR/python.log

Par défaut,Python agent log info l' se au niveau. Si l'agent nécessite un niveau de logging alternatif, vous devrez ajouter manuellement une variable d'environnement supplémentaire. Par exemple, pour définir la sortie de logging sur debug, exécutez :

bash
$
rhc env set NEW_RELIC_LOG_LEVEL=debug -a YOUR_APP_NAME

Les variables d'environnement ne prennent pas effet immédiatement, assurez-vous donc de redémarrer votre application Web.

Exécutez le logging debug uniquement lorsque cela est demandé et uniquement pendant la durée requise. Le logging de débogage peut produire beaucoup de résultats et gonflera votre fichier de log. Supprimez ce paramètre dès qu'il n'est plus nécessaire en exécutant la commande suivante, puis redémarrez votre application Web :

bash
$
rhc env unset NEW_RELIC_LOG_LEVEL -a YOUR_APP_NAME

Utilisez le fichier log pour résoudre le problème. Si vous avez besoin d'aide supplémentaire, obtenez de l'aide sur support.newrelic.com

Mettre à jour le fichier de configuration de l'agent

Avec OpenShift, la manière préférée de spécifier la clé de licence de votre compte et de définir où le logging doit aller est d'utiliser des variables d'environnement. Cela signifie qu'il n'est pas nécessaire d'utiliser un fichier de configuration d'agent pour faire fonctionner l'agent. Cependant, sans le fichier de configuration de l'agent, il n'est pas possible de personnaliser d'autres paramètres de l'agent.

Si vous activez la configuration côté serveur pour votre application, vous n'avez pas besoin d'un fichier de configuration d'agent. Cela se fait à partir du Application settings dans l'application d'interface utilisateur APM. En utilisant la configuration côté serveur, vous pouvez remplacer les paramètres principaux de l'agent. Lorsqu'une modification est apportée à un paramètre via l' UI, l' agent exécuté dans chacun des processus de votre application Web sera averti et récupérera les paramètres modifiés.

Cependant, certaines fonctionnalités agent sont incompatibles avec configuration côté serveur. Dans ces cas, utilisez un fichier de configuration d’agent envoyé avec votre application Web sur OpenShift.

Pour ajouter et activer un fichier de configuration d'agent avec OpenShift :

  1. Ajoutez le fichier de configuration de l’agent newrelic.ini au répertoire racine de votre référentiel de projet que vous transmettez à OpenShift. Cela doit contenir une section [newrelic] ainsi que uniquement le paramètre de configuration spécifique que vous devez définir. Par exemple:

    [newrelic]
    transaction_tracer.function_trace = mydbm:connect

    N'utilisez pas le fichier de configuration de l'agent pour les paramètres principaux tels que la clé de licence ou le nom de l'application, car cela remplacerait les paramètres de la variable d'environnement. Vous ne souhaitez probablement pas non plus que la clé de licence fasse partie de votre référentiel GIT, en particulier si le code source du projet est accessible au public.

    Notez également que si la configuration côté serveur est activée en même temps, tout paramètre pouvant être défini via la configuration côté serveur remplacera toujours le paramètre local. Par conséquent, utilisez ceci uniquement pour les paramètres qui ne peuvent pas être définis à l'aide de la configuration côté serveur si la configuration côté serveur est activée.

  2. Modifiez maintenant le fichier wsgi.py ou app.py où vous avez ajouté le code pour initialiser l'agent Python. Modifiez le code que vous aviez déjà ajouté à :

    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. Validez le fichier de configuration dans votre référentiel et transmettez la modification à OpenShift.

Droits d'auteur © 2025 New Relic Inc.

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