

# Envie métricas usando o OpenTelemetry
<a name="metrics-otel-send"></a>

Você pode publicar métricas personalizadas no CloudWatch usando o OpenTelemetry Protocol (OTLP). Você pode usar os SDKs do OTel (Java, Python, Go, .NET, Node.js), o OTel Collector ou qualquer cliente compatível com OTLP.

## Endpoint do CloudWatch OTLP
<a name="metrics-otel-send-endpoint"></a>

Envie métricas para o endpoint OTLP do CloudWatch na sua região:

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

A autenticação usa a assinatura SigV4 da AWS padrão. O nome do serviço é `monitoring`. Consulte [Endpoints do OTLP](CloudWatch-OTLPEndpoint.md) para mais informações sobre endpoint, opções de autenticação e limites.

## Início rápido: publique sua primeira métrica
<a name="metrics-otel-send-quickstart"></a>

### Opção 1: OTel Collector (recomendado para produção)
<a name="metrics-otel-send-collector"></a>

Configure um coletor OTel com o exportador HTTP OTLP e a autenticação 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 obter instruções detalhadas da configuração, consulte [Introdução](CloudWatch-OTLPGettingStarted.md).

### Opção 2: SDK do OTel (exemplo em 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"})
```

### Opção 3: SDK do OTel (exemplo em 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"
));
```

## Permissões do IAM necessárias
<a name="metrics-otel-send-iam"></a>

As métricas de envio de identidade precisam da permissão `cloudwatch:PutMetricData`. Para a autenticação Sigv4, anexe a seguinte política:

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

Para a autenticação do token do portador, consulte [Configurar autenticação do token do portador para Metrics](CloudWatch-OTLP-MetricsBearerTokenAuth.md).

## Verifique se as métricas estão chegando
<a name="metrics-otel-send-verify"></a>

Abra o console do CloudWatch, vá até **Query Studio** e execute:

```
http_requests_total
```

Geralmente, as métricas aparecem dentro de 1 a 2 minutos após o envio do primeiro ponto de dados.

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

A tabela a seguir descreve os tipos de métrica OTel que o CloudWatch suporta e como consultá-los com o ProMQL.


| Tipo de métricas OTel | Comportamento do PromQL | 
| --- | --- | 
| Contador | Use rate() ou increase() para consultar | 
| Indicador | Consultar diretamente (valor atual) | 
| Histograma | Utilize histogram\_quantile() para percentis | 

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

Siga estas recomendações ao enviar métricas por meio do OTLP:
+ **Use nomes métricos significativos**: siga as convenções de nomenclatura do OTel (por exemplo, `http.server.request.duration` ou `http_request_duration_seconds`).
+ **Mantenha a cardinalidade do rótulo razoável**: evite IDs de solicitação ou UUIDs como valores do rótulo.
+ **Defina um intervalo de exportação apropriado**: 60 segundos é o padrão. Intervalos mais curtos aumentam o custo.
+ **Use atributos de recursos**: use atributos de recursos para metadados estáticos (nome do serviço, versão, ambiente) em vez de rótulos por ponto de dados.