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