Este documento explica una instalación básica de la aplicación agente para Java en un contenedor docker . Analizamos la configuración requerida y también exploramos algunas configuraciones opcionales, que incluyen:
- Cómo utilizar archivos de configuración New Relic idénticos para cada contenedor, independientemente del entorno donde se utilicen los contenedores
- Cómo utilizar la capa docker cuando cada agente en cada entorno necesita datos de configuración ligeramente diferentes
- Cómo deshabilitar el agente New Relic en algunos entornos y habilitarlo en otros
Aunque no analizamos las opciones avanzadas aquí, puede instalar el agente de Java en volúmenes docker y usar la imagen del contenedor docker en otro software como Swarm, ECS, AKS, EKS, OpenShift y Kubernetes. Nuestros ejemplos docker se refieren a Tomcat, por lo que si está utilizando otro servidor de aplicaciones, consulte la documentación de su proveedor.
Obtener el agente de Java
Descargue newrelic-java.zip
usando curl
, Invoke-WebRequest
(PowerShell) o la UI de New Relic:
Configurar el directorio de instalación
Puede descomprimir el archivo newrelic-java.zip
donde le resulte más cómodo. En las secciones siguientes asumimos que lo extrajo en el directorio de trabajo actual, lo que coloca los archivos que necesitamos en ./newrelic
.
Modificar script de inicio
El script de inicio que contiene el comando para iniciar su servidor de aplicaciones debe incluir el argumento integrado de Java -javaagent
. Le recomendamos que establezca este argumento con la variable de entorno JAVA_OPTS
. El valor de ese argumento debe contener la ubicación donde ADD
el archivo jar del agente Java APM a la imagen.
Por ejemplo, con Tomcat, utilice comandos como estos en 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"
Establecer configuración del agente
De forma predeterminada, el comportamiento del agente se controla mediante entradas de configuración en newrelic.yml
, que normalmente se encuentra en el mismo directorio que el agente. Esta sección explica cómo anular esta configuración newrelic.yml
mediante el uso de variables de entorno o propiedades del sistema Java en Dockerfile
.
Antes de ver algunas configuraciones específicas, aquí se explica cómo cargar newrelic.yml
usando Dockerfile
:
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
Para una instalación básica docker , complete esta configuración:
- Nombre de la aplicación
- Clave de licencia
- Registro
- Medio ambiente (opcional)
- agente habilitado (opcional)
Nombre de la aplicación
El nombre de la aplicación es una configuración que usted establece para identificar su aplicación en New Relic.
Sugerencia
Puede reutilizar el nombre de una aplicación para varias aplicaciones que cumplen la misma función, de modo que todos los datos de esas aplicaciones se acumulen en la misma aplicación lógica en New Relic. Para obtener más detalles sobre opciones de agrupación adicionales, consulte Usar varios nombres para una aplicación.
Reemplace MY_APP_NAME con el nombre de su aplicación en uno de estos Dockerfile
comandos:
Opción | Dominio |
---|---|
Ambiente |
|
Sistema java |
|
Después de iniciar el contenedor, el nombre de su aplicación aparece en New Relic.
Clave de licencia
Esta configuración es necesaria para que usted pueda reportar datos a su cuenta New Relic.
Para copiar su clave de licencia:
Vaya a la clave de API UI y obtenga un .
En uno de estos
Dockerfile
comandos, reemplace MY_LICENSE_KEY con su clave de licencia:Opción
Dominio
Ambiente
variableENV NEW_RELIC_LICENSE_KEY="MY_LICENSE_KEY"Sistema java
propiedadENV JAVA_OPTS="$JAVA_OPTS -Dnewrelic.config.license_key='MY_LICENSE_KEY'"
Registro
De forma predeterminada, los registros se escriben en el directorio de registros relativo a la ubicación de newrelic.jar
. Asegúrese de que la cuenta de usuario que inicia su servidor de aplicaciones también tenga derecho a realizar tareas como:
- Creando el directorio de registro.
- Creando y añadiendo al archivo de log en ese directorio.
A continuación se muestra un ejemplo de Dockerfile donde tomcat
es el usuario que inicia Tomcat:
RUN mkdir -p /usr/local/tomcat/newrelic/logsRUN chown -R tomcat:tomcat /usr/local/tomcat/newrelic/logs
También puede enviar el registro a STDOUT
agregando uno de los siguientes al Dockerfile:
Opción | Dominio |
---|---|
Ambiente |
|
Sistema java |
|
Medio ambiente (opcional)
Puede pasar una propiedad Java o una variable de entorno para determinar cuál de las secciones específicas del entorno utiliza el agente en newrelic.yml
. Utilice este enfoque si prefiere tener la configuración específica del entorno de control de archivos newrelic.yml
en lugar de pasar toda la configuración a través de docker.
A continuación se muestra un Dockerfile
ejemplo de cómo pasar la newrelic.environment
propiedad del sistema Java a través de docker para usar el valor personalizado dev
en la sección de entorno de newrelic.yml
:
Usando la forma de shell de la instrucción CMD, incluya una referencia a una nueva variable de entorno que elija (por ejemplo,
ENV
):CMD java -Dnewrelic.environment=$ENV -jar myjar.jarEn su línea de comando
docker run
, incluya un argumento para establecer la variable de entorno en el contenedor:docker run -it -e "ENV=dev" myDockerImage
Importante
Si no especifica un valor para newrelic.environment
, el agente asume que se está ejecutando en su entorno de producción y utiliza los valores del cuerpo principal del archivo de configuración.
Agente habilitado (opcional)
Esta configuración controla si el agente está habilitado. Supongamos que desea la misma imagen docker para cada instalación. Sin embargo, no desea ejecutar el agente New Relic cada vez que un ingeniero inicia una aplicación de prueba porque no desea aumentar el recuento de instancias.
Este problema se puede resolver utilizando la propiedad del sistema Java newrelic.environment
.
- En el cuerpo principal de
newrelic.yml
, deshabilite el agente de Java configurandoagent_enabled: false
. - En secciones de entorno específicas de
newrelic.yml
, establezcaagent_enabled: true
.
Luego, puede ejecutar un agente específico especificando el entorno en tiempo de ejecución.
Ejemplos adicionales de Tomcat Dockerfile
Próximos pasos
Ahora que tiene una instalación básica del agente en docker, aquí hay algunos pasos adicionales a considerar:
- Revise otra configuración para el agente.
- Lea una publicación detallada en el foro de soporte sobre Docker y New Relic.