Introdução ao OpenTelemetry Java
OpenTelemetry Java é o conjunto de ferramentas de observabilidade do OpenTelemetry para o ecossistema Java. Em alto nível, consiste na API, no SDK e na instrumentação.
Esta página apresenta o ecossistema, com uma visão geral conceitual, um guia para navegar pela documentação, uma lista de repositórios com detalhes importantes sobre lançamentos e artefatos.
Visão geral
A API é um conjunto de classes e interfaces para registrar telemetria em sinais-chave de observabilidade. Ela suporta múltiplas implementações, incluindo uma implementação minimalista Noop de baixo overhead (pronunciada “no-op”, de “no operation”, significando “sem operação”) e uma implementação de referência de SDK fornecida de forma nativa. Ela foi projetada para ser utilizada como dependência direta por bibliotecas, frameworks e responsáveis por aplicações que desejam adicionar instrumentação. Possui fortes garantias de compatibilidade retroativa, nenhuma dependência transitiva e suporte ao Java 8+.
O SDK é a implementação de referência integrada da API, responsável por processar e exportar a telemetria produzida pelas chamadas da API de instrumentação. Configurar o SDK para processar e exportar adequadamente é um passo essencial para integrar o OpenTelemetry a uma aplicação. O SDK possui opções de configuração automática e programática.
A instrumentação registra telemetria através da API. Existem várias categorias de instrumentação, incluindo: agente Java sem código, inicializador do Spring Boot sem código, biblioteca, nativa, manual e shims.
Para uma visão geral independente de linguagem, consulte conceitos do OpenTelemetry.
Navegando pela documentação
A documentação do OpenTelemetry Java está organizada da seguinte forma:
- Primeiros Passos com Exemplos: Um exemplo rápido para começar a utilizar o OpenTelemetry Java, demonstrando a integração do agente Java OpenTelemetry em uma aplicação web simples.
- Ecossistema de instrumentação: Um guia para o ecossistema de instrumentação do OpenTelemetry Java. Este é um recurso chave para autores de aplicações que desejam integrar o OpenTelemetry Java em suas aplicações. Aprenda sobre as diferentes categorias de instrumentação e decida qual é a certa para você.
- Registrar Telemetria com a API: Uma referência técnica para a API do OpenTelemetry, explorando todos os aspectos chave da API com exemplos de código funcionais. A maioria dos usuários usará esta página como uma enciclopédia, consultando o índice de seções conforme necessário, em vez de ler do início ao fim.
- Gerenciar Telemetria com o SDK Uma referência técnica para o SDK do OpenTelemetry, explorando todos os pontos de extensão de plugins do SDK e a API de configuração programática, com exemplos de código funcionais. Assim como a anterior, esta página costuma ser utilizada como uma enciclopédia.
- Configurar o SDK: Uma referência técnica para configurar o SDK, com foco na configuração automática sem código. Inclui uma referência de todas as variáveis de ambiente e propriedades do sistema suportadas para configurar o SDK. Também explora todos os pontos de personalização programática com exemplos de código. A maioria dos usuários usará esta página como uma enciclopédia.
- Saiba Mais: Recursos complementares, incluindo exemplos completos, Javadoc, registro de componentes e uma referência de desempenho.
Repositórios
O código-fonte do OpenTelemetry Java está organizado em vários repositórios:
| Repositório | Descrição | ID do Grupo | Versão atual | Cadência de lançamento |\n|
|
| ———————————- | ———————————— |
| | opentelemetry-java | Componentes principais da API e do SDK | io.opentelemetry | 1.55.0 | Sexta-feira após a primeira segunda-feira do mês | | opentelemetry-java-instrumentation | Instrumentação mantida pelo OpenTelemetry, incluindo o agente Java OpenTelemetry | io.opentelemetry.instrumentation | 2.21.0 | Quarta-feira após a segunda segunda-feira do mês | | opentelemetry-java-contrib | Componentes mantidos pela comunidade que não se encaixam no escopo expresso de outros repositórios | io.opentelemetry.contrib | 1.51.0 | Sexta-feira após a segunda segunda-feira do mês | | semantic-conventions-java | Código gerado para convenções semânticas | io.opentelemetry.semconv | 1.37.0 | Segue os lançamentos de semantic-conventions | | opentelemetry-proto-java | Bindings gerados para OTLP | io.opentelemetry.proto | 1.3.2-alpha | Segue os lançamentos de opentelemetry-proto | | opentelemetry-java-examples | Exemplos de código completos demonstrando uma variedade de padrões usando a API, SDK e instrumentação | n/a | n/a | n/a |
opentelemetry-java, opentelemetry-java-instrumentation e opentelemetry-java-contrib publicam grandes catálogos de artefatos. Consulte os repositórios para mais detalhes ou veja a coluna “Dependências gerenciadas” na tabela de Declaração de Materiais para conferir a lista completa de dependências gerenciadas.
Como regra geral, artefatos publicados a partir do mesmo repositório possuem a mesma versão. A exceção é o opentelemetry-java-contrib, que pode ser entendido como um conjunto de projetos independentes que compartilham o mesmo repositório para aproveitar ferramentas compartilhadas. Por enquanto, os artefatos do opentelemetry-java-contrib estão alinhados, mas isso é uma coincidência e vai mudar no futuro.
Os repositórios têm uma cadência de lançamento que reflete sua estrutura de dependência em alto nível:
opentelemetry-javaé o núcleo e lança primeiro a cada mês.opentelemetry-java-instrumentationdepende deopentelemetry-javae é publicado logo em seguida.opentelemetry-java-contribdepende deopentelemetry-java-instrumentationeopentelemetry-javae é publicado por último.- Embora
semantic-conventions-javaseja uma dependência deopentelemetry-java-instrumentation, é um artefato independente e possui seu próprio cronograma de lançamento.
Dependências e declaração de materiais (BOMs)
Uma declaração de materiais, ou BOM (bill of materials) de forma abreviada, é um artefato que ajuda a manter alinhadas as versões de dependências relacionadas. O OpenTelemetry Java publica várias BOMs para diferentes casos de uso, listados abaixo em ordem crescente de escopo. Recomendamos fortemente o uso de uma BOM.
Como as BOMs são hierárquicas, adicionar dependências em múltiplas BOMs não é recomendado, pois é redundante e pode levar a resoluções de versão de dependência não intuitivas.
Clique no link na coluna “Dependências gerenciadas” para ver uma lista dos artefatos gerenciados pela BOM.
| Descrição | Repositório | ID do grupo | ID do artefato | Versão atual | Dependências gerenciadas |
|---|---|---|---|---|---|
| Artefatos principais estáveis de API e SDK | opentelemetry-java | io.opentelemetry | opentelemetry-bom | 1.55.0 | pom.xml mais recente |
Artefatos principais experimentais de API e SDK, incluindo todos de opentelemetry-bom | opentelemetry-java | io.opentelemetry | opentelemetry-bom-alpha | 1.55.0-alpha | pom.xml mais recente |
Artefatos estáveis de instrumentação, incluindo todos de opentelemetry-bom | opentelemetry-java-instrumentation | io.opentelemetry.instrumentation | opentelemetry-instrumentation-bom | 2.21.0 | pom.xml mais recente |
Artefatos experimentais de instrumentação, incluindo todos de opentelemetry-instrumentation-bom | opentelemetry-java-instrumentation | io.opentelemetry.instrumentation | opentelemetry-instrumentation-bom-alpha | 2.21.0-alpha | pom.xml mais recente |
O trecho de código a seguir demonstra como adicionar uma dependência de BOM, com {{bomGroupId}}, {{bomArtifactId}} e {{bomVersion}} referindo-se, respectivamente, às colunas “ID do grupo”, “ID do artefato” e “Versão atual” da tabela.
dependencies { implementation(platform("{{bomGroupId}}:{{bomArtifactId}}:{{bomVersion}}")) // Adiciona uma dependência em um artefato cuja versão é gerenciada pela BOM implementation("io.opentelemetry:opentelemetry-api") } <project> <dependencyManagement> <dependencies> <dependency> <groupId>{{bomGroupId}}</groupId> <artifactId>{{bomArtifactId}}</artifactId> <version>{{bomVersion}}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- Adiciona uma dependência em um artefato cuja versão é gerenciada pela BOM --> <dependencies> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> </dependency> </dependencies> </project> Feedback
Esta página foi útil?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!