View a markdown version of this page

Migración de métricas clásicas a OTel - Amazon CloudWatch

Migración de métricas clásicas a OTel

Los clientes que actualmente publican métricas personalizadas a través de PutMetricData o EMF pueden migrar gradualmente a la ruta de OTel. No hay día marcado: la migración se hace por carga de trabajo y a su propio ritmo.

Enfoque de migración

La migración tiene cuatro fases:

  1. Escritura dual: publique las métricas a través de las rutas clásica y de OTel de forma simultánea.

  2. Validación:confirme que las métricas de OTel aparezcan en Query Studio a través de PromQL.

  3. Recreación de consumidores: actualice las alarmas y los paneles para utilizar los nombres de las métricas de PromQL y OTel.

  4. Migración total: deje de publicar en versión clásica después de validar los consumidores de OTel.

Paso 1: instrumentación con el SDK de OTel (escritura dual)

Agrega el SDK de OTel junto con las llamadas a PutMetricData existentes. Ambas rutas se pueden publicar simultáneamente, por lo que no perderá datos.

# Existing Classic publishing (keep running during migration) cloudwatch.put_metric_data( Namespace='MyApp', MetricData=[{'MetricName': 'RequestLatency', 'Value': 42.5, 'Unit': 'Milliseconds'}] ) # New OTel publishing (add this) from opentelemetry import metrics meter = metrics.get_meter("my-app") histogram = meter.create_histogram("http_request_duration_seconds") histogram.record(0.0425, {"method": "GET", "path": "/api/users"})

Paso 2: verificación en Query Studio

Para verificar que las métricas de OTel lleguen, abra la consola de CloudWatch y vaya a Query Studio. Busque su métrica:

http_request_duration_seconds

Confirme que los datos aparezcan con las etiquetas que espera.

Paso 3: recreación de las alarmas en las métricas de OTel

Cree nuevas alarmas que consulten las métricas de OTel mediante expresiones de PromQL. En el siguiente ejemplo, se muestra una alarma clásica y su equivalente en OTel.

Alarma clásica:

aws cloudwatch put-metric-alarm \ --alarm-name "high-latency" \ --namespace "MyApp" \ --metric-name "RequestLatency" \ --statistic Average --threshold 100 ...

Equivalente de OTel (alarma de PromQL):

aws cloudwatch put-metric-alarm \ --alarm-name "high-latency-otel" \ --metrics '[{"Id":"q1","Expression":"avg(http_request_duration_seconds{path=\"/api/users\"}) * 1000","Period":300,"ReturnData":true}]' \ --threshold 100 ...

Ejecute ambas alarmas en paralelo hasta que sepa con certeza que la versión de OTel se activa correctamente.

Paso 4: detención de la publicación en la versión clásica

Después de validar las alarmas y los paneles de OTel, elimine las llamadas a PutMetricData del código de la aplicación. Las métricas clásicas dejan de generar cargos de forma inmediata.

Asignación de nombres de métricas

En la siguiente tabla, se muestra los nombres de las métricas clásicas más comunes y sus equivalentes de OTel sugeridos.

Nombre clásico Nombre de OTel sugerido Notas

RequestLatency (ms)

http_request_duration_seconds

Conversión a segundos (convención de OTel)

RequestCount

http_requests_total

Uso del sufijo _total para los contadores

ErrorCount

http_server_errors_total

Uso del sufijo _total

QueueDepth

queue_depth

Medidor: no se necesita sufijo

¿Qué pasa con las métricas suministradas de AWS?

No necesita migrar manualmente las métricas suministradas de AWS (CPU de Amazon EC2, conexiones de Amazon RDS, etc.). Active el enriquecimiento de métricas suministradas de OTel para que se puedan consultar automáticamente a través de PromQL. Para obtener más información, consulte Métricas suministradas de AWS en formato OpenTelemetry.