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

Exportieren von Anwendungsmetriken an Amazon Managed Service for Prometheus

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. Die Amazon-ECS-Konsole vereinfacht diesen Prozess, indem sie beim Erstellen einer neuen Aufgabendefinition die Option Metrikerfassung verwenden hinzufügt. Weitere Informationen finden Sie unter Erstellen einer Amazon-ECS-Aufgabendefinition mit der 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 Amazon ECS on Fargate-Integration mit AWS Distro für OpenTelemetry verwendet wird, um Anwendungsmetriken an Amazon Managed Service für Prometheus zu senden.

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

  • 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 erstellt werden, bevor Sie die Aufgabendefinition anmelden. Weitere Informationen zum Erstellen einer Aufgabenrolle finden Sie unter Aufgaben-IAM-Rolle für Amazon ECS.

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 Amazon-ECS-Konsole 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 Identifizieren Sie Optimierungsmöglichkeiten in Amazon ECS mithilfe von Ablaufverfolgungsdaten von Anwendung.

Die folgenden Berechtigungen sind für die Integration von AWS Distro für OpenTelemetry mit Amazon Managed Service für Prometheus erforderlich:

  • logs:PutLogEvents

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

  • cloudwatch:PutMetricData

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

Die Amazon-ECS-Konsole vereinfacht das Erlebnis beim Erstellen des Sidecar-Containers für AWS Distro für OpenTelemetry durch die Option Metrik-Erfassung verwenden. Weitere Informationen finden Sie unter Erstellen einer Amazon-ECS-Aufgabendefinition mit der 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": "aws-region", "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.30.0", "essential": true, "command": [ "--config=/etc/ecs/ecs-amp.yaml" ], "environment": [{ "name": "AWS_PROMETHEUS_ENDPOINT", "value": "https://aps-workspaces.aws-region.amazonaws.com/workspaces/ws-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111/api/v1/remote_write" }], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "aws-region", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }