Exportieren von Anwendungsmetriken an Amazon Managed Service for Prometheus - Amazon Elastic Container Service

Exportieren von Anwendungsmetriken an Amazon Managed Service for Prometheus

Die Funktion zum Erfassen von Metriken von AWS Distro for OpenTelemetry (ADOT) befindet sich in der Vorversion. Die Vorschau ist für alle AWS-Konten offen. Vor der Bekanntgabe der allgemeinen Verfügbarkeit können Funktionen noch hinzugefügt oder geändert werden.

Amazon ECS unterstützt den Export Ihrer CPU-, Speicher-, Netzwerk- und Speichermetriken auf Aufgabenebene sowie Ihrer benutzerdefinierten Anwendungsmetriken an Amazon Managed Service for Prometheus. Dazu wird Ihrer Aufgabendefinition der Sidecar-Container für AWS Distro for OpenTelemetry hinzugefügt. Das neue Amazon-ECS-Konsolenerlebnis vereinfacht diesen Prozess, indem sie beim Erstellen einer neuen Aufgabendefinition die Option Use metric collection (Metrikerfassung verwenden) hinzufügt. Weitere Informationen finden Sie unter Erstellen einer Aufgabendefinition mit der neuen Konsole.

Die Metriken werden an Amazon Managed Service for Prometheus exportiert und können über das Dashboard von Amazon Managed Grafana eingesehen werden. Ihre Anwendung muss entweder mit Prometheus-Bibliotheken oder mit dem OpenTelemetry-SDK instrumentiert sein. Weitere Informationen zum Instrumentieren Ihrer Anwendung mit dem OpenTelemetry-SDK finden Sie unter Einführung in AWS Distro for OpenTelemetry in der Dokumentation zu AWS Distro for OpenTelemetry.

Bei Verwendung der Prometheus-Bibliotheken muss Ihre Anwendung einen /metrics-Endpunkt bereitstellen, der zum Scraping der Metrikdaten verwendet wird. Weitere Informationen zum Instrumentieren Ihrer Anwendung mit Prometheus-Bibliotheken finden Sie unter Prometheus-Clientbibliotheken in der Prometheus-Dokumentation.

Überlegungen

Folgendes sollte beachtet werden, wenn die Integration von Amazon ECS on Fargate mit AWS Distro for OpenTelemetry verwendet wird, um Anwendungsmetriken an Amazon CloudWatch zu senden.

  • Die Integration von AWS Distro for OpenTelemetry wird nur für Amazon-ECS-Workloads unterstützt, die auf Fargate gehostet werden. Amazon-ECS-Workloads, die auf Amazon-EC2-Instances oder externen Instances gehostet werden, werden derzeit nicht unterstützt.

  • Amazon ECS sendet keine Metriken auf Aufgabenebene an CloudWatch Container Insights. Sie können Container Insights auf der Amazon-ECS-Cluster-Ebene aktivieren, um diese Metriken zu erhalten. Weitere Informationen finden Sie unter Amazon ECS CloudWatch Container-Einblicke.

  • Standardmäßig enthält AWS Distro für OpenTelemetry alle verfügbaren Dimensionen auf Aufgabenebene für Ihre Anwendungsmetriken beim Exportieren an Amazon Managed Service for Prometheus. Sie können Ihre Anwendung auch so instrumentieren, dass zusätzliche Dimensionen hinzugefügt werden. Weitere Informationen finden Sie unter Erste Schritte mit Prometheus Remote Write Exporter für Amazon Managed Service for Prometheus in der Dokumentation zu AWS Distro for OpenTelemetry.

Erforderliche IAM-Berechtigungen für die Integration von AWS Distro for OpenTelemetry mit Amazon Managed Service for Prometheus

Die Amazon-ECS-Integration mit Amazon Managed Service for Prometheus unter Verwendung des Sidecars für AWS Distro for OpenTelemetry erfordert, dass Sie eine Aufgaben-IAM-Rolle erstellen und die Rolle in Ihrer Aufgabendefinition angeben. Diese Aufgaben-IAM-Rolle muss manuell mit den folgenden Schritten erstellt werden, bevor Sie Ihre Aufgabendefinition anmelden.

Wir empfehlen, dass das Sidecar für AWS Distro for OpenTelemetry auch so konfiguriert wird, dass Containerprotokolle an CloudWatch Logs weitergeleitet werden, was die Erstellung und Angabe einer IAM-Aufgabenausführungsrolle in Ihrer Aufgabendefinition erfordert. Die neue Amazon-ECS-Konsolenerfahrung kümmert sich in Ihrem Namen um die IAM-Aufgabenausführungsrolle, die Aufgaben-IAM-Rolle muss jedoch manuell erstellt werden. Weitere Informationen zum Erstellen der IAM-Aufgabenausführungsrolle finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.

Wichtig

Wenn Sie auch Anwendungs-Nachverfolgungsdaten mithilfe der Integration von AWS Distro for OpenTelemetry erfassen, stellen Sie sicher, dass Ihre Aufgaben-IAM-Rolle auch die für diese Integration erforderlichen Berechtigungen enthält. Weitere Informationen finden Sie unter Sammeln von Anwendungs-Nachverfolgungsdaten.

So erstellen Sie eine Aufgaben-IAM-Rolle für die Integration von AWS Distro for OpenTelemetry mit Amazon Managed Service for Prometheus

  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie im Abschnitt Select type of trusted entity (Typ der vertrauenswürdigen juristischen Stelle auswählen) AWS-Service und Elastic Container Service aus.

  4. Wählen Sie für Select your use case (Anwendungsfall auswählen) die Option Elastic Container Service Task (Elastic Container Service-Aufgabe) aus und klicken Sie dann auf Next: Permissions (Weiter: Berechtigungen).

  5. Suchen Sie im Abschnitt Attach permissions policy (Berechtigungsrichtlinie anfügen) nach der Richtlinie AmazonPrometheusRemoteWriteAccess. Wählen Sie die Richtlinie aus und danach Next: Tags (Weiter: Tags).

  6. Geben Sie für Tags hinzufügen (optional) alle benutzerdefinierten Tags an, die mit der Richtlinie verknüpft werden sollen, und wählen SieWeiter: Prüfen.

  7. Geben Sie unter Role name (Rollenname) den Namen AmazonECS_OpenTelemetryPrometheusRole an und wählen Sie Create role (Rolle erstellen).

Angeben des Sidecars für AWS Distro for OpenTelemetry in Ihrer Aufgabendefinition

Das neue Amazon-ECS-Konsolenerlebnis vereinfacht das Erlebnis beim Erstellen des Sidecar–Containers für AWS Distro for OpenTelemetry durch die Verwendung der Option Use metric collection (Metrik-Erfassung verwenden). Weitere Informationen finden Sie unter Erstellen einer Aufgabendefinition mit der neuen Konsole.

Wenn Sie die Amazon-ECS-Konsole nicht verwenden, können Sie den Sidecar-Container für AWS Distro for OpenTelemetry manuell zu Ihrer Aufgabendefinition hinzufügen. Das folgende Beispiel einer Aufgabendefinition zeigt die Containerdefinition zum Hinzufügen des Sidecars für AWS Distro for OpenTelemetry für die Integration von Amazon Managed Service for Prometheus.

{ "family": "otel-using-cloudwatch", "taskRoleArn": "arn:aws:iam::111122223333:role/AmazonECS_OpenTelemetryCloudWatchRole", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole", "containerDefinitions": [{ "name": "aws-otel-emitter", "image": "application-image", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/aws-otel-emitter", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "dependsOn": [{ "containerName": "aws-otel-collector", "condition": "START" }] }, { "name": "aws-otel-collector", "image": "public.ecr.aws/aws-observability/aws-otel-collector:v0.17.0", "essential": true, "command": [ "--config=/etc/ecs/ecs-cloudwatch.yaml" ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }