8.0 KiB
| title | description | weight | keywords | owner | test | ||||
|---|---|---|---|---|---|---|---|---|---|
| Configurar el muestreo de trazas | Aprenda los diferentes enfoques sobre cómo configurar el muestreo de trazas en los proxies. | 4 |
|
istio/wg-policies-and-telemetry-maintainers | yes |
Istio proporciona múltiples formas de configurar el muestreo de trazas. En esta página aprenderá y comprenderá todas las diferentes formas en que se puede configurar el muestreo.
Antes de empezar
- Asegúrese de que sus applications propaguen las cabeceras de trazado como se describe aquí.
Configuraciones de muestreo de trazas disponibles
-
Muestreador de Porcentaje: una tasa de muestreo aleatoria para el porcentaje de solicitudes que se seleccionarán para la generación de trazas.
-
Muestreador de OpenTelemetry Personalizado: una implementación de muestreador personalizada, que debe emparejarse con el
OpenTelemetryTracingProvider.
Muestreador de Porcentaje
{{< boilerplate telemetry-tracing-tips >}}
El porcentaje de la tasa de muestreo aleatorio utiliza el valor de porcentaje especificado para elegir qué solicitudes muestrear.
La tasa de muestreo debe estar en el rango de 0.0 a 100.0 con una precisión de 0.01. Por ejemplo, para trazar 5 solicitudes de cada 10000, use 0.05 como valor aquí.
Hay tres formas de configurar la tasa de muestreo aleatorio:
API de Telemetría
El muestreo se puede configurar en varios ámbitos: en toda la malla, en el namespace o en el workload, lo que ofrece una gran flexibilidad. Para obtener más información, consulte la documentación de la API de Telemetría.
Instale Istio sin establecer sampling dentro de defaultConfig:
{{< text syntax=bash snip_id=install_without_sampling >}} $ cat <<EOF | istioctl install -y -f - apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: enableTracing: true extensionProviders: - name: otel-tracing opentelemetry: port: 4317 service: opentelemetry-collector.observability.svc.cluster.local resource_detectors: environment: {} EOF {{< /text >}}
Habilite el proveedor de trazado a través de la API de Telemetría y establezca el randomSamplingPercentage:
{{< text syntax=bash snip_id=enable_telemetry_with_sampling >}} $ kubectl apply -f - <<EOF apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: otel-demo spec: tracing:
- providers:
- name: otel-tracing randomSamplingPercentage: 10 EOF {{< /text >}}
Usando MeshConfig
El muestreo de porcentaje aleatorio se puede configurar globalmente a través de MeshConfig.
{{< text syntax=bash snip_id=install_default_sampling >}} $ cat <<EOF | istioctl install -y -f - apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: enableTracing: true defaultConfig: tracing: sampling: 10 extensionProviders: - name: otel-tracing opentelemetry: port: 4317 service: opentelemetry-collector.observability.svc.cluster.local resource_detectors: environment: {} EOF {{< /text >}}
Luego, habilite el proveedor de trazado a través de la API de Telemetría. Tenga en cuenta que no establecemos randomSamplingPercentage aquí.
{{< text syntax=bash snip_id=enable_telemetry_no_sampling >}} $ kubectl apply -f - <<EOF apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing:
- providers:
- name: otel-tracing EOF {{< /text >}}
Usando la anotación proxy.istio.io/config
Puede agregar la anotación proxy.istio.io/config a la especificación de metadatos de su Pod
para anular cualquier configuración de muestreo de toda la malla.
Por ejemplo, para anular el muestreo de toda la malla anterior, agregaría lo siguiente a su manifiesto de pod:
{{< text syntax=yaml snip_id=none >}} apiVersion: apps/v1 kind: Deployment metadata: name: curl spec: ... template: metadata: ... annotations: ... proxy.istio.io/config: | tracing: sampling: 20 spec: ... {{< /text >}}
Muestreador de OpenTelemetry Personalizado
La especificación de OpenTelemetry define la API del Muestreador. La API del Muestreador permite construir un muestreador personalizado que puede tomar decisiones de muestreo más inteligentes y eficientes, como el muestreo de probabilidad.
Dichos muestreadores se pueden emparejar con el OpenTelemetryTracingProvider.
{{< quote >}} La implementación del muestreador reside en el proxy y se puede encontrar en Muestreadores de OpenTelemetry de Envoy. {{< /quote >}}
Configuraciones actuales de muestreadores personalizados en Istio:
Los muestreadores personalizados se configuran a través de MeshConfig. Aquí hay un ejemplo de cómo configurar el muestreador de Dynatrace:
{{< text syntax=yaml snip_id=none >}} apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: extensionProviders: - name: otel-tracing opentelemetry: port: 443 service: abc.live.dynatrace.com/api/v2/otlp http: path: "/api/v2/otlp/v1/traces" timeout: 10s headers: - name: "Authorization" value: "Api-Token dt0c01." dynatrace_sampler: tenant: "abc" cluster_id: 123 {{< /text >}}
Orden de precedencia
Con múltiples formas de configurar el muestreo, es importante comprender el orden de precedencia de cada método.
Cuando se utiliza el muestreador de porcentaje aleatorio, el orden de precedencia es:
API de Telemetría > Anotación de Pod > MeshConfig |
Esto significa que, si se define un valor en todos los anteriores, el valor en la API de Telemetría es el que se selecciona.
Cuando se configura un muestreador de OpenTelemetry personalizado, el orden de precedencia es:
Muestreador de OTel Personalizado > (API de Telemetría | Anotación de Pod | MeshConfig) |
Esto significa que, si se configura un muestreador de OpenTelemetry personalizado, anula todos los demás métodos.
Además, el valor del porcentaje aleatorio se establece en 100 y no se puede cambiar. Esto es importante,
porque el muestreador personalizado necesita recibir el 100% de los spans para poder realizar correctamente su decisión.
Desplegar el OpenTelemetry Collector
{{< boilerplate start-otel-collector-service >}}
Desplegar la Application Bookinfo
Despliegue la application de ejemplo Bookinfo.
Generar trazas usando la muestra de Bookinfo
-
Cuando la application Bookinfo esté en funcionamiento, acceda a
http://$GATEWAY_URL/productpageuna o más veces para generar información de traza.{{< boilerplate trace-generation >}}
Limpieza
-
Elimine el recurso Telemetry:
{{< text syntax=bash snip_id=cleanup_telemetry >}} $ kubectl delete telemetry otel-demo {{< /text >}}
-
Elimine cualquier proceso
istioctlque aún pueda estar ejecutándose usando control-C o:{{< text syntax=bash snip_id=none >}} $ istioctl uninstall --purge -y {{< /text >}}
-
Desinstale el OpenTelemetry Collector:
{{< text syntax=bash snip_id=cleanup_collector >}} $ kubectl delete -f @samples/open-telemetry/otel.yaml@ -n observability $ kubectl delete namespace observability {{< /text >}}