Este documento explica uma instalação básica do aplicativo agente para Java em um contêiner Docker . Discutimos a configuração necessária e também exploramos algumas configurações opcionais, incluindo:
- Como utilizar arquivos de configuração New Relic idênticos para cada contêiner, independente do ambiente onde os containers são utilizados
- Como usar a camada Docker quando cada agente em cada ambiente precisa de dados de configuração ligeiramente diferentes
- Como desabilitar o agente New Relic em alguns ambientes e habilitá-lo em outros
Embora não discutamos opções avançadas aqui, você pode instalar o agente Java em volumes Docker e usar a imagem do contêiner Docker em outro software, como Swarm, ECS, AKS, EKS, OpenShift e Kubernetes. Nossos exemplos Docker referem-se ao Tomcat, portanto, se você estiver usando outro servidor de aplicativos, consulte a documentação do seu fornecedor.
Obtenha o agente Java
Baixe newrelic-java.zip
usando curl
, Invoke-WebRequest
(PowerShell) ou a interface New Relic:
Configure o diretório de instalação
Você pode descompactar o arquivo newrelic-java.zip
onde for conveniente para você. Nas seções subsequentes, presumimos que você o extraiu no diretório de trabalho atual, que coloca os arquivos necessários em ./newrelic
.
Modificar script de inicialização
O script de inicialização que contém o comando para iniciar o servidor do aplicativo deve incluir o argumento integrado do Java -javaagent
. Recomendamos que você defina esse argumento com a variável de ambiente JAVA_OPTS
. O valor desse argumento deve conter o local onde você ADD
transfere o arquivo jar do agente Java APM para a imagem.
Por exemplo, com o Tomcat, use comandos como estes no 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"
Definir configuração do agente
Por padrão, o comportamento do agente é controlado por entradas de configuração em newrelic.yml
, que normalmente está localizado no mesmo diretório que o agente. Esta seção explica como substituir essas configurações newrelic.yml
usando variáveis de ambiente ou propriedades do sistema Java no Dockerfile
.
Antes de analisarmos algumas configurações específicas, veja como carregar newrelic.yml
usando o Dockerfile
:
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
Para uma instalação básica Docker , conclua estas configurações:
- Nome do aplicativo
- chave de licença
- Registro
- Meio ambiente (opcional)
- agente habilitado (opcional)
Nome do aplicativo
O nome do aplicativo é uma configuração que você define para identificar seu aplicativo no New Relic.
Dica
Você pode reutilizar um nome de aplicativo para vários aplicativos que atendem à mesma função, para que todos os dados desses aplicativos sejam acumulados no mesmo aplicativo lógico no New Relic. Para obter mais detalhes sobre opções de agrupamento adicionais, consulte Usar vários nomes para um aplicativo.
Substitua MY_APP_NAME
pelo nome do seu aplicativo em um destes comandos Dockerfile
:
Opção | Comando |
---|---|
Variável de ambiente |
|
Propriedade do sistema Java |
|
Depois de inicializar o contêiner, o nome do seu aplicativo aparecerá no New Relic.
chave de licença
Esta configuração é necessária para você reportar dados para sua conta New Relic.
Para copiar sua chave de licença:
Acesse a interface da chave da API e obtenha um .
Em um destes comandos
Dockerfile
, substituaMY_LICENSE_KEY
pela sua chave de licença:Opção
Comando
Variável de ambiente
ENV NEW_RELIC_LICENSE_KEY="MY_LICENSE_KEY"Propriedade do sistema Java
ENV JAVA_OPTS="$JAVA_OPTS -Dnewrelic.config.license_key='MY_LICENSE_KEY'"
Registro
Por padrão, os logs são gravados no diretório de log relativo ao local de newrelic.jar
. Certifique-se de que a conta de usuário que inicia o servidor do seu aplicativo também tenha o direito de executar tarefas como:
- Criando o diretório de log.
- Criando e anexando ao arquivo de log nesse diretório.
Aqui está um exemplo do Dockerfile onde tomcat
é o usuário que inicia o Tomcat:
RUN mkdir -p /usr/local/tomcat/newrelic/logsRUN chown -R tomcat:tomcat /usr/local/tomcat/newrelic/logs
Você também pode enviar o log para STDOUT
adicionando um dos seguintes itens ao Dockerfile:
Opção | Comando |
---|---|
Variável de ambiente |
|
Propriedade do sistema Java |
|
Meio ambiente (opcional)
É possível transmitir uma propriedade Java ou uma variável de ambiente para determinar quais seções específicas do ambiente o agente usa em newrelic.yml
. Use esta abordagem se preferir que o arquivo newrelic.yml
controle a configuração específica do ambiente em vez de passar toda a configuração via Docker.
Aqui está um exemplo Dockerfile
de transmissão da propriedade de sistema Java newrelic.environment
via Docker para usar o valor customizado dev
na seção de ambiente de newrelic.yml
:
Usando o formato shell da instrução CMD, inclua uma referência a uma nova variável de ambiente escolhida (por exemplo,
ENV
):CMD java -Dnewrelic.environment=$ENV -jar myjar.jarNa linha de comando
docker run
, inclua um argumento para definir a variável de ambiente no contêiner:bash$docker run -it -e "ENV=dev" myDockerImage
Importante
Se você não especificar um valor para newrelic.environment
, o agente assumirá que ele está em execução no seu ambiente de produção e usará os valores do corpo principal do arquivo de configuração.
Agente habilitado (opcional)
Esta configuração controla se o agente está habilitado. Digamos que você queira a mesma imagem Docker para cada instalação. No entanto, você não deseja executar o agente New Relic sempre que um engenheiro inicia um aplicativo de teste porque não deseja aumentar sua contagem de instâncias.
Este problema pode ser resolvido usando a propriedade de sistema Java newrelic.environment
.
- No corpo principal de
newrelic.yml
, desative o agente Java configurandoagent_enabled: false
. - Em seções de ambiente específicas de
newrelic.yml
, definaagent_enabled: true
.
Então, você pode executar um agente específico especificando o ambiente em tempo de execução.
Exemplos adicionais do Dockerfile do Tomcat
Próximos passos
Agora que você tem uma instalação básica do agente no Docker, aqui estão algumas etapas adicionais a serem consideradas:
- Revise outras configurações do agente.
- Leia uma postagem detalhada no Fórum de Suporte sobre Docker e New Relic.