Ce document explique une installation de base de l'agent pour l'application Java dans un conteneur Docker . Nous discutons de la configuration requise et explorons également certaines configurations facultatives, notamment :
- Comment utiliser des New Relic configuration fichiers identiques pour chaque conteneur, quel que soit l'environnement dans lequel les conteneurs sont utilisés
- Comment utiliser la couche Docker lorsque chaque agent dans chaque environnement nécessite des données de configuration légèrement différentes
- Comment désactiver l'agent New Relic dans certains environnements et l'activer dans d'autres
Bien que nous ne discutions pas ici des options avancées, vous pouvez installer l'agent Java dans les volumes Docker et utiliser votre image de conteneur Docker dans d'autres logiciels tels que Swarm, ECS, AKS, EKS, OpenShift et Kubernetes. Nos exemples Docker font référence à Tomcat, donc si vous utilisez un autre serveur application, reportez-vous à la documentation de votre fournisseur.
Obtenir l'agent Java
Téléchargez newrelic-java.zip
en curl
utilisant, Invoke-WebRequest
(PowerShell) ou l'UI de New Relic :
Configurer le répertoire d'installation
Vous pouvez décompresser le fichier newrelic-java.zip
où bon vous semble. Dans les sections suivantes, nous supposons que vous l'avez extrait dans le répertoire de travail actuel, ce qui place les fichiers dont nous avons besoin dans ./newrelic
.
Modifier le script de démarrage
Le script de démarrage qui contient la commande pour démarrer votre serveur application doit inclure l'argument intégré de Java -javaagent
. Nous vous recommandons de définir cet argument avec la variable d'environnement JAVA_OPTS
. La valeur de cet argument doit contenir l’emplacement où vous ADD
le fichier jar de l’agent Java APM vers l’image.
Par exemple, avec Tomcat, utilisez des commandes comme celles-ci dans le Dockerfile
:
RUN mkdir -p /usr/local/tomcat/newrelicADD ./newrelic/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jarENV JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/tomcat/newrelic/newrelic.jar"
Définir la configuration agent
Par défaut, le comportement de l'agent est contrôlé par les entrées de configuration dans newrelic.yml
, qui se trouve généralement dans le même répertoire que l'agent. Cette section explique comment remplacer ces newrelic.yml
configurations en utilisant des variables d'environnement ou des propriétés système Java dans le Dockerfile
.
Avant d'examiner une configuration spécifique, voici comment charger newrelic.yml
en utilisant Dockerfile
:
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
Pour une de Docker installation base, complétez ces configurations :
- Nom de l'application
- clé de licence
- Logs
- Environnement (optionnel)
- Agent activé (facultatif)
Nom de l'application
Le nom de l'application est une configuration que vous définissez pour identifier votre application dans New Relic.
Conseil
Vous pouvez réutiliser un nom d'application pour plusieurs applications remplissant le même rôle afin que toutes les données de ces applications soient regroupées dans la même application logique dans New Relic. Pour plus de détails sur les options de regroupement supplémentaires, voir Utiliser plusieurs noms pour une application.
Remplacez MY_APP_NAME
par le nom de votre application dans l'une de ces commandes Dockerfile
:
Option | Commande |
---|---|
Variable d'environnement |
|
Propriété du système Java |
|
Après avoir démarré le conteneur, le nom de votre application apparaît dans New Relic.
clé de licence
Cette configuration est requise pour que vous puissiez signaler des données à votre compte New Relic.
Pour copier votre clé de licence :
Accédez à l'UI de clé d'API et obtenez un .
Dans l'une de ces commandes
Dockerfile
, remplacezMY_LICENSE_KEY
par votre clé de licence :Option
Commande
Variable d'environnement
ENV NEW_RELIC_LICENSE_KEY="MY_LICENSE_KEY"Propriété du système Java
ENV JAVA_OPTS="$JAVA_OPTS -Dnewrelic.config.license_key='MY_LICENSE_KEY'"
Logs
Par défaut, les journaux sont écrits dans le répertoire des journaux par rapport à l'emplacement de newrelic.jar
. Assurez-vous que le compte utilisateur qui démarre votre serveur application a également le droit d'effectuer des tâches telles que :
- Création du répertoire des journaux.
- Création et ajout au fichier de log dans ce répertoire.
Voici un exemple de Dockerfile où tomcat
est l'utilisateur qui démarre Tomcat :
RUN mkdir -p /usr/local/tomcat/newrelic/logsRUN chown -R tomcat:tomcat /usr/local/tomcat/newrelic/logs
Vous pouvez également envoyer le log à STDOUT
en ajoutant l’un des éléments suivants au Dockerfile :
Option | Commande |
---|---|
Variable d'environnement |
|
Propriété du système Java |
|
Environnement (optionnel)
Vous pouvez transmettre une propriété Java ou une variable d'environnement pour déterminer laquelle des sections spécifiques à l'environnement l'agent utilise dans newrelic.yml
. Utilisez cette approche si vous préférez que le fichier newrelic.yml
contrôle la configuration spécifique à l'environnement au lieu de transmettre toute la configuration via Docker.
Voici un exemple Dockerfile
de transmission de la propriété système Java newrelic.environment
via Docker pour utiliser la valeur personnalisée dev
dans la section d'environnement de newrelic.yml
:
En utilisant la forme shell de l'instruction CMD, incluez une référence à une nouvelle variable d'environnement de votre choix (par exemple,
ENV
) :CMD java -Dnewrelic.environment=$ENV -jar myjar.jarDans votre ligne de commande
docker run
, incluez un argument pour définir la variable d'environnement dans le conteneur :bash$docker run -it -e "ENV=dev" myDockerImage
Important
Si vous ne spécifiez pas de valeur pour newrelic.environment
, l'agent suppose qu'il s'exécute dans votre environnement de production et utilise les valeurs du corps principal du fichier de configuration.
agent activé (facultatif)
Cette configuration contrôle si l'agent est activé. Disons que vous voulez la même image Docker pour chaque installation. Cependant, vous ne souhaitez pas exécuter l'agent de New Relic à chaque fois qu'un ingénieur lance une application de test, car vous ne souhaitez pas augmenter votre instance nombre .
Ce problème peut être résolu en utilisant la propriété système Java newrelic.environment
.
- Dans le corps principal de
newrelic.yml
, désactivez l'agent Java en définissantagent_enabled: false
. - Dans les sections d’environnement spécifiques de
newrelic.yml
, définissezagent_enabled: true
.
Ensuite, vous pouvez exécuter un agent spécifique en spécifiant l’environnement au moment de l’exécution.
Exemples supplémentaires de fichiers Dockerfile Tomcat
Prochaines étapes
Maintenant que vous disposez d’une installation d’agent de base dans Docker, voici quelques étapes supplémentaires à prendre en compte :
- Consultez les autres configurations de l’agent.
- Lisez un article détaillé du forum d’assistance sur Docker et New Relic.