Skip to content

Commit 296dedb

Browse files
mlunadiatheletterfotelbot[bot]
authored
[es] Translation of sampling (open-telemetry#8200)
Co-authored-by: Fabrizio Ferri-Benedetti <[email protected]> Co-authored-by: otelbot <[email protected]>
1 parent a4a09a9 commit 296dedb

File tree

3 files changed

+226
-0
lines changed

3 files changed

+226
-0
lines changed
Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
---
2+
title: Muestreo
3+
description:
4+
Aprende sobre el muestreo y las diferentes opciones de muestreo disponibles en
5+
OpenTelemetry.
6+
weight: 80
7+
default_lang_commit: 6b2e90b3
8+
---
9+
10+
Con las [trazas](/docs/concepts/signals/traces) puedes seguir las solicitudes
11+
entre servicios en un sistema distribuido. Las trazas (traces) son valiosas para
12+
obtener tanto una visión general como un análisis detallado de los sistemas.
13+
14+
Sin embargo, si la gran mayoría de tus solicitudes tienen éxito y finalizan con
15+
una latencia aceptable y sin errores, no necesitas el 100% de las trazas para
16+
observar de forma significativa tus aplicaciones y sistemas. Lo que necesitas es
17+
un muestreo adecuado.
18+
19+
![Ilustración que muestra que no todos los datos necesitan trazarse; una muestra es suficiente.](traces-venn-diagram.svg)
20+
21+
## Terminología { #terminology }
22+
23+
Es importante usar una terminología consistente al hablar de muestreo. Una traza
24+
o un span se puede considerar muestreado o no muestreado:
25+
26+
- **Muestreado**: Si una traza o un span se procesa y se exporta. Al ser elegido
27+
por el muestreador como representativo de la población, se considera
28+
"muestreado".
29+
- **No muestreado**: Si una traza o un span no se procesa ni se exporta. Al no
30+
ser elegido por el muestreador, se considera "no muestreado".
31+
32+
Usar términos consistentes como muestreado y no muestreado evita confusiones;
33+
evita decir extraer muestras (sampling out) cuando quieres indicar exclusión. Si
34+
no se procesa ni se exporta, no está muestreado. Evita traducciones literales
35+
confusas de _sampling out_.
36+
37+
## ¿Por qué muestrear? { #why-sampling }
38+
39+
El muestreo es una de las formas más efectivas de reducir los costes de
40+
observabilidad sin perder visibilidad. Aunque existen otras maneras de bajar
41+
costes, como filtrar o agregar datos, estos métodos no siempre respetan el
42+
principio de representatividad, que es crucial para análisis detallados del
43+
comportamiento de aplicaciones o sistemas.
44+
45+
La representatividad es el principio por el que un grupo más pequeño puede
46+
representar con precisión a uno mayor. Además, la representatividad puede
47+
verificarse matemáticamente, lo que permite tener alta confianza de que una
48+
muestra pequeña representa bien al conjunto.
49+
50+
Además, cuanto más datos generes, menos datos necesitas realmente para tener una
51+
muestra representativa. En sistemas de alto volumen, es común que una tasa de
52+
muestreo del 1 % o incluso menor represente con precisión al 99 % de los datos
53+
restantes.
54+
55+
### Cuándo muestrear { #when-to-sample }
56+
57+
Considera el muestreo si cumples cualquiera de los siguientes criterios:
58+
59+
- Generas 1000 o más trazas por segundo.
60+
- La mayor parte de tus datos de trazas representan tráfico saludable con poca
61+
variación.
62+
- Tienes criterios comunes, como errores o latencias altas, que suelen indicar
63+
que algo va mal.
64+
- Tienes criterios específicos del dominio que puedes usar para determinar qué
65+
datos son relevantes más allá de errores y latencia.
66+
- Puedes describir reglas comunes que determinen si los datos deben muestrearse
67+
o descartarse.
68+
- Tienes una forma de distinguir entre servicios, de modo que los servicios de
69+
alto y bajo volumen se muestreen de forma diferente.
70+
- Puedes enrutar datos no muestreados (para escenarios "por si acaso") a
71+
sistemas de almacenamiento de bajo coste.
72+
73+
Finalmente, considera tu presupuesto global. Si dispones de un presupuesto
74+
limitado para observabilidad, pero puedes invertir tiempo en establecer un
75+
muestreo efectivo, entonces generalmente merece la pena muestrear.
76+
77+
### Cuándo no muestrear { #when-not-to-sample }
78+
79+
El muestreo podría no ser apropiado para ti. Quizá debas evitar el muestreo si
80+
cumples cualquiera de los siguientes criterios:
81+
82+
- Generas muy pocos datos (decenas de trazas pequeñas por segundo o menos).
83+
- Solo usas los datos de observabilidad en agregados y por tanto puedes
84+
pre-agregarlos.
85+
- Estás sujeto a regulaciones o circunstancias que prohíben eliminar datos (y no
86+
puedes enrutar datos no muestreados a almacenamiento de bajo coste).
87+
88+
Finalmente, considera los siguientes tres costes asociados al muestreo:
89+
90+
1. El coste directo de cómputo para muestrear eficazmente los datos, como un
91+
proxy de muestreo de cola (tail sampling).
92+
2. El coste indirecto de ingeniería para mantener metodologías de muestreo
93+
eficaces a medida que se añaden aplicaciones, sistemas y datos.
94+
3. El coste de oportunidad indirecto de perder información crítica con técnicas
95+
de muestreo ineficaces.
96+
97+
El muestreo, aunque eficaz para reducir costes de observabilidad, puede
98+
introducir otros costes inesperados si no se realiza bien. Dependiendo de tu
99+
backend de observabilidad, la naturaleza de tus datos y tus intentos de
100+
muestrear de forma efectiva, puede ser más barato destinar más recursos a
101+
observabilidad, con un proveedor o con cómputo propio, en lugar de implementar
102+
muestreos complejos.
103+
104+
## Muestreo en cabecera (Head Sampling) { #head-sampling }
105+
106+
El muestreo en cabecera o en head-based es una técnica que toma la decisión de
107+
muestrear lo antes posible. La decisión de muestrear o descartar un span o una
108+
traza no se toma inspeccionando la traza en su totalidad.
109+
110+
Por ejemplo, la forma más común de muestreo en la cabecera es el
111+
[muestreo probabilístico consistente](/docs/specs/otel/trace/tracestate-probability-sampling/#consistent-sampling-decision).
112+
También se conoce como muestreo determinista. En este caso, la decisión de
113+
muestrear se basa en el ID de la traza y en el porcentaje deseado de trazas a
114+
muestrear. Esto garantiza que se muestreen trazas enteras —sin spans faltantes—
115+
a una tasa consistente, por ejemplo el 5 % de todas las trazas.
116+
117+
Las ventajas del muestreo en cabecera son:
118+
119+
- Fácil de entender
120+
- Fácil de configurar
121+
- Eficiente
122+
- Se puede aplicar en cualquier punto de la canalización de recopilación de
123+
trazas
124+
125+
La principal desventaja del muestreo en cabecera es que no es posible tomar una
126+
decisión basada en los datos de la traza completa. Por ejemplo, no puedes
127+
asegurar que todas las trazas que contienen un error se muestreen usando solo
128+
muestreo en la cabecera. Para ese caso y muchos otros, necesitas el muestreo de
129+
cola (tail sampling).
130+
131+
## Muestreo de cola (Tail Sampling) { #tail-sampling }
132+
133+
El muestreo de cola o tail-based, es cuando la decisión de muestrear una traza
134+
se toma considerando la mayoría o la totalidad de los spans dentro de la traza.
135+
El tail sampling permite muestrear trazas según criterios específicos derivados
136+
de distintas partes de una traza, lo que no es posible con el muestreo en la
137+
cabecera.
138+
139+
![Ilustración que muestra cómo los spans se originan a partir de un span raíz. Tras completarse los spans, el procesador de tail sampling toma la decisión.](tail-sampling-process.svg)
140+
141+
Algunos ejemplos de uso de muestreo de cola incluyen:
142+
143+
- Muestrear siempre las trazas que contienen un error.
144+
- Muestrear trazas en función de la latencia global.
145+
- Muestrear trazas según la presencia o el valor de atributos específicos en uno
146+
o más spans de una traza; por ejemplo, muestrear más trazas originadas en un
147+
servicio recién desplegado.
148+
- Aplicar diferentes tasas de muestreo a trazas según ciertos criterios, como
149+
cuando las trazas provienen solo de servicios de bajo volumen frente a trazas
150+
que incluyen servicios de alto volumen.
151+
152+
Como puedes ver, el muestreo de cola permite un grado mucho mayor de
153+
sofisticación en la forma de muestrear datos. Para sistemas grandes que deben
154+
muestrear telemetría, casi siempre es necesario usar tail sampling para
155+
equilibrar el volumen de datos con la utilidad de los mismos.
156+
157+
Hay tres desventajas principales del tail sampling hoy en día:
158+
159+
1. El muestreo de cola puede ser difícil de implementar. Dependiendo del tipo de
160+
técnicas de muestreo disponibles, no siempre es algo de "configurar y
161+
olvidar". A medida que cambian tus sistemas, cambiarán también tus
162+
estrategias de muestreo. En sistemas distribuidos grandes y complejos, las
163+
reglas que implementan la lógica de muestreo también pueden ser extensas y
164+
sofisticadas.
165+
2. El muestreo de cola puede ser difícil de operar. Los componentes que
166+
implementan muestreo de cola deben ser sistemas con estado que puedan aceptar
167+
y almacenar gran cantidad de datos. Según los patrones de tráfico, esto puede
168+
requerir decenas o incluso cientos de nodos de cómputo que utilicen recursos
169+
de forma diversa. Además, un sampler de cola podría necesitar "reducir" la
170+
complejidad y usar técnicas de muestreo menos costosas si no consigue
171+
procesar el volumen entrante. Por estos motivos, es crítico monitorizar los
172+
componentes de muestreo de cola para asegurar que tienen los recursos
173+
necesarios para tomar las decisiones de muestreo correctas.
174+
3. Los muestreos de cola a menudo terminan siendo tecnologías específicas de un
175+
proveedor. Si usas un proveedor de observabilidad, las opciones más efectivas
176+
de muestreo de cola disponibles pueden limitarse a lo que el proveedor
177+
ofrece.
178+
179+
Finalmente, en algunos sistemas el muestreo de cola puede usarse junto con el
180+
muestreo en cabecera. Por ejemplo, un conjunto de servicios que generan un
181+
volumen extremadamente alto de trazas podría usar primero muestreo en cabecera
182+
para reducir las trazas a un pequeño porcentaje, y luego, más adelante en la
183+
canalización de telemetría, aplicar muestreo de cola para tomar decisiones más
184+
sofisticadas antes de exportar a un backend. Esto se hace a menudo para evitar
185+
que la canalización de telemetría se sobrecargue.
186+
187+
## Soporte { #support }
188+
189+
### Collector { #collector }
190+
191+
El OpenTelemetry Collector incluye los siguientes procesadores de muestreo:
192+
193+
- [Probabilistic Sampling Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/probabilisticsamplerprocessor)
194+
- [Tail Sampling Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor)
195+
196+
### SDKs por lenguaje { #language-sdks }
197+
198+
Para las implementaciones específicas por lenguaje de la API y el SDK de
199+
OpenTelemetry, encontrarás soporte para el muestreo en las páginas de
200+
documentación respectiva:
201+
202+
{{% sampling-support-list " " %}}
203+
204+
### Proveedores { #vendors }
205+
206+
Muchos [proveedores](/ecosystem/vendors) ofrecen soluciones de muestreo
207+
completas que incorporan muestreo en cabecera, en cola y otras funciones que
208+
pueden cubrir necesidades sofisticadas de muestreo. Estas soluciones suelen
209+
estar optimizadas específicamente para el backend del proveedor. Si envías
210+
telemetría a un proveedor, considera usar sus soluciones de muestreo.

0 commit comments

Comments
 (0)