View a markdown version of this page

Envie métricas usando o OpenTelemetry - Amazon CloudWatch

Envie métricas usando o OpenTelemetry

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

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 para mais informações sobre endpoint, opções de autenticação e limites.

Início rápido: publique sua primeira métrica

Opção 1: OTel Collector (recomendado para produção)

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.

Opção 2: SDK do OTel (exemplo em Python)

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)

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

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.

Verifique se as métricas estão chegando

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

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.