Exportieren von Anwendungsmetriken nach Amazon CloudWatch - Amazon ECS

Exportieren von Anwendungsmetriken nach Amazon CloudWatch

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 auf Fargate unterstützt den Export Ihrer benutzerdefinierten Anwendungsmetriken nach Amazon CloudWatch als benutzerdefinierte Metriken. 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 Anwendungsmetriken werden mit dem Protokollgruppennamen /aws/ecs/application/metrics nach CloudWatch Logs exportiert und die Metriken können im Namespace ECS/AWSOTel/Application angezeigt werden. Ihre Anwendung muss mit dem OpenTelemetry-SDK instrumentiert sein. Weitere Informationen finden Sie unter Einführung in AWS Distro for OpenTelemetry in der Dokumentation zu AWS Distro for OpenTelemetry.

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

  • Wenn diese Integration verwendet wird, sendet Amazon ECS 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.

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

  • CloudWatch unterstützt maximal 10 Dimensionen pro Metrik. Standardmäßig enthält Amazon ECS die Dimensionen TaskARN, ClusterARN, LaunchType, TaskDefinitionFamily und TaskDefinitionRevision in den Metriken. Die restlichen 5 Dimensionen können durch Ihre Anwendung definiert werden. Wenn mehr als 10 Dimensionen konfiguriert sind, kann CloudWatch sie nicht anzeigen. In diesem Fall werden die Anwendungsmetriken im Metrik-Namespace von ECS/AWSOTel/Application CloudWatch aufscheinen, jedoch ohne Dimensionen. Sie können Ihre Anwendung so einstellen, dass zusätzliche Dimensionen hinzugefügt werden. Weitere Informationen finden Sie unter Verwenden von CloudWatch-Metriken mit AWS Distro for OpenTelemetry in der Dokumentation zu AWS Distro for OpenTelemetry.

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

Die Amazon-ECS-Integration mit AWS Distro for OpenTelemetry erfordert, dass Sie eine Aufgaben-IAM-Rolle erstellen und die Rolle in Ihrer Aufgabendefinition angeben. 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. Das neue Amazon-ECS-Konsolenerlebnis kümmert sich in Ihrem Namen um die IAM-Aufgabenausführungsrolle, die Aufgaben-IAM-Rolle muss jedoch manuell erstellt und Ihrer Aufgabendefinition hinzugefügt werden. Weitere Informationen zur 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 CloudWatch

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

  2. Wählen Sie im Navigationsbereich Policies und Create policy aus.

  3. Wechseln Sie auf der Seite Create policy (Richtlinie erstellen) zur Registerkarte JSON, kopieren Sie die folgende IAM-Richtlinien-JSON und fügen Sie sie in das Feld ein. Wählen Sie dann Next: Tags (Weiter: Tags).

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "cloudwatch:PutMetricData" ], "Resource": "*" } ] }
    Anmerkung

    Wenn Ihre Anwendung zusätzliche Berechtigungen benötigt, sollten Sie diese dieser Richtlinie hinzufügen. Jede Aufgabendefinition darf nur eine Aufgaben-IAM-Rolle angeben. Wenn Sie beispielsweise eine in Systems Manager gespeicherte benutzerdefinierte Konfigurationsdatei verwenden, sollten Sie dieser IAM-Richtlinie die ssm:GetParameters-Berechtigung hinzufügen.

  4. (Optional) Fügen Sie einen oder mehrere Tags zu der Richtlinie hinzu und wählen Sie dann Next: Review (Weiter: Prüfen) aus.

  5. Geben Sie für Name AWSDistroOpenTelemetryPolicyForCloudWatch an.

  6. Geben Sie für Description (Beschreibung) eine optionale Beschreibung an und wählen Sie dann Create policy (Richtlinie erstellen).

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

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

  9. 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).

  10. Suchen Sie im Abschnitt Attach permission policy (Berechtigungsrichtlinie anfügen) nach AWSDistroOpenTelemetryPolicyForCloudWatch, wählen Sie die Richtlinie aus und dann Next: Tags (Weiter: Tags).

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

  12. Geben Sie unter Role name (Rollenname) den Namen AmazonECS_OpenTelemetryCloudWatchRole 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 Amazon-CloudWatch-Integration.

{ "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" }