Product release

A versão de produção do agente de Java do Elastic APM já está disponível

É com muita alegria que anunciamos o lançamento da versão de produção do nosso agente de Java. Após uma fase beta bem-sucedida, com muitos downloads e comentários dos usuários, estamos preparados para lançar a versão de produção, a 1.0. Observe que esta versão requer, no mínimo, o APM Server 6.5.

O agente de Java é o novo integrante da família de agentes do Elastic APM, juntando-se aos agentes de Node.js, Python, Ruby, JavaScript/RUM e Go (também uma nova versão de produção). O Elastic APM é a solução de monitoramento de performance de aplicações (Application Performance Monitoring, em inglês) da Elastic que ajuda você a obter insights sobre a performance das suas aplicações e a rastrear erros.

Principais recursos

O que já vem pronto para você

A instalação do agente de Java do Elastic APM é tão simples quanto adicionar a flag -javaagent e algumas propriedades de sistema ao comando de inicialização da sua JVM. Se você estiver usando frameworks e plataformas compatíveis, como Spring MVC/Spring Boot, Servlet API e JAX-RS, sua aplicação será instrumentada e monitorada automaticamente.

Visibilidade de solicitações da Web

Tenha uma visão geral de alto nível das suas aplicações em Java e aprofunde-se nos dados para saber como está o desempenho individual dos seus Servlets ou Spring Controllers:

Visibilidade do armazenamento de dados

Você usa o JDBC ou o Elasticsearch? Descubra onde sua aplicação em Java passa mais tempo em chamadas de banco de dados, quais consultas demoram mais e quais erros elas estão produzindo. Você pode se surpreender com os tipos de consultas que o seu mapeador ORM gera!

Visibilidade de redes

O agente de Java também registra quanto tempo sua aplicação está dedicando a chamadas HTTP externas para que você consiga saber quanto é gasto com a espera de serviços que estão fora do seu controle.

Rastreamento distribuído

Se sua aplicação em Java for apenas um componente em uma configuração multisserviço, seus rastreamentos incluirão dados coletados de todos os chamadores e receptores de chamadas que têm um agente de APM instalados neles também. Se você estiver usando um dos frameworks de rede compatíveis, o agente garantirá a passagem de IDs de correlação para que você consiga ver quais serviços estão envolvidos no atendimento de uma requisição e qual foi responsável por uma eventual lentidão da requisição. Saiba mais sobre o rastreamento distribuído no anúncio de lançamento do Elastic APM 6.5.0.

Enriqueça e expanda

Para tudo o que você quer, mas que não vem pronto

Sua aplicação em Java não usa nenhuma das tecnologias compatíveis? Você quer ter mais visibilidade de partes específicas do seu código interno? Tudo bem, nós oferecemos a infraestrutura capaz de ajudar você a rastrear praticamente qualquer coisa.

Customize sua solução APM com a nossa API

Você pode rastrear o método que quiser usando a nossa API pública. Essa API permite que você customize e crie manualmente intervalos e transações, além de rastrear erros.

Por exemplo, nossa API de anotações pode ser usada da seguinte maneira:

import co.elastic.apm.api.CaptureSpan;
import co.elastic.apm.api.ElasticApm;
import co.elastic.apm.api.Span;
public class MyImportantBusinessLogic {
    @CaptureSpan("Main-business-logic")
    public void myVeryImportantMethod(String someInfo) {
        ElasticApm.currentSpan().addTag("info", someInfo);
        // Minha lógica importante entra aqui
    }
}

Para que seu código apareça como um intervalo:

Para usar a API pública no seu código, você pode declarar uma dependência ao artefato apm-agent-api, disponível no Maven Central.

Compatibilidade com a API do OpenTracing

Você também pode usar nossa ponte do OpenTracing para criar Transações e Intervalos do Elastic APM, usando a API do OpenTracing. Ela transforma as chamadas da API do OpenTracing para o APM, possibilitando a reutilização da instrumentação existente.

Há total compatibilidade para mesclar e correlacionar os recursos de instrumentação automática do agente do Elastic APM com uma instrumentação explícita usando o OpenTracing: você pode usar a API do OpenTracing para personalizar os intervalos que o Elastic APM cria automaticamente, aperfeiçoar a instrumentação automática com seus intervalos customizados ou desativar os recursos de instrumentação automática e usar a API do OpenTracing para instrumentar sua aplicação de forma manual.

Veja um exemplo que mostra como usar a API do OpenTracing para rastrear métodos customizados:

import co.elastic.apm.opentracing.ElasticApmTracer;
import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.Tracer;
import io.opentracing.log.Fields;
public class MyBusinessLogic {
    private final Tracer tracer = new ElasticApmTracer();
    public void myVeryImportantMethod(String someInfo) {
        Span span = tracer.buildSpan("Main-business-logic").start();
        try (Scope scope = tracer.scopeManager().activate(span, false)) {
            // Minha lógica importante entra aqui
        } catch(Exception ex) {
            Tags.ERROR.set(span, true);
            span.log(Map.of(Fields.EVENT, "error", Fields.ERROR_OBJECT, ex, Fields.MESSAGE, ex.getMessage()));
        } finally {
            span.finish();
        }
    }
}

Isso cria o seu intervalo do OpenTracing como um filho do intervalo criado pela instrumentação automática do agente do Elastic APM.

O que vem a seguir?

Até aqui, nos concentramos em modelos de execução tradicionais de thread por requisição. No entanto, cada vez mais aplicações usam frameworks reativos para se beneficiar dos ganhos de escalabilidade que esse modelo proporciona. No futuro, ofereceremos integrações e instrumentação automáticas melhores para esses frameworks. Também nos concentraremos em aperfeiçoar a integração de logs, métricas e rastreamentos.

Queremos ouvir a sua opinião

Se não oferecemos compatibilidade com o framework ou servidor de aplicações da sua preferência, responda à pesquisa de agentes de Java para nos ajudar a pensar no futuro.

Experimente usar com a sua aplicação em Java hoje mesmo e nos conte sobre sua experiência no fórum de discussão. Se quiser, será um prazer ter a sua participação no GitHub.