Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pt] Add pt/content/docs/concepts/observability-primer.md #4946

156 changes: 156 additions & 0 deletions content/pt/docs/concepts/observability-primer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
---
title: Introdução à Observabilidade
description: Conceitos básicos de Observabilidade
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
weight: 9
cSpell:ignore: webshop
default_lang_commit: 6e3124135e38e749cdda15271d891813d6bc43db
---

## O que é Observabilidade?

Observabilidade permite que você compreenda um sistema de fora para dentro,
permitindo que você faça perguntas sobre ele sem precisar conhecer seu
funcionamento interno. Além disso, facilita a resolução de problemas e o
tratamento de novos problemas, ou seja, "problemas desconhecidos". Também
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
funcionamento interno. Além disso, facilita a resolução de problemas e o
tratamento de novos problemas, ou seja, "problemas desconhecidos". Também
funcionamento interno. Além disso, facilita a resolução e tratamento
de novos problemas, ou seja, "problemas desconhecidos". Também

Deixando um pouco menos repetitivo.

ajuda a responder à pergunta "Por que isso está acontecendo?"

Para fazer essas perguntas sobre o seu sistema, sua aplicação deve estar
devidamente instrumentada. Ou seja, o código da aplicação deve emitir
[sinais](/docs/concepts/signals/) como
[rastros](/docs/concepts/signals/traces/),
[métricas](/docs/concepts/signals/metrics/) e
[logs](/docs/concepts/signals/logs/). Uma aplicação está devidamente
instrumentada quando os desenvolvedores não precisam adicionar mais
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
instrumentação para solucionar um problema, pois já tem todas as informações
necessárias.

O [OpenTelemetry](/docs/what-is-opentelemetry/) é o mecanismo pelo qual o código
da aplicação é instrumentado para ajudar a tornar um sistema observável.

## Confiabilidade e métricas

**Telemetria** refere-se aos dados emitidos por um sistema e seu comportamento.
Esses dados podem vir na forma de [rastros](/docs/concepts/signals/traces/),
[métricas](/docs/concepts/signals/metrics/) e
[logs](/docs/concepts/signals/logs/).

**Confiabilidade** responde à perguntas: "O serviço está fazendo o que os
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
usuários esperam que ele faça?" Um sistema pode estar ativo 100% do tempo, mas
se, quando um usuário clica em "Adicionar ao Carrinho" para adicionar um par de
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
sapatos pretos ao carrinho de compras, o sistema nem sempre adiciona sapatos
pretos, então o sistema pode ser **não** confiável.

**Métricas** são agregações ao longo de um período de tempo, de dados numéricos
sobre sua infraestrutura ou aplicação. Exemplos incluem: taxa de erro do
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
sistema, utilização da CPU e taxa de requisições para um determinado serviço.
Para mais informações sobre métricas e como elas se relacionam com o
OpenTelemetry, consulte [Métricas](/docs/concepts/signals/metrics/).

**SLI**, ou _Service Level Indicator_, representa uma medida do comportamento de
um serviço. Um bom SLI mede seu serviço do ponto de vista dos seus usuários. Um
exemplo de SLI pode ser a velocidade de carregamento de uma página web.

**SLO**, ou _Service Level Objective_, representa a forma como a confiabilidade
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
é comunicada para uma organização/outras equipes. Isso é feito associando um ou
mais SLIs ao valor de negócio.

## Compreendendo rastreamento distribuído

O rastreamento distribuído permite que você observe as requisições que se
propagam por sistemas complexos e distribuídos. O rastreamento distribuído
melhora a visibilidade da saúde da sua aplicação ou sistema, permitindo que você
faça depurações de comportamentos difíceis de reproduzir localmente. É essencial
para sistemas distribuídos, que comumente têm problemas não determinísticos ou
são muito complicados para reproduzir localmente.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Para entender o rastreamento distribuído, você precisa compreender a função de
cada um de seus componentes: logs, trecho e rastros.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

### Logs

Um **log** é uma mensagem com registro de data e hora emitida por serviços ou
outros componentes. Ao contrário dos [rastros](#distributed-traces), eles não
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
estão necessariamente associados a uma requisição de usuário ou transação
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
específica. Logs podem ser encontrados em qualquer lugar no software. Logs foram
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
muito utilizados no passado tanto por desenvolvedores quanto por operadores para
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
entender o comportamento do sistema.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Exemplo de log:

```text
I, [2021-02-23T13:26:23.505892 #22473] INFO -- : [6459ffe1-ea53-4044-aaa3-bf902868f730] Started GET "/" for ::1 at 2021-02-23 13:26:23 -0800
```

Logs não são suficientes para rastrear a execução do código, pois geralmente não
apresentam informações contextuais, como e de onde foram chamados.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Eles se tornam muito mais úteis quando incluídos como parte de um
[trecho](#spans) ou quando são correlacionados com um rastro e um trecho.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Para mais informações sobre logs e como eles se relacionam com o OpenTelemetry,
consulte [Logs](/docs/concepts/signals/logs/).

### Trechos

Um **trecho** representa uma unidade de trabalho ou operação. Trechos rastreiam
operações específicas que uma requisição realiza, mostrando o que aconteceu
durante o tempo em que essa operação foi executada.

Um trecho contém nome, dados relacionados ao tempo,
[mensagens de log estruturadas](/docs/concepts/signals/traces/#span-events) e
[outros metadados (ou seja, Atributos)](/docs/concepts/signals/traces/#attributes)
para fornecer informações sobre a operação que é rastreada.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

#### Atributos de Trecho
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Os atributos de trechos são metadados anexados a um trecho.

A tabela a seguir contém exemplos de atributos de trecho:

| Key | Value |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| Key | Value |
| Nome | Valor |

Não sei se não foi traduzido por querer, nem se essa é a melhor tradução para "key" 😅

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No dia a dia falamos chave e valor. Acha que fica melhor que Nome?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah verdade, chave e valor fica melhor mesmo 👍

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acho melhor chave-valor mesmo tbm

| :-------------------------- | :--------------------------------------------------------------------------------- |
| `http.request.method` | `"GET"` |
| `network.protocol.version` | `"1.1"` |
| `url.path` | `"/webshop/articles/4"` |
| `url.query` | `"?s=1"` |
| `server.address` | `"example.com"` |
| `server.port` | `8080` |
| `url.scheme` | `"https"` |
| `http.route` | `"/webshop/articles/:article_id"` |
| `http.response.status_code` | `200` |
| `client.address` | `"192.0.2.4"` |
| `client.socket.address` | `"192.0.2.5"` (o cliente passa por um proxy) |
| `user_agent.original` | `"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"` |

Para mais informações sobre trechos e como eles se relacionam com o
OpenTelemetry, confira [Trecho](/docs/concepts/signals/traces/#spans).
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

### Rastros Distribuídos
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Um **rastro distribuído**, mais comumente conhecido como rastro, registra os
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
caminhos percorridos pelas requisições (feitas por uma aplicação ou usuário
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
final) enquanto se propagam por arquiteturas com múltiplos serviços, como
aplicações de microsserviços e serverless.
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Um rastro é composto de um ou mais trechos. O primeiro trecho representa o
trecho raiz. Cada trecho raiz representa uma requisição do início ao fim. Os
trechos abaixo do trecho raiz fornecem um contexto mais aprofundado do que
ocorre durante uma solicitação (ou quais etapas compõem uma solicitação).
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved

Sem o rastreamento, encontrar a causa raiz dos problemas de desempenho em um
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
sistema distribuído pode ser desafiador. O rastreamento torna a depuração e o
entendimento de sistemas distribuídos menos assustador, analisando o que
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
acontece dentro de uma requisição à medida que ela flui por um sistema
distribuído.

Muitos _backends_ de Observabilidade visualizam rastros como diagramas em
cascata que se parecem com isto:

![Exemplo de Rastro](/img/waterfall-trace.svg 'Diagrama em cascata de rastreamento')

Os diagramas em cascata mostram a relação pai-filho entre um trecho raiz e seus
trechos filhos. Quando um trecho encapsula outro trecho, isso também representa
uma relação aninhada.

Para mais informações sobre rastros e como eles se relacionam com o
OpenTelemetry, confira [Rastros](/docs/concepts/signals/traces/).
EzzioMoreira marked this conversation as resolved.
Show resolved Hide resolved
Loading