Configura l'inserimento dei parametri da Amazon ECS utilizzando AWS Distro for Open Telemetry - Amazon Managed Service per Prometheus

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configura l'inserimento dei parametri da Amazon ECS utilizzando AWS Distro for Open Telemetry

Questa sezione spiega come raccogliere metriche da Amazon Elastic Container Service (Amazon ECS) e inserirle in Amazon Managed Service for Prometheus utilizzando Distro for Open Telemetry (ADOT). AWS Descrive anche come visualizzare i tuoi parametri in Grafana gestito da Amazon.

Prerequisiti

Importante

Prima di iniziare, devi disporre di un ambiente Amazon ECS su un AWS Fargate cluster con impostazioni predefinite, un'area di lavoro del servizio gestito da Amazon per Prometheus e un'area di lavoro Grafana gestito da Amazon. Partiamo dal presupposto che tu abbia familiarità con i carichi di lavoro dei container, il servizio gestito da Amazon per Prometheus e Grafana gestito da Amazon.

Per ulteriori informazioni, consulta i collegamenti seguenti:

  • Per informazioni su come creare un ambiente Amazon ECS su un cluster Fargate con impostazioni predefinite, consulta Creazione di un cluster nella Guida per lo sviluppatore Amazon ECS.

  • Per informazioni su come creare un'area di lavoro del servizio gestito da Amazon per Prometheus, consulta Creazione di un'area di lavoro nella Guida per l'utente del servizio gestito da Amazon per Prometheus.

  • Per informazioni su come creare un'area di lavoro Grafana gestito da Amazon, consulta Creazione di un'area di lavoro nella Guida per l'utente di Grafana gestito da Amazon.

Fase 1: definire un'immagine personalizzata del contenitore ADOT Collector

Utilizza il seguente file di configurazione come modello per definire la tua immagine del conteiner ADOT Collector. Sostituisci my-remote-URL e my-region con i tuoi valoriendpoint. region Salva la configurazione in un file denominato adot-config.yaml.

Nota

Questa configurazione utilizza l'sigv4authestensione per autenticare le chiamate al servizio gestito da Amazon per Prometheus. Per ulteriori informazioni sulla configurazionesigv4auth, consulta Authenticator - Sigv4 on. GitHub

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]

Fase 2: invia l'immagine del contenitore ADOT Collector a un repository Amazon ECR

Usa un Dockerfile per creare e inviare l'immagine del container a un repository Amazon Elastic Container Registry (ECR).

  1. Crea il Dockerfile per copiare e aggiungere l'immagine del conteiner all'immagine Docker di 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"]
  2. Crea un repository Amazon ECR.

    # create repo: COLLECTOR_REPOSITORY=$(aws ecr create-repository --repository aws-otel-collector \ --query repository.repositoryUri --output text)
  3. Crea la tua immagine di container.

    # build ADOT collector image: docker build -t $COLLECTOR_REPOSITORY:ecs .
    Nota

    Ciò presuppone che tu stia costruendo il tuo conteiner nello stesso ambiente in cui verrà eseguito. In caso contrario, potrebbe essere necessario utilizzare il --platform parametro durante la creazione dell'immagine.

  4. Accedi al repository Amazon ECR. Sostituisci con il tuo valoremy-region. region

    # sign in to repo: aws ecr get-login-password --region my-region | \ docker login --username AWS --password-stdin $COLLECTOR_REPOSITORY
  5. Invia l'immagine del conteiner.

    # push ADOT collector image: docker push $COLLECTOR_REPOSITORY:ecs

Passaggio 3: creare una definizione di attività Amazon ECS per eseguire lo scraping di Amazon Managed Service for Prometheus

Crea una definizione di attività Amazon ECS per eseguire l'importazione del servizio gestito da Amazon per Prometheus. La definizione dell'attività deve includere un conteiner denominato adot-collector e un conteiner denominatoprometheus. prometheus genera parametri e adot-collector scrape prometheus.

Nota

Il servizio gestito da Amazon per Prometheus funziona come servizio, raccogliendo parametri dai container. I conteiner in questo caso eseguono Prometheus localmente, in modalità Agente, che invia i parametri locali al servizio gestito da Amazon per Prometheus.

Esempio: definizione di attività

Di seguito è riportato un esempio di come potrebbe presentarsi la definizione dell'attività. È possibile utilizzare questo esempio come modello per creare la propria definizione di attività. Sostituisci il image valore di adot-collector con l'URL del repository e il tag dell'immagine ($COLLECTOR_REPOSITORY:ecs). Sostituisci i valori di region di adot-collector e prometheus con i tuoi valori region.

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

Passaggio 4: autorizza la tua attività ad accedere ad Amazon Managed Service for Prometheus

Per inviare i parametri eliminati ad Amazon Managed Service for Prometheus, la tua attività Amazon ECS deve disporre delle autorizzazioni corrette per chiamare le operazioni API per te. AWS Devi creare un ruolo IAM e una policy AmazonPrometheusRemoteWriteAccess per le tue attività. Per ulteriori informazioni sulla creazione di un ruolo per i processi, consulta Creazione di un ruolo e una policy IAM per le attività .

Dopo esserti collegato AmazonPrometheusRemoteWriteAccess al tuo ruolo IAM e aver utilizzato quel ruolo per le tue attività, Amazon ECS può inviare i tuoi parametri eliminati al servizio gestito da Amazon per Prometheus.

Fase 5: visualizza le tue metriche in Amazon Managed Grafana

Importante

Prima di iniziare, devi eseguire un processo Fargate nella definizione dell'attività Amazon ECS. Altrimenti, il servizio gestito da Amazon per Prometheus non può utilizzare i tuoi parametri.

  1. Dal pannello di navigazione del tuo spazio di lavoro Amazon Managed Grafana, scegli Origini dati sotto l'icona. AWS

  2. Nella scheda Origini dati, per Servizio, seleziona Servizio gestito da Amazon per Prometheus e scegli la tua regione predefinita.

  3. Scegli Aggiungi origine dati.

  4. Usa i prefissi ecs e prometheus per interrogare e visualizzare i tuoi parametri.