Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Envoyez des métriques à l'aide de OpenTelemetry
Vous pouvez publier des métriques personnalisées à CloudWatch l'aide du OpenTelemetry protocole (OTLP). Vous pouvez utiliser les SDK OTel (Java, Python, Go, .NET Node.js), le collecteur OTel ou n'importe quel OTLP-compatible client.
CloudWatch Point de terminaison OTLP
Envoyez des métriques au point de terminaison CloudWatch OTLP de votre région :
https://monitoring.region.amazonaws.com/v1/metrics
L'authentification utilise la signature standard AWS SigV4. Le nom du service estmonitoring. Pour plus d'informations sur le point de terminaison, les options d'authentification et les limites, consultezPoints de terminaison OTLP.
Démarrage rapide : publiez votre premier indicateur
Option 1 : OTel Collector (recommandé pour la production)
Configurez un collecteur OTel avec l'exportateur HTTP OTLP et l'authentification 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]
Pour des instructions de configuration détaillées, voirPrise en main.
Option 2 : SDK OTel (exemple en 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"})
Option 3 : SDK OTel (exemple 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" ));
Autorisations IAM nécessaires
Les métriques d'envoi d'identité nécessitent une cloudwatch:PutMetricData autorisation. Pour l'authentification SigV4, joignez la politique suivante :
{ "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*" }
Pour l'authentification par jeton au porteur, voirConfiguration de l'authentification par jeton porteur pour Metrics.
Vérifiez que les métriques arrivent
Ouvrez la CloudWatch console, accédez à Query Studio et exécutez :
http_requests_total
Les métriques apparaissent généralement dans les 1 à 2 minutes suivant l'envoi du premier point de données.
Types de métriques pris en charge
Le tableau suivant décrit les types de métriques OTel pris CloudWatch en charge et explique comment les interroger avec ProMQL.
| Type métrique OTel | Comportement de ProMQL |
|---|---|
| Compteur | Utiliser rate() ou increase() pour interroger |
| Jauge | Requête directe (valeur actuelle) |
| Histogramme | Utiliser histogram_quantile() pour les percentiles |
Bonnes pratiques
Suivez ces recommandations lorsque vous envoyez des métriques via OTLP :
-
Utilisez des noms de métriques significatifs : suivez les conventions de dénomination OTel (par exemple,
http.server.request.durationouhttp_request_duration_seconds). -
Maintenez une cardinalité d'étiquette raisonnable : évitez les ID de demande ou les UUID comme valeurs d'étiquette.
-
Définissez un intervalle d'exportation approprié (60 secondes, c'est la norme). Des intervalles plus courts augmentent les coûts.
-
Utiliser les attributs de ressource : utilisez les attributs de ressource pour les métadonnées statiques (nom du service, version, environnement) plutôt que pour les étiquettes par point de données.