# Introdução ao OpenTelemetry Java

> Introdução ao ecossistema OpenTelemetry Java

---

LLMS index: [llms.txt](/llms.txt)

---

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](#overview)
conceitual, um guia para [navegar pela documentação](#navigating-the-docs), uma
lista de [repositórios](#repositories) com detalhes importantes sobre
lançamentos e artefatos.

## Visão geral {#overview}

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 _no-op_ (significando "sem operação") de baixo
_overhead_ 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](/docs/concepts/).

## Navegando pela documentação {#navigating-the-docs}

A documentação do OpenTelemetry Java está organizada da seguinte forma:

- [Primeiros Passos com Exemplos](../getting-started/): 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](../instrumentation/): 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](../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](../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](../configuration/): 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](../examples/)
  completos, [Javadoc](../api/), [registro](../registry/) de componentes e uma
  [referência de desempenho](/docs/zero-code/java/agent/performance/).

## Repositórios {#repositories}

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](https://github.com/open-telemetry/opentelemetry-java) |
Componentes principais da API e do SDK | `io.opentelemetry` |
`1.58.0` |
[Sexta-feira após a primeira segunda-feira do mês](https://github.com/open-telemetry/opentelemetry-java/blob/main/RELEASING.md#release-cadence)
| |
[opentelemetry-java-instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation)
| Instrumentação mantida pelo OpenTelemetry, incluindo o agente Java
OpenTelemetry | `io.opentelemetry.instrumentation` |
`2.26.1` |
[Quarta-feira após a segunda segunda-feira do mês](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/RELEASING.md#release-cadence)
| |
[opentelemetry-java-contrib](https://github.com/open-telemetry/opentelemetry-java-contrib)
| Componentes mantidos pela comunidade que não se encaixam no escopo expresso de
outros repositórios | `io.opentelemetry.contrib` | `1.55.0`
|
[Sexta-feira após a segunda segunda-feira do mês](https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/RELEASING.md#release-cadence)
| |
[semantic-conventions-java](https://github.com/open-telemetry/semantic-conventions-java)
| Código gerado para convenções semânticas | `io.opentelemetry.semconv` |
`1.37.0` | Segue os lançamentos de
[semantic-conventions](https://github.com/open-telemetry/semantic-conventions) |
|
[opentelemetry-proto-java](https://github.com/open-telemetry/opentelemetry-proto-java)
| _Bindings_ gerados para OTLP | `io.opentelemetry.proto` | `1.3.2-alpha` |
Segue os lançamentos de
[opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-proto) | |
[opentelemetry-java-examples](https://github.com/open-telemetry/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](#dependencies-and-boms) 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-instrumentation` depende de `opentelemetry-java` e é
  publicado logo em seguida.
- `opentelemetry-java-contrib` depende de `opentelemetry-java-instrumentation` e
  `opentelemetry-java` e é publicado por último.
- Embora `semantic-conventions-java` seja uma dependência de
  `opentelemetry-java-instrumentation`, é um artefato independente e possui seu
  próprio cronograma de lançamento.

## Dependências e declaração de materiais (BOMs) {#dependencies-and-boms}

Uma
[declaração de materiais](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Bill_of_Materials_.28BOM.29_POMs),
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.

<div class="alert alert-primary" role="alert">

 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. </div>


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.58.0`                  | [pom.xml mais recente][opentelemetry-bom]                       |
| Artefatos principais experimentais de API e SDK, incluindo todos de `opentelemetry-bom`           | `opentelemetry-java`                 | `io.opentelemetry`                 | `opentelemetry-bom-alpha`                 | `1.58.0-alpha`            | [pom.xml mais recente][opentelemetry-bom-alpha]                 |
| Artefatos estáveis de instrumentação, incluindo todos de `opentelemetry-bom`                      | `opentelemetry-java-instrumentation` | `io.opentelemetry.instrumentation` | `opentelemetry-instrumentation-bom`       | `2.26.1`       | [pom.xml mais recente][opentelemetry-instrumentation-bom]       |
| Artefatos experimentais de instrumentação, incluindo todos de `opentelemetry-instrumentation-bom` | `opentelemetry-java-instrumentation` | `io.opentelemetry.instrumentation` | `opentelemetry-instrumentation-bom-alpha` | `2.26.1-alpha` | [pom.xml mais recente][opentelemetry-instrumentation-alpha-bom] |

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.

   <ul class="nav nav-tabs" id="tabs-9" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-09-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-09-00" role="tab"
          data-td-tp-persist="gradle" aria-controls="tabs-09-00" aria-selected="true">
        Gradle
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-09-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-09-01" role="tab"
          data-td-tp-persist="maven" aria-controls="tabs-09-01" aria-selected="false">
        Maven
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-9-content">
    <div class="tab-body tab-pane fade show active"
        id="tabs-09-00" role="tabpanel" aria-labelled-by="tabs-09-00-tab" tabindex="9">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-kotlin" data-lang="kotlin"><span class="line"><span class="cl"><span class="n">dependencies</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">implementation</span><span class="p">(</span><span class="n">platform</span><span class="p">(</span><span class="s2">&#34;{{bomGroupId}}:{{bomArtifactId}}:{{bomVersion}}&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// Adiciona uma dependência em um artefato cuja versão é gerenciada pela BOM
</span></span></span><span class="line"><span class="cl">  <span class="n">implementation</span><span class="p">(</span><span class="s2">&#34;io.opentelemetry:opentelemetry-api&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-09-01" role="tabpanel" aria-labelled-by="tabs-09-01-tab" tabindex="9">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-xml" data-lang="xml"><span class="line"><span class="cl"><span class="nt">&lt;project&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;dependencyManagement&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;groupId&gt;</span>{{bomGroupId}}<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;artifactId&gt;</span>{{bomArtifactId}}<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;version&gt;</span>{{bomVersion}}<span class="nt">&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;type&gt;</span>pom<span class="nt">&lt;/type&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;scope&gt;</span>import<span class="nt">&lt;/scope&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/dependencyManagement&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="c">&lt;!-- Adiciona uma dependência em um artefato cuja versão é gerenciada pela BOM --&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;groupId&gt;</span>io.opentelemetry<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;artifactId&gt;</span>opentelemetry-api<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/project&gt;</span>
</span></span></code></pre></div>
    </div>
</div>


[opentelemetry-bom]:
  <https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-bom/1.58.0/opentelemetry-bom-1.58.0.pom>
[opentelemetry-bom-alpha]:
  <https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-bom-alpha/1.58.0-alpha/opentelemetry-bom-alpha-1.58.0-alpha.pom>
[opentelemetry-instrumentation-bom]:
  <https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-bom/2.26.1/opentelemetry-instrumentation-bom-2.26.1.pom>
[opentelemetry-instrumentation-alpha-bom]:
  <https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-bom-alpha/2.26.1-alpha/opentelemetry-instrumentation-bom-alpha-2.26.1-alpha.pom>
