Skip to content

Commit 7440ace

Browse files
Vinaum8EzzioMoreiravitorvascmaryliagopentelemetrybot
authoredFeb 1, 2025··
[pt] Localize content java instrumentation (#6085)
Co-authored-by: Ezzio Moreira <enzziom@gmail.com> Co-authored-by: Vitor Vasconcellos <vvasconcellos1@gmail.com> Co-authored-by: Marylia Gutierrez <maryliag@gmail.com> Co-authored-by: OpenTelemetry Bot <107717825+opentelemetrybot@users.noreply.github.com> Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com> Co-authored-by: Severin Neumann <severin.neumann@altmuehlnet.de> Co-authored-by: Tiffany Hrabusa <30397949+tiffany76@users.noreply.github.com> Co-authored-by: Carlos Fuentes <me@metcoder.dev> Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com> Co-authored-by: Patrice Chalin <chalin@users.noreply.github.com> Co-authored-by: Emídio Neto <9735060+emdneto@users.noreply.github.com>
1 parent e201d36 commit 7440ace

File tree

1 file changed

+242
-0
lines changed

1 file changed

+242
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
---
2+
title: Ecossistema de Instrumentação
3+
aliases:
4+
- /docs/java/getting_started
5+
- /docs/java/manual_instrumentation
6+
- manual
7+
- manual_instrumentation
8+
- libraries
9+
weight: 10
10+
description: Ecossistema de Instrumentação no OpenTelemetry Java
11+
default_lang_commit: d65798034935fcfdbdc6599b6e6d3dd942fbe62c
12+
cSpell:ignore: Logback logback
13+
---
14+
15+
<!-- markdownlint-disable no-duplicate-heading -->
16+
17+
A instrumentação registra a telemetria usando a [API](../api/). O [SDK](../sdk/)
18+
é a implementação de referência embutida na API, e é
19+
[configurada](../configuration/) para processar e exportar a telemetria
20+
produzida pelas chamadas de instrumentação da API. Esta página discute o
21+
ecossistema de instrumentação no OpenTelemetry Java, incluindo recursos para
22+
usuários finais e tópicos relacionados à instrumentação:
23+
24+
- [Categorias de instrumentação](#instrumentation-categories): Existem diversas
25+
categorias de instrumentação para diferentes casos de uso e padrões de
26+
instalação.
27+
- [Propagação de Contexto](#context-propagation): Propagação de Contexto provê
28+
uma correlação entre rastros, métricas, e logs, permitindo que os sinais se
29+
complementem.
30+
- [Convenções semânticas](#semantic-conventions): As convenções semânticas
31+
definem como produzir telemetria para operações padrão.
32+
- [Log instrumentation](#log-instrumentation)
33+
34+
{{% alert %}} Embora as
35+
[categorias de instrumentação](#instrumentation-categories) enumerem diversas
36+
opções para instrumentar uma aplicação, nós recomendamos que os usuários iniciem
37+
com o [Agente Java](#zero-code-java-agent). O agente Java possui uma instalação
38+
simples, e automaticamente detecta e instala instrumentação de uma vasta
39+
biblioteca. {{% /alert %}}
40+
41+
## Categorias de instrumentação {#instrumentation-categories}
42+
43+
Existem diversas categorias de instrumentação:
44+
45+
- [Sem código: Agente Java](#zero-code-java-agent) é uma forma de instrumentação
46+
sem código **[1]** que manipula dinamicamente o _bytecode_ da aplicação.
47+
- [Sem código: Spring Boot starter](#zero-code-spring-boot-starter) é uma forma
48+
de instrumentação sem código **[1]** que utiliza a autoconfiguração do spring
49+
para instalar [biblioteca de instrumentação](#library-instrumentation).
50+
- [Biblioteca de instrumentação](#library-instrumentation) envolve ou utiliza
51+
pontos de extensão para instrumentar uma biblioteca, exigindo que os usuários
52+
instalem e/ou adaptem o uso da biblioteca.
53+
- [Instrumentação nativa](#native-instrumentation) é incorporada diretamente em
54+
bibliotecas e frameworks.
55+
- [Instrumentação manual](#manual-instrumentation) é escrito pelos autores das
56+
aplicações, e normalmente específico para o domínio da aplicação.
57+
- [Shims](#shims) conectam dados de uma biblioteca de observabilidade a outra,
58+
normalmente _de_ alguma biblioteca para o OpenTelemetry.
59+
60+
**[1]**: A instrumentação sem código é instalada automaticamente baseado nas
61+
bibliotecas e frameworks detectados.
62+
63+
O projeto
64+
[opentelemetry-java-instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation)
65+
contém o código fonte do Agente Java, inicializador Spring Boot, e Biblioteca de
66+
instrumentação.
67+
68+
### Sem código: Agente Java {#zero-code-java-agent}
69+
70+
O agente do Java é uma forma de
71+
[instrumentação automática](/docs/specs/otel/glossary/#automatic-instrumentation)
72+
zero código que manipula dinamicamente o _bytecode_ da aplicação.
73+
74+
Para uma lista de bibliotecas instrumentadas pelo agente do Java, confira a
75+
coluna _"Auto-instrumented versions"_ (versões auto-instrumentadas) em
76+
[bibliotecas suportadas](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md).
77+
78+
Veja [Agente Java](/docs/zero-code/java/agent/) para mais detalhes.
79+
80+
### Sem código: inicializador Spring Boot {#zero-code-spring-boot-starter}
81+
82+
O inicializador Spring Boot é uma forma de
83+
[instrumentação automática](/docs/specs/otel/glossary/#automatic-instrumentation)
84+
zero código que aproveita a autoconfiguração do spring para instalar a
85+
[biblioteca de instrumentação](#library-instrumentation).
86+
87+
Veja [inicializador Spring Boot](/docs/zero-code/java/spring-boot-starter/) para
88+
detalhes.
89+
90+
### Biblioteca de instrumentação {#library-instrumentation}
91+
92+
[Biblioteca de instrumentação](/docs/specs/otel/glossary/#instrumentation-library)
93+
envolve ou usa os pontos de extensão para instrumentar a biblioteca, obrigando
94+
os usuários a instalar e/ou adaptar o uso da biblioteca.
95+
96+
Para uma lista de bibliotecas de instrumentação, veja a coluna _"Standalone
97+
Library Instrumentation [1]"_ (Biblioteca autônoma de instrumentação) em
98+
[bibliotecas suportadas](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md).
99+
100+
### Instrumentação nativa {#native-instrumentation}
101+
102+
[Instrumentação nativa](/docs/specs/otel/glossary/#natively-instrumented) é
103+
definido diretamente nas bibliotecas ou _frameworks_. O OpenTelemetry encoraja
104+
os autores de bibliotecas a adicionarem instrumentação nativa usando a
105+
[API](../api/). No longo prazo, nós esperamos que a instrumentação nativa seja o
106+
padrão, e que a instrumentação mantida pelo OpenTelemetry em
107+
[opentelemetry-java-instrumentação](https://github.com/open-telemetry/opentelemetry-java-instrumentation)
108+
seja um meio temporário de preencher a lacuna.
109+
110+
{{% docs/languages/native-libraries "java" %}}
111+
112+
### Instrumentação manual {#manual-instrumentation}
113+
114+
[Instrumentação manual](/docs/specs/otel/glossary/#manual-instrumentation) é
115+
escrita pelos autores das aplicações, e normalmente específica para o domínio da
116+
aplicação.
117+
118+
### Shims
119+
120+
Um shim é uma instrumentação que conecta dados de uma biblioteca de
121+
observabilidade até outra, normalmente _de_ alguma biblioteca para o
122+
OpenTelemetry.
123+
124+
Shims mantidos no ecossistema OpenTelemetry Java:
125+
126+
| Descrição | Documentação | Sinal(s) | Artefato |
127+
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
128+
| Bridge [OpenTracing](https://opentracing.io/) no OpenTelemetry | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java/tree/main/opentracing-shim) | Rastros | `io.opentelemetry:opentelemetry-opentracing-shim:{{% param vers.otel %}}` |
129+
| Bridge [Opencensus](https://opencensus.io/) no OpenTelemetry | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java/tree/main/opencensus-shim) | Rastros, Métricas | `io.opentelemetry:opentelemetry-opencensus-shim:{{% param vers.otel %}}-alpha` |
130+
| Bridge [Micrometer](https://micrometer.io/) no OpenTelemetry | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/micrometer/micrometer-1.5/library) | Métricas | `io.opentelemetry.instrumentation:opentelemetry-micrometer-1.5:{{% param vers.instrumentation %}}-alpha` |
131+
| Bridge [JMX](https://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html) no OpenTelemetry | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/jmx-metrics/javaagent/README.md) | Métricas | `io.opentelemetry.instrumentation:opentelemetry-jmx-metrics:{{% param vers.instrumentation %}}-alpha` |
132+
| Bridge OpenTelemetry no [Prometheus Java client](https://github.com/prometheus/client_java) | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/prometheus-client-bridge) | Métricas | `io.opentelemetry.contrib:opentelemetry-prometheus-client-bridge:{{% param vers.contrib %}}-alpha` |
133+
| Bridge OpenTelemetry no [Micrometer](https://micrometer.io/) | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/micrometer-meter-provider) | Métricas | `io.opentelemetry.contrib:opentelemetry-micrometer-meter-provider:{{% param vers.contrib %}}-alpha` |
134+
| Bridge [Log4j](https://logging.apache.org/log4j/2.x/index.html) no OpenTelemetry | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/log4j/log4j-appender-2.17/library) | Logs | `io.opentelemetry.instrumentation:opentelemetry-log4j-appender-2.17:{{% param vers.instrumentation %}}-alpha` |
135+
| Bridge [Logback](https://logback.qos.ch/) no OpenTelemetry | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-appender-1.0/library) | Logs | `io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:{{% param vers.instrumentation %}}-alpha` |
136+
| Bridge OpenTelemetry context no [Log4j](https://logging.apache.org/log4j/2.x/index.html) | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure) | Context | `io.opentelemetry.instrumentation:opentelemetry-log4j-context-data-2.17-autoconfigure:{{% param vers.instrumentation %}}-alpha` |
137+
| Bridge OpenTelemetry context no [Logback](https://logback.qos.ch/) | [LEIA-ME](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library) | Context | `io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0:{{% param vers.instrumentation %}}-alpha` |
138+
139+
## Propagação de Contexto {#context-propagation}
140+
141+
As APIs do OpenTelemetry foram desenhadas para serem complementares, onde o todo
142+
é maior que a soma das partes. Cada sinal tem seus pontos fortes e juntos formam
143+
uma narrativa convincente de observabilidade.
144+
145+
É importante ressaltar que os dados de vários sinais são interligados através do
146+
contexto de rastreamento:
147+
148+
- Trecho são relacionados com outros trechos através do trecho pai e links, que
149+
registram os contextos de rastreamento dos trechos relacionados.
150+
- Métricas são relacionadas a trechos através de
151+
[exemplares](/docs/specs/otel/metrics/data-model/#exemplars), que registram o
152+
contexto de rastreamento de uma medição específica.
153+
- Logs são relacionados a trechos ao registrar o contexto de rastreamento nos
154+
registros de logs.
155+
156+
Para essa correlação funcionar, o contexto de rastreamento precisa ser propagado
157+
através da aplicação (entre chamada de funções e processos), e entre limites da
158+
aplicação. A [API de contexto](../api/#context-api) facilita isso.
159+
160+
A instrumentação deve ser escrita de uma maneira que seja ciente do contexto:
161+
162+
- Bibliotecas que representam um ponto de entrada da aplicação (i.e. servidores
163+
HTTP, consumidores de mensagens, etc.) devem
164+
[extrair o contexto](../api/#contextpropagators) de mensagens recebidas.
165+
- Bibliotecas que representam um ponto de saída de uma aplicação (ex. clientes
166+
HTTP, produtores de mensagens, etc.) devem
167+
[injetar o contexto](../api/#contextpropagators) em mensagens de saída.
168+
- Bibliotecas devem passar implicitamente ou explicitamente o
169+
[contexto](../api/#context) através da pilha de chamadas e entre qualquer
170+
processo.
171+
172+
## Convenção semântica {#semantic-conventions}
173+
174+
As [convenções semânticas](/docs/specs/semconv/) definem como produzir
175+
telemetria para operações padrão. Entre outras coisas, as convenções semânticas
176+
especificam nomes e tipos de trechos, instrumentos de métrica, unidades de
177+
métricas, tipos de métricas, e atributos chave, valor, e níveis de requisitos.
178+
179+
Ao escrever instrumentação, consulte a convenção semântica e confirme que
180+
quaisquer convenções aplicáveis ao domínio estejam sendo seguidas.
181+
182+
O OpenTelemetry Java [publica artefatos](../api/#semantic-attributes) para
183+
auxiliar a conformidade com a convenção semântica, incluindo constantes geradas
184+
para chaves e valores de atributos.
185+
186+
## Instrumentação de Log {#log-instrumentation}
187+
188+
Enquanto as APIs do [LoggerProvider](../api/#loggerprovider) /
189+
[Logger](../api/#logger) são estruturalmente similares ou equivalentes às APIs
190+
de [rastros](../api/#tracerprovider) e [métricas](../api/#meterprovider), elas
191+
possuem diferentes casos de uso. A partir de agora, `LoggerProvider` / `Logger`
192+
e as classes associadas representam a
193+
[Log Bridge API](/docs/specs/otel/logs/api/), que existe para escrever
194+
anexadores de logs para conectar logs registrados através de outras APIs de log
195+
/ frameworks no OpenTelemetry. Eles não são destinados para usuários finais como
196+
um substituto para Log4j / SLF4J / Logback / etc.
197+
198+
Eles são dois _workflows_ típicos para consumir instrumentação de logs no
199+
OpenTelemetry atendendo a diferentes requisitos de aplicação:
200+
201+
### Direto para o Collector {#direct-to-collector}
202+
203+
No _workflow_ direto para o Collector, logs são emitidos diretamente da
204+
aplicação para o Collector usando um protocolo de rede (ex. OTLP). Este
205+
_workflow_ é simples para configurar já que não requer nenhum componente
206+
adicional de encaminhamento de log, e permite que uma aplicação facilmente emita
207+
logs estruturados em conformidade com o
208+
[modelo de dados de log](/docs/specs/otel/logs/data-model/). No entanto, a
209+
sobrecarga necessária para as aplicações enfileirarem e exportarem os logs para
210+
um local de rede pode não ser adequada para todas as aplicações.
211+
212+
Para usar este _workflow_:
213+
214+
- Instale o conector apropriado de log. **[1]**
215+
- Configure o OpenTelemetry [Log SDK](../sdk/#sdkloggerprovider) para exportar
216+
registros de logs para o destino desejado (o
217+
[Collector](https://github.com/open-telemetry/opentelemetry-collector) ou
218+
outro).
219+
220+
**[1]**: Anexadores de Logs são um tipo de [shim](#shims) que conecta logs de um
221+
_framework_ no SDK de Logs do OpenTelemetry. Veja os items "Bridge Log4j em
222+
OpenTelemetry", "Bridge Logback em OpenTelemetry". Veja
223+
[Exemplo de Anexadores de Logs](https://github.com/open-telemetry/opentelemetry-java-docs/tree/main/log-appender)
224+
para demonstração de uma variedade de cenários.
225+
226+
### Via arquivo ou stdout {#via-file-or-stdout}
227+
228+
No _workflow_ para arquivos ou _stdout_, os logs são gravados em arquivos ou na
229+
saída _standout_. Outro componente (ex. FluentBit) é responsável por ler /
230+
acompanhar os logs, convertê-los para um formato mais estruturado, e
231+
encaminhá-los para um destino, como um Collector. Este _workflow_ pode ser
232+
preferível em situações onde os requisitos da aplicação não permitem sobrecarga
233+
adicional da abordagem [direto para o Collector](#direct-to-collector). No
234+
entanto, isso requer que todos os campos de logs necessários para processamento
235+
posterior sejam codificados nos logs, e este componente lendo os logs os
236+
interprete no [modelo de dados de log](/docs/specs/otel/logs/data-model). A
237+
instalação e configuração dos componentes de encaminhamento de log está fora do
238+
escopo deste documento.
239+
240+
Correlação de Logs com rastros está disponível instalando um [shim](#shims) para
241+
conectar o contexto do OpenTelemetry no log framework. Veja os items "Bridge
242+
OpenTelemetry contexto em Log4j", "Bridge OpenTelemetry contexto em Logback".

0 commit comments

Comments
 (0)
Please sign in to comment.