|
| 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 | + |
| 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