Skip to content

Commit c96fd97

Browse files
EzzioMoreiraemdnetolgfa29
authored
[pt] Add /pt/docs/concepts/signals/logs.md (#5062)
Co-authored-by: Emídio Neto <[email protected]> Co-authored-by: Luiz Aoqui <[email protected]>
1 parent a1740fd commit c96fd97

File tree

2 files changed

+255
-1
lines changed

2 files changed

+255
-1
lines changed

.cspell/pt-palavras.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
desserializa
1+
desserializa
2+
autoinstrumentação
3+
autoconsistentes
+252
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
---
2+
title: Logs
3+
description: Um registro de um evento.
4+
weight: 3
5+
default_lang_commit: ebc9a3a9f07278110677f4f8f69291a02704746b
6+
cSpell:ignore: filelogreceiver semistructured transformprocessor
7+
---
8+
9+
Um **log** é um registro de texto com marcação de data e hora, que pode ser
10+
tanto estruturado (recomendado) quanto não estruturado, e com metadados
11+
opcionais. Dentre os sinais de telemetria, os logs têm uma história mais
12+
consolidada. A maioria das linguagens de programação possuem recursos nativos ou
13+
bibliotecas bem conhecidas e amplamente utilizadas para gerar logs.
14+
15+
## Logs do OpenTelemetry {#opentelemetry-logs}
16+
17+
O OpenTelemetry não possui uma especificação de API ou SDK própria para gerar
18+
logs. Em vez disso, os logs no OpenTelemetry são os logs que você já possui, que
19+
foram gerados por um framework de _logging_ ou componente de infraestrutura. Os
20+
SDKs e a autoinstrumentação do OpenTelemetry utilizam vários componentes para
21+
correlacionar automaticamente logs com [rastros](/docs/concepts/signals/traces).
22+
23+
O suporte do OpenTelemetry para logs é projetado para ser totalmente compatível
24+
com o que você já possui, oferecendo a capacidade de adicionar contextos a esses
25+
logs e uma série de ferramentas para analisar e manipular logs em um formato
26+
comum, abrangendo diversas fontes.
27+
28+
### Logs do OpenTelemetry no OpenTelemetry Collector {#opentelemetry-logs-in-the-opentelemetry-collector}
29+
30+
O [OpenTelemetry Collector](/docs/collector) fornece várias ferramentas para
31+
trabalhar com logs:
32+
33+
- Vários _receivers_ que analisam logs de fontes específicas e conhecidas de
34+
dados de logs.
35+
- O `filelogreceiver`, que lê logs de qualquer arquivo e fornece recursos para
36+
analisá-los a partir de diferentes formatos ou usar uma expressão regular.
37+
- _Processors_ como o `transformprocessor`, permite analisar dados aninhados,
38+
simplificar estruturas complexas, adicionar/remover/atualizar valores e mais.
39+
- _Exporters_ permitem emitir dados de log em um formato não OpenTelemetry.
40+
41+
O primeiro passo na adoção do OpenTelemetry frequentemente envolve implantar um
42+
Collector como um agente de logging genérico.
43+
44+
### Logs do OpenTelemetry para aplicações {#opentelemetry-logs-for-applications}
45+
46+
Em aplicações, logs do OpenTelemetry são criados com qualquer biblioteca ou
47+
recursos nativos para geração de logs. Quando você adiciona autoinstrumentação
48+
ou ativa um SDK, o OpenTelemetry automaticamente correlaciona seus logs com os
49+
rastros e trechos, incluindo os seus IDs no corpo do log. Em outras palavras, o
50+
OpenTelemetry automaticamente correlaciona seus logs com os seus rastros.
51+
52+
### Linguagens suportadas {#language-support}
53+
54+
Log é um sinal [estável](/docs/specs/otel/versioning-and-stability/#stable) na
55+
especificação do OpenTelemetry. Para as implementações específicas da API e SDK
56+
de Logs em cada linguagem, temos o seguinte estado:
57+
58+
{{% signal-support-table "logs" %}}
59+
60+
## Logs estruturados, não estruturados e semiestruturados {#structured-unstructured-and-semistructured-logs}
61+
62+
Tecnicamente o OpenTelemetry não distingue entre logs estruturados e não
63+
estruturados. Você pode usar qualquer log que tiver com o OpenTelemetry. No
64+
entanto, nem todos os formatos de log são igualmente úteis! Logs estruturados,
65+
em particular, são recomendados para observabilidade em produção porque são
66+
fáceis de analisar e interpretar em escala. A seção a seguir explica as
67+
diferenças entre logs estruturados, não estruturados e semiestruturados.
68+
69+
### Logs estruturados {#structured-logs}
70+
71+
Um log estruturado é aquele que segue um formato consistente e legível por
72+
máquina. Para aplicações, um dos formatos mais comuns é o JSON:
73+
74+
```json
75+
{
76+
"timestamp": "2024-08-04T12:34:56.789Z",
77+
"level": "INFO",
78+
"service": "user-authentication",
79+
"environment": "production",
80+
"message": "User login successful",
81+
"context": {
82+
"userId": "12345",
83+
"username": "johndoe",
84+
"ipAddress": "192.168.1.1",
85+
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
86+
},
87+
"transactionId": "abcd-efgh-ijkl-mnop",
88+
"duration": 200,
89+
"request": {
90+
"method": "POST",
91+
"url": "/api/v1/login",
92+
"headers": {
93+
"Content-Type": "application/json",
94+
"Accept": "application/json"
95+
},
96+
"body": {
97+
"username": "johndoe",
98+
"password": "******"
99+
}
100+
},
101+
"response": {
102+
"statusCode": 200,
103+
"body": {
104+
"success": true,
105+
"token": "jwt-token-here"
106+
}
107+
}
108+
}
109+
```
110+
111+
e para componentes de infraestrutura, o _Common Log Format_ (CLF) é
112+
frequentemente usado:
113+
114+
```text
115+
127.0.0.1 - johndoe [04/Aug/2024:12:34:56 -0400] "POST /api/v1/login HTTP/1.1" 200 1234
116+
```
117+
118+
Também é comum ter logs estruturados com uma mistura de formatos. Por exemplo,
119+
um log no formato _Extended Log Format_ (ELF) pode combinar JSON com os dados
120+
separados por espaços em um log CLF.
121+
122+
```text
123+
192.168.1.1 - johndoe [04/Aug/2024:12:34:56 -0400] "POST /api/v1/login HTTP/1.1" 200 1234 "http://example.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36" {"transactionId": "abcd-efgh-ijkl-mnop", "responseTime": 150, "requestBody": {"username": "johndoe"}, "responseHeaders": {"Content-Type": "application/json"}}
124+
```
125+
126+
Para aproveitar ao máximo este log, transforme tantos os dados formatados em
127+
JSON quanto os formatados em ELF em um mesmo formato comum para facilitar a
128+
análise em um backend de observabilidade. O `filelogreceiver` do
129+
[OpenTelemetry Collector](/docs/collector) contém maneiras padronizadas de
130+
analisar logs como estes.
131+
132+
Logs estruturados são a melhor forma de usar logs. Por serem emitidos em um
133+
formato consistente, eles são simples de extrair informações, o que facilita o
134+
pré-processamento no OpenTelemetry Collector, a correlação com outros dados e,
135+
por fim, a análise em um backend de Observabilidade.
136+
137+
### Logs não estruturados {#unstructured-logs}
138+
139+
Logs não estruturados são logs que não seguem uma estrutura consistente. Eles
140+
podem ser mais legíveis para humanos e são frequentemente usados em
141+
desenvolvimento. No entanto, não é aconselhável usar logs não estruturados para
142+
fins de observabilidade em produção, pois são muito mais difíceis de analisar e
143+
interpretar em escala.
144+
145+
Exemplos de logs não estruturados:
146+
147+
```text
148+
[ERROR] 2024-08-04 12:45:23 - Failed to connect to database. Exception: java.sql.SQLException: Timeout expired. Attempted reconnect 3 times. Server: db.example.com, Port: 5432
149+
150+
System reboot initiated at 2024-08-04 03:00:00 by user: admin. Reason: Scheduled maintenance. Services stopped: web-server, database, cache. Estimated downtime: 15 minutes.
151+
152+
DEBUG - 2024-08-04 09:30:15 - User johndoe performed action: file_upload. Filename: report_Q3_2024.pdf, Size: 2.3 MB, Duration: 5.2 seconds. Result: Success
153+
```
154+
155+
É possível armazenar e analisar logs não estruturados em produção, embora seja
156+
necessário realizar um trabalho significativo para analisá-los ou processa-los
157+
antes de serem legíveis por máquinas. Por exemplo, os três logs acima exigirão
158+
uma expressão regular para analisar a marcação de data e hora e personalizar
159+
analisadores para extrair os campos da mensagem de log de forma consistente.
160+
Isso geralmente é necessário para que um _backend_ de log saiba como classificar
161+
e organizar os logs por data e hora. Embora seja possível processar logs não
162+
estruturados para análise, fazer isso pode dar mais trabalho do que mudar para
163+
logs estruturados, através de um framework de log padrão em suas aplicações.
164+
165+
### Logs Semiestruturados {#semistructured-logs}
166+
167+
Um log semiestruturado é um log que utiliza um padrão interno consistente para
168+
distinguir dados de forma que sejam legíveis por máquinas, mas que pode não usar
169+
o mesmo formato e delimitadores entre os dados em diferentes sistemas.
170+
171+
Exemplo de um log semiestruturado:
172+
173+
```text
174+
2024-08-04T12:45:23Z level=ERROR service=user-authentication userId=12345 action=login message="Failed login attempt" error="Invalid password" ipAddress=192.168.1.1 userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
175+
```
176+
177+
Embora sejam legíveis por máquinas, logs semiestruturados podem precisar de
178+
diferentes tipos de analisadores para interpretação em grande escala.
179+
180+
## Componentes de logs do OpenTelemetry {#opentelemetry-logging-components}
181+
182+
A seguir estão listados os conceitos e componentes que sustentam o suporte de
183+
log do OpenTelemetry.
184+
185+
### Conector / Ponte de Log {#log-appender--bridge}
186+
187+
Como desenvolvedor de aplicações, você não deve chamar diretamente a **API de
188+
Logs Bridge**, pois ela é destinada a pessoas desenvolvendo bibliotecas de
189+
geração de logs que querem construir conectores ou pontes de log. Em vez disso,
190+
você deve usar sua biblioteca de log preferida e configurá-la para utilizar um
191+
conector de log (ou ponte de log) capaz de emitir logs para um OpenTelemetry
192+
_LogRecordExporter_.
193+
194+
Os SDKs do OpenTelemetry oferecem essa funcionalidade.
195+
196+
### Logger Provider
197+
198+
> Parte da **API de Logs Bridge** e deve ser usada apenas se você estiver
199+
> desenvolvendo uma biblioteca de log.
200+
201+
Um Logger Provider (às vezes chamado de `LoggerProvider`) é uma fábrica de
202+
`Logger`s. Na maioria dos casos, o Logger Provider é inicializado uma vez, e seu
203+
ciclo de vida coincide com o ciclo de vida da aplicação. A inicialização do
204+
Logger Provider também inclui a inicialização do Resource e Exporter.
205+
206+
### Logger
207+
208+
> Parte da **API de Logs Bridge** e deve ser usada apenas se você estiver
209+
> desenvolvendo uma biblioteca de log.
210+
211+
Um Logger cria registros de log. Loggers são criados a partir do Log Providers.
212+
213+
### Log Record Exporter
214+
215+
Os Log Record Exporters enviam registros de log para um consumidor. Esse
216+
consumidor pode ser a saída padrão de um terminal para depuração durante o
217+
desenvolvimento, o OpenTelemetry Collector, ou qualquer backend de código aberto
218+
ou de fornecedor de sua escolha.
219+
220+
### Log Record
221+
222+
Um log record representa a gravação de um evento. No OpenTelemetry, um log
223+
record contém dois tipos de campos:
224+
225+
- Campos nomeados de nível superior com tipo e significado específicos
226+
- Campos de recurso e atributos com valor e tipo variáveis
227+
228+
Os campos de nível superior são:
229+
230+
| Nome do Campo | Descrição |
231+
| -------------------- | --------------------------------------------------------- |
232+
| Timestamp | Momento em que o evento ocorreu. |
233+
| ObservedTimestamp | Momento em que o evento foi observado. |
234+
| TraceId | ID de rastreamento da solicitação. |
235+
| SpanId | ID do trecho da solicitação. |
236+
| TraceFlags | Flag de rastreamento W3C. |
237+
| SeverityText | Texto de severidade (também conhecido como nível de log). |
238+
| SeverityNumber | Valor numérico da severidade. |
239+
| Body | O corpo do registro de log. |
240+
| Resource | Descreve a origem do log. |
241+
| InstrumentationScope | Descreve o escopo que emitiu o log. |
242+
| Attributes | Informações adicionais sobre o evento. |
243+
244+
Para mais detalhes sobre registros de log e campos de log, consulte
245+
[Modelo de Dados de Logs](/docs/specs/otel/logs/data-model/).
246+
247+
### Especificação {#specification}
248+
249+
Para saber mais sobre logs no OpenTelemetry, consulte a [especificação
250+
de logs][].
251+
252+
[especificação de logs]: /docs/specs/otel/overview/#log-signal

0 commit comments

Comments
 (0)