Skip to content

Commit 5dbbce8

Browse files
authored
[es] restore observability primer (#5589)
1 parent f0e7be3 commit 5dbbce8

File tree

1 file changed

+159
-0
lines changed

1 file changed

+159
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
---
2+
title: Introducción a la Observabilidad
3+
description: Conceptos básicos de observabilidad.
4+
weight: 9
5+
cSpell:ignore: webshop
6+
default_lang_commit: e58a252c44875b04247b53e2394b4634f5a0a84e
7+
---
8+
9+
## ¿Qué es la observabilidad? {#what-is-observability}
10+
11+
La observabilidad te permite entender un sistema desde el exterior al permitirte
12+
hacer preguntas sobre ese sistema sin conocer su funcionamiento interno. Además,
13+
te permite solucionar problemas nuevos con facilidad, es decir, "lo que no
14+
sabemos que no sabemos". También te ayuda a responder a la pregunta: "¿Por qué
15+
está ocurriendo esto?"
16+
17+
Para hacer esas preguntas sobre tu sistema, tu aplicación debe estar
18+
adecuadamente instrumentada. Es decir, el código de la aplicación debe emitir
19+
[señales](/docs/concepts/signals/) como
20+
[trazas](/docs/concepts/signals/traces/),
21+
[métricas](/docs/concepts/signals/metrics/) y
22+
[logs](/docs/concepts/signals/logs/). Una aplicación está adecuadamente
23+
instrumentada cuando los desarrolladores no necesitan agregar más
24+
instrumentación para solucionar un problema, porque ya tienen toda la
25+
información que necesitan.
26+
27+
[OpenTelemetry](/docs/what-is-opentelemetry/) es el mecanismo por el cual el
28+
código de la aplicación se instrumenta para ayudar a hacer un sistema
29+
observable.
30+
31+
## Confiabilidad y métricas
32+
33+
**Telemetría** se refiere a los datos emitidos por un sistema y su
34+
comportamiento. Los datos pueden venir en forma de
35+
[trazas](/docs/concepts/signals/traces/),
36+
[métricas](/docs/concepts/signals/metrics/) y
37+
[logs](/docs/concepts/signals/logs/).
38+
39+
**Confiabilidad** responde a la pregunta: "¿Está el servicio haciendo lo que los
40+
usuarios esperan que haga?" Un sistema podría estar funcionando el 100% del
41+
tiempo, pero si, cuando un usuario hace clic en "Agregar al carrito" para añadir
42+
un par de zapatos negros a su carrito, el sistema no siempre agrega los zapatos
43+
negros, entonces el sistema podría ser **no** confiable.
44+
45+
**Métricas** son agregaciones durante un período de tiempo de datos numéricos
46+
sobre tu infraestructura o aplicación. Por ejemplo: tasa de error del sistema,
47+
uso de CPU y tasa de solicitudes para un servicio determinado. Para más
48+
información sobre métricas y cómo se relacionan con OpenTelemetry, consulta
49+
[Métricas](/docs/concepts/signals/metrics/).
50+
51+
**SLI**, o Indicador de Nivel de Servicio, representa una medición del
52+
comportamiento de un servicio. Un buen SLI mide tu servicio desde la perspectiva
53+
de tus usuarios. Un ejemplo de SLI puede ser la velocidad con la que se carga
54+
una página web.
55+
56+
**SLO**, u Objetivo de Nivel de Servicio, representa el medio por el cual la
57+
confiabilidad se comunica a una organización u otros equipos. Esto se logra
58+
adjuntando uno o más SLIs al valor comercial.
59+
60+
## Entendiendo el trazado distribuido
61+
62+
El trazado distribuido te permite observar las solicitudes a medida que se
63+
propagan a través de sistemas complejos y distribuidos. El trazado distribuido
64+
mejora la visibilidad de la salud de tu aplicación o sistema y te permite
65+
depurar comportamientos que son difíciles de reproducir localmente. Es esencial
66+
para sistemas distribuidos, que comúnmente tienen problemas no determinísticos o
67+
son demasiado complicados para reproducir localmente.
68+
69+
Para entender el trazado distribuido, necesitas comprender el papel de cada uno
70+
de sus componentes: logs, spans y trazas.
71+
72+
### Logs
73+
74+
Un **log** es un mensaje con marca de tiempo emitido por servicios u otros
75+
componentes. A diferencia de las [trazas](#distributed-traces), no están
76+
necesariamente asociados con una solicitud o transacción de usuario en
77+
particular. Los logs se pueden encontrar casi en cualquier parte del software.
78+
Los logs han sido ampliamente utilizados en el pasado tanto por desarrolladores
79+
como operadores para ayudarles a entender el comportamiento del sistema.
80+
81+
Ejemplo de un log:
82+
83+
```text
84+
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
85+
```
86+
87+
Los logs no son suficientes para rastrear la ejecución del código, ya que
88+
normalmente carecen de información contextual, como dónde fueron llamados.
89+
90+
Se vuelven mucho más útiles cuando se incluyen como parte de un span o cuando se
91+
correlacionan con una traza y un span.
92+
93+
Para más información sobre los logs y cómo se relacionan con OpenTelemetry,
94+
consulta Logs.
95+
96+
### Spans
97+
98+
Un **span** representa una unidad de trabajo u operación. Los spans rastrean
99+
operaciones específicas que realiza una solicitud, mostrando qué sucedió durante
100+
el tiempo en que se ejecutó esa operación.
101+
102+
Un span contiene nombre, datos relacionados con el tiempo,
103+
[mensajes de log estructurados](/docs/concepts/signals/traces/#span-events) y
104+
[otros metadatos (es decir, atributos)](/docs/concepts/signals/traces/#attributes)
105+
para proporcionar información sobre la operación que rastrea.
106+
107+
#### Atributos de span
108+
109+
Los atributos de span son metadatos adjuntos a un span.
110+
111+
La siguiente tabla contiene ejemplos de atributos de span:
112+
113+
| Clave | Valor |
114+
| :-------------------------- | :--------------------------------------------------------------------------------- |
115+
| `http.request.method` | `"GET"` |
116+
| `network.protocol.version` | `"1.1"` |
117+
| `url.path` | `"/webshop/articles/4"` |
118+
| `url.query` | `"?s=1"` |
119+
| `server.address` | `"example.com"` |
120+
| `server.port` | `8080` |
121+
| `url.scheme` | `"https"` |
122+
| `http.route` | `"/webshop/articles/:article_id"` |
123+
| `http.response.status_code` | `200` |
124+
| `client.address` | `"192.0.2.4"` |
125+
| `client.socket.address` | `"192.0.2.5"` (el cliente pasa por un proxy) |
126+
| `user_agent.original` | `"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"` |
127+
128+
Para más información sobre los spans y cómo se relacionan con OpenTelemetry,
129+
consulta [Spans](/docs/concepts/signals/traces/#spans).
130+
131+
### Trazas distribuidas {#distributed-traces}
132+
133+
Una **traza distribuida**, más comúnmente conocida como **traza**, registra los
134+
caminos tomados por las solicitudes (realizadas por una aplicación o un usuario
135+
final) a medida que se propagan a través de arquitecturas multi-servicio, como
136+
aplicaciones de microservicios y sin servidor.
137+
138+
Una traza está compuesta por uno o más spans. El primer span representa el span
139+
raíz. Cada span raíz representa una solicitud desde el inicio hasta el final.
140+
Los spans debajo del span principal proporcionan un contexto más detallado de lo
141+
que ocurre durante una solicitud (o los pasos que componen una solicitud).
142+
143+
Sin el trazado, encontrar la causa raíz de los problemas de rendimiento en un
144+
sistema distribuido puede ser un desafío. El trazado hace que depurar y
145+
comprender los sistemas distribuidos sea menos abrumador al desglosar lo que
146+
sucede dentro de una solicitud a medida que fluye a través de un sistema
147+
distribuido.
148+
149+
Muchos sistemas de observabilidad visualizan las trazas como diagramas de
150+
cascada que se ven así:
151+
152+
![Trazado Ejemplo](/img/waterfall-trace.svg 'Diagrama de cascada de trazas')
153+
154+
Los diagramas de cascada muestran la relación padre-hijo entre un span raíz y
155+
sus spans hijos. Cuando un span encapsula otro span, esto también representa una
156+
relación anidada.
157+
158+
Para más información sobre las trazas y cómo se relacionan con OpenTelemetry,
159+
consulta [Trazas](/docs/concepts/signals/traces/).

0 commit comments

Comments
 (0)