

# Envío de métricas mediante OpenTelemetry
<a name="metrics-otel-send"></a>

Puede publicar sus métricas personalizadas en CloudWatch mediante OpenTelemetry Protocol (OTLP). Puede usar los SDK de OTel (Java, Python, Go, .NET, Node.js), el recopilador de OTel o cualquier cliente compatible con OTLP.

## Punto de conexión de OTLP de CloudWatch
<a name="metrics-otel-send-endpoint"></a>

Envíe las métricas al punto de conexión de OTLP de CloudWatch en su región:

```
https://monitoring.{{region}}.amazonaws.com/v1/metrics
```

La autenticación utiliza la firma estándar de AWS SigV4. El nombre del servicio es `monitoring`. Para obtener más información sobre el punto de conexión, las opciones de autenticación y los límites, consulte [Puntos de conexión de OTLP](CloudWatch-OTLPEndpoint.md).

## Inicio rápido: publicación de la primera métrica
<a name="metrics-otel-send-quickstart"></a>

### Opción 1: recopilador de OTel (recomendado para producción)
<a name="metrics-otel-send-collector"></a>

Configure un recopilador de OTel con el exportador HTTP de OTLP y la autenticación de SigV4:

```
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:
    send_batch_size: 200
    timeout: 10s

exporters:
  otlphttp:
    tls:
      insecure: false
    metrics_endpoint: "https://monitoring.{{us-east-1}}.amazonaws.com/v1/metrics"
    auth:
      authenticator: sigv4auth

extensions:
  sigv4auth:
    service: "monitoring"
    region: "{{us-east-1}}"

service:
  extensions: [sigv4auth]
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
```

Para obtener instrucciones detalladas para la configuración, consulte [Introducción](CloudWatch-OTLPGettingStarted.md).

### Opción 2: SDK de OTel (ejemplo de Python)
<a name="metrics-otel-send-python"></a>

```
from opentelemetry import metrics
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter

# Point at the CloudWatch OTLP endpoint
exporter = OTLPMetricExporter(
    endpoint="https://monitoring.{{us-east-1}}.amazonaws.com:443/v1/metrics"
)
reader = PeriodicExportingMetricReader(exporter, export_interval_millis=60000)
provider = MeterProvider(metric_readers=[reader])
metrics.set_meter_provider(provider)

# Create and record a metric
meter = metrics.get_meter("my-app")
counter = meter.create_counter("http_requests_total", description="Total HTTP requests")
counter.add(1, {"method": "GET", "path": "/api/users", "status": "200"})
```

### Opción 3: SDK de OTel (ejemplo de Java)
<a name="metrics-otel-send-java"></a>

```
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.metrics.LongCounter;

Meter meter = GlobalOpenTelemetry.getMeter("my-app");
LongCounter counter = meter.counterBuilder("http_requests_total")
    .setDescription("Total HTTP requests")
    .build();

counter.add(1, Attributes.of(
    AttributeKey.stringKey("method"), "GET",
    AttributeKey.stringKey("path"), "/api/users",
    AttributeKey.stringKey("status"), "200"
));
```

## Permisos de IAM necesarios
<a name="metrics-otel-send-iam"></a>

Las métricas de envío de identidad necesitan el permiso `cloudwatch:PutMetricData`. Para la autenticación de SigV4, adjunte la siguiente política:

```
{
  "Effect": "Allow",
  "Action": [
    "cloudwatch:PutMetricData"
  ],
  "Resource": "*"
}
```

Para obtener información sobre la autenticación mediante token de portador, consulte [Configurar la autenticación por token de portador para métricas](CloudWatch-OTLP-MetricsBearerTokenAuth.md).

## Verificación de que las métricas lleguen
<a name="metrics-otel-send-verify"></a>

Abra la consola de CloudWatch, vaya a **Query Studio** y ejecute:

```
http_requests_total
```

Las métricas suelen aparecer entre 1 y 2 minutos después del envío del primer punto de datos.

## Tipos de métricas compatibles
<a name="metrics-otel-send-types"></a>

En la siguiente tabla, se describen los tipos de métricas de OTel compatibles con CloudWatch y cómo consultarlos con PromQL.


| Tipo de métrica de OTel | Comportamiento de PromQL | 
| --- | --- | 
| Contador | Uso de rate() o increase() para consultas | 
| Calibre | Consultas directas (valor actual) | 
| Histograma | Uso de histogram\_quantile() para percentiles | 

## Prácticas recomendadas
<a name="metrics-otel-send-best-practices"></a>

Siga estas recomendaciones cuando envíe métricas a través de OTLP:
+ **Use nombres de métricas significativos:** siga las convenciones de nomenclatura de OTel (por ejemplo, `http.server.request.duration` o `http_request_duration_seconds`).
+ **Mantenga una cardinalidad de etiquetas razonable:** evite los ID de solicitud o los UUID como valores de etiqueta.
+ **Establezca un intervalo de exportación adecuado:** 60 segundos es el valor estándar. Los intervalos más cortos aumentan el costo.
+ **Use atributos de recursos:** use atributos de recursos para metadatos estáticos (nombre del servicio, versión, entorno) en lugar de etiquetas por punto de datos.