Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Richten Sie ECS mithilfe von AWS Distro for Open Telemetry die Erfassung von Metriken von Amazon ein
In diesem Abschnitt wird erklärt, wie Sie Metriken von Amazon Elastic Container Service (AmazonECS) sammeln und sie mithilfe von AWS Distro for Open Telemetry () in Amazon Managed Service for Prometheus aufnehmen. ADOT Außerdem wird beschrieben, wie Sie Ihre Metriken in Amazon Managed Grafana anzeigen können.
Voraussetzungen
Wichtig
Bevor Sie beginnen, benötigen Sie eine ECS Amazon-Umgebung in einem AWS Fargate Cluster mit Standardeinstellungen, einen Amazon Managed Service for Prometheus Workspace und einen Amazon Managed Grafana-Workspace. Wir gehen davon aus, dass Sie mit Container-Workloads, Amazon Managed Service für Prometheus und Amazon Managed Grafana vertraut sind.
Weitere Informationen finden Sie unter den folgenden Links:
-
Informationen zum Erstellen einer ECS Amazon-Umgebung auf einem Fargate-Cluster mit Standardeinstellungen finden Sie unter Creating a cluster im Amazon ECS Developer Guide.
-
Informationen zum Erstellen eines Workspace in Amazon Managed Service für Prometheus finden Sie unter Einen Workspace erstellen im Benutzerhandbuch von Amazon Managed Service für Prometheus.
-
Informationen zum Erstellen eines Workspace in Amazon Managed Grafana-finden Sie unter Einen Workspace erstellen im Benutzerhandbuch von Amazon Managed Grafana.
Schritt 1: Definieren Sie ein benutzerdefiniertes ADOT Collector-Container-Image
Verwenden Sie die folgende Konfigurationsdatei als Vorlage, um Ihr eigenes ADOT Collector-Container-Image zu definieren. Ersetzen my-remote-URL
and my-region
mit Ihren endpoint
und region
Werten. Speichern Sie die Konfiguration in einer Datei namens adot-config.yaml.
Anmerkung
Diese Konfiguration verwendet die sigv4auth
Erweiterung zur Authentifizierung von Aufrufen an Amazon Managed Service für Prometheus. Weitere Informationen zur Konfiguration sigv4auth
finden Sie unter Authenticator — Sigv4 on
receivers: prometheus: config: global: scrape_interval: 15s scrape_timeout: 10s scrape_configs: - job_name: "prometheus" static_configs: - targets: [ 0.0.0.0:9090 ] awsecscontainermetrics: collection_interval: 10s processors: filter: metrics: include: match_type: strict metric_names: - ecs.task.memory.utilized - ecs.task.memory.reserved - ecs.task.cpu.utilized - ecs.task.cpu.reserved - ecs.task.network.rate.rx - ecs.task.network.rate.tx - ecs.task.storage.read_bytes - ecs.task.storage.write_bytes exporters: prometheusremotewrite: endpoint:
my-remote-URL
auth: authenticator: sigv4auth logging: loglevel: info extensions: health_check: pprof: endpoint: :1888 zpages: endpoint: :55679 sigv4auth: region:my-region
service: aps service: extensions: [pprof, zpages, health_check, sigv4auth] pipelines: metrics: receivers: [prometheus] exporters: [logging, prometheusremotewrite] metrics/ecs: receivers: [awsecscontainermetrics] processors: [filter] exporters: [logging, prometheusremotewrite]
Schritt 2: Übertragen Sie Ihr ADOT Collector-Container-Image in ein ECR Amazon-Repository
Verwenden Sie ein Dockerfile, um Ihr Container-Image zu erstellen und in ein Amazon Elastic Container Registry (ECR) -Repository zu übertragen.
-
Erstellen Sie das Dockerfile, um Ihr Container-Image zu kopieren und dem Docker-Image hinzuzufügen. OTEL
FROM public.ecr.aws/aws-observability/aws-otel-collector:latest COPY adot-config.yaml /etc/ecs/otel-config.yaml CMD ["--config=/etc/ecs/otel-config.yaml"]
-
Erstellen Sie ein ECR Amazon-Repository.
# create repo: COLLECTOR_REPOSITORY=$(aws ecr create-repository --repository aws-otel-collector \ --query repository.repositoryUri --output text)
-
Erstellen Sie Ihr Container-Image.
# build ADOT collector image: docker build -t $COLLECTOR_REPOSITORY:ecs .
Anmerkung
Dies setzt voraus, dass Sie Ihren Container in derselben Umgebung erstellen, in der er ausgeführt werden soll. Wenn nicht, müssen Sie den
--platform
Parameter möglicherweise beim Erstellen des Images verwenden. -
Melden Sie sich beim ECR Amazon-Repository an. Ersetzen
my-region
mit Ihremregion
Wert.# sign in to repo: aws ecr get-login-password --region
my-region
| \ docker login --username AWS --password-stdin $COLLECTOR_REPOSITORY -
Pushen Sie Ihr Container-Image.
# push ADOT collector image: docker push $COLLECTOR_REPOSITORY:ecs
Schritt 3: Erstellen Sie eine ECS Amazon-Aufgabendefinition, um Amazon Managed Service for Prometheus zu scrapen
Erstellen Sie eine ECS Amazon-Aufgabendefinition, um Amazon Managed Service für Prometheus zu scrapen. Ihre Aufgabendefinition sollte einen Container mit dem Namen adot-collector
und einen Container mit dem Namen prometheus
enthalten. prometheus
generiert Metriken und adot-collector
Scrapesprometheus
.
Anmerkung
Amazon Managed Service für Prometheus wird als Service ausgeführt und sammelt Metriken aus Containern. In diesem Fall führen die Container Prometheus lokal im Agentenmodus aus, wodurch die lokalen Metriken an Amazon Managed Service für Prometheus gesendet werden.
Beispiel: Aufgabendefinition
Im Folgenden finden Sie ein Beispiel dafür, wie Ihre Aufgabendefinition aussehen kann. Sie können dieses Beispiel als Vorlage verwenden, um Ihre eigene Aufgabendefinition zu erstellen. Ersetzen Sie den image
Wert von adot-collector
durch Ihr Repository URL und Ihr Image-Tag (). $COLLECTOR_REPOSITORY:ecs
Ersetzen Sie die region
-Werte von adot-collector
und prometheus
durch Ihre region
-Werte.
{ "family": "adot-prom", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "adot-collector", "image": "
account_id
.dkr.ecr.region
.amazonaws.com/image-tag
", "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-adot-collector", "awslogs-region": "my-region
", "awslogs-stream-prefix": "ecs", "awslogs-create-group": "True" } } }, { "name": "prometheus", "image": "prom/prometheus:main", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-prom", "awslogs-region": "my-region
", "awslogs-stream-prefix": "ecs", "awslogs-create-group": "True" } } } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024" }
Schritt 4: Erteilen Sie Ihrer Aufgabe Berechtigungen für den Zugriff auf Amazon Managed Service for Prometheus
Um die gesammelten Metriken an Amazon Managed Service for Prometheus zu senden, muss Ihre ECS Amazon-Aufgabe über die richtigen Berechtigungen verfügen, um die Vorgänge für Sie aufzurufen. AWS API Sie müssen eine IAM Rolle für Ihre Aufgaben erstellen und ihr die AmazonPrometheusRemoteWriteAccess
Richtlinie beifügen. Weitere Informationen zum Erstellen dieser Rolle und zum Anhängen der Richtlinie finden Sie unter IAMRolle und Richtlinie für Ihre Aufgaben erstellen.
Nachdem Sie Ihrer IAM Rolle AmazonPrometheusRemoteWriteAccess
zugeordnet und diese Rolle für Ihre Aufgaben verwendet haben, ECS kann Amazon Ihre gesammelten Metriken an Amazon Managed Service for Prometheus senden.
Schritt 5: Visualisieren Sie Ihre Kennzahlen in Amazon Managed Grafana
Wichtig
Bevor Sie beginnen, müssen Sie eine Fargate-Aufgabe für Ihre ECS Amazon-Aufgabendefinition ausführen. Andernfalls kann Amazon Managed Service für Prometheus Ihre Metriken nicht verarbeiten.
-
Wählen Sie im Navigationsbereich Ihres Amazon Managed Grafana-Arbeitsbereichs unter dem AWS Symbol Datenquellen aus.
-
Wählen Sie auf der Registerkarte Datenquellen unter Service die Option Amazon Managed Service für Prometheus und Ihre Standardregion aus.
-
Wählen Sie Datenquelle hinzufügen aus.
-
Verwenden Sie die Präfixe
ecs
undprometheus
, um Ihre Metriken abzufragen und anzuzeigen.