Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Guide détaillé de la découverte automatique sur les clusters Amazon ECS

Mode de mise au point
Guide détaillé de la découverte automatique sur les clusters Amazon ECS - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Prometheus fournit des dizaines de mécanismes dynamiques de découverte de service, comme décrit dans <scrape_config>. Toutefois, il n'y a pas de découverte de service intégrée pour Amazon ECS. L' CloudWatch agent ajoute ce mécanisme.

Lorsque la découverte du service Amazon ECS Prometheus est activée, CloudWatch l'agent effectue régulièrement les appels d'API suivants aux interfaces Amazon ECS et EC2 Amazon pour récupérer les métadonnées des tâches ECS en cours d'exécution dans le cluster ECS cible.

EC2:DescribeInstances ECS:ListTasks ECS:ListServices ECS:DescribeContainerInstances ECS:DescribeServices ECS:DescribeTasks ECS:DescribeTaskDefinition

Les métadonnées sont utilisées par l' CloudWatch agent pour scanner les cibles Prometheus au sein du cluster ECS. L' CloudWatch agent prend en charge trois modes de découverte de services :

  • découverte de service basée sur l'étiquette docker du conteneur ;

  • découverte de service basée sur l'expression régulière ARN de la tâche ECS ;

  • découverte de service basée sur l'expression régulière du nom du service ECS.

Tous les modes peuvent être utilisés ensemble. CloudWatch l'agent déduplique les cibles découvertes en fonction de :. {private_ip}:{port}/{metrics_path}

Toutes les cibles découvertes sont écrites dans un fichier de résultats spécifié par le champ sd_result_file de configuration du conteneur de l' CloudWatch agent. Voici un exemple de fichier de résultats :

- targets: - 10.6.1.95:32785 labels: __metrics_path__: /metrics ECS_PROMETHEUS_EXPORTER_PORT: "9406" ECS_PROMETHEUS_JOB_NAME: demo-jar-ec2-bridge-dynamic ECS_PROMETHEUS_METRICS_PATH: /metrics InstanceType: t3.medium LaunchType: EC2 SubnetId: subnet-123456789012 TaskDefinitionFamily: demo-jar-ec2-bridge-dynamic-port TaskGroup: family:demo-jar-ec2-bridge-dynamic-port TaskRevision: "7" VpcId: vpc-01234567890 container_name: demo-jar-ec2-bridge-dynamic-port job: demo-jar-ec2-bridge-dynamic - targets: - 10.6.3.193:9404 labels: __metrics_path__: /metrics ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_B: "9404" ECS_PROMETHEUS_JOB_NAME: demo-tomcat-ec2-bridge-mapped-port ECS_PROMETHEUS_METRICS_PATH: /metrics InstanceType: t3.medium LaunchType: EC2 SubnetId: subnet-123456789012 TaskDefinitionFamily: demo-tomcat-ec2-bridge-mapped-port TaskGroup: family:demo-jar-tomcat-bridge-mapped-port TaskRevision: "12" VpcId: vpc-01234567890 container_name: demo-tomcat-ec2-bridge-mapped-port job: demo-tomcat-ec2-bridge-mapped-port

Vous pouvez directement intégrer ce fichier de résultats à la découverte de services basés sur des fichiers de Prometheus. Pour plus d'informations sur la découverte de services basée sur des fichiers de Prometheus, consultez <file_sd_config>.

Supposons que le fichier de résultat soit écrit dans /tmp/cwagent_ecs_auto_sd.yaml. La configuration de récupération Prometheus suivante la consommera.

global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: cwagent-ecs-file-sd-config sample_limit: 10000 file_sd_configs: - files: [ "/tmp/cwagent_ecs_auto_sd.yaml" ]

L' CloudWatch agent ajoute également les étiquettes supplémentaires suivantes pour les cibles découvertes.

  • container_name

  • TaskDefinitionFamily

  • TaskRevision

  • TaskGroup

  • StartedBy

  • LaunchType

  • job

  • __metrics_path__

  • Étiquettes Docker

Lorsque le cluster possède le type de EC2 lancement, les trois étiquettes suivantes sont ajoutées.

  • InstanceType

  • VpcId

  • SubnetId

Note

Les étiquettes Docker qui ne correspondent pas à l'expression régulière [a-zA-Z_][a-zA-Z0-9_]* sont filtrés. Cela correspond aux conventions Prometheus répertoriées dans label_name de Fichier de configuration, compris dans la documentation Prometheus.

Exemples de configuration de la découverte de service ECS

Cette section contient des exemples qui illustrent la découverte de services ECS.

Exemple 1

"ecs_service_discovery": { "sd_frequency": "1m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { } }

Cet exemple montre comment activer la découverte de service basée sur les étiquettes docker. L' CloudWatch agent interrogera les métadonnées des tâches ECS une fois par minute et inscrira les cibles découvertes dans le /tmp/cwagent_ecs_auto_sd.yaml fichier du conteneur de l' CloudWatch agent.

La valeur par défaut de sd_port_label dans la section docker_label est ECS_PROMETHEUS_EXPORTER_PORT. Si un conteneur en cours d'exécution dans les tâches ECS possède une étiquette ECS_PROMETHEUS_EXPORTER_PORT docker, l' CloudWatch agent utilise sa valeur as container port pour scanner tous les ports exposés du conteneur. En cas de correspondance, le port hôte mappé ainsi que l'adresse IP privée du conteneur sont utilisés pour construire la cible de l'exportateur Prometheus au format suivant : private_ip:host_port.

La valeur par défaut de sd_metrics_path_label dans la section docker_label est ECS_PROMETHEUS_METRICS_PATH. Si le conteneur possède cette étiquette docker, sa valeur sera utilisée comme __metrics_path__. Si le conteneur ne possède pas cette étiquette, la valeur par défaut /metrics est utilisée.

La valeur par défaut de sd_job_name_label dans la section docker_label est job. Si le conteneur possède cette étiquette docker, sa valeur sera ajoutée comme l'une des étiquettes de la cible pour remplacer le nom de tâche par défaut spécifié dans la configuration Prometheus. La valeur de cette étiquette Docker est utilisée comme nom du flux de journaux dans le groupe de CloudWatch journaux Logs.

Exemple 2

"ecs_service_discovery": { "sd_frequency": "15s", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { "sd_port_label": "ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_A", "sd_job_name_label": "ECS_PROMETHEUS_JOB_NAME" } }

Cet exemple permet la découverte de services basée sur des étiquettes docker. THe CloudWatch l'agent interrogera les métadonnées des tâches ECS toutes les 15 secondes et écrira les cibles découvertes dans le /tmp/cwagent_ecs_auto_sd.yaml fichier du conteneur de l' CloudWatch agent. Les conteneurs possédant une étiquette docker ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_A seront analysés. La valeur de l'étiquette docker ECS_PROMETHEUS_JOB_NAME est utilisée comme nom de tâche.

Exemple 3

"ecs_service_discovery": { "sd_frequency": "5m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "task_definition_list": [ { "sd_job_name": "java-prometheus", "sd_metrics_path": "/metrics", "sd_metrics_ports": "9404; 9406", "sd_task_definition_arn_pattern": ".*:task-definition/.*javajmx.*:[0-9]+" }, { "sd_job_name": "envoy-prometheus", "sd_metrics_path": "/stats/prometheus", "sd_container_name_pattern": "^envoy$", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition/.*appmesh.*:23" } ] }

Cet exemple montre comment activer la découverte de service basée sur l'expression régulière ARN de la tâche ECS. L' CloudWatch agent interroge les métadonnées des tâches ECS toutes les cinq minutes et écrit les cibles découvertes dans le /tmp/cwagent_ecs_auto_sd.yaml fichier du conteneur de l' CloudWatch agent.

Deux sections d'expressions régulières ARN de définition de tâche sont définies :

  • Pour la première section, les tâches ECS avec javajmx dans leur ARN de définition de tâche ECS sont filtrées pour l'analyse des ports de conteneur. Si les conteneurs de ces tâches ECS exposent le port de conteneur sur 9404 ou 9406, le port hôte mappé ainsi que l'adresse IP privée du conteneur sont utilisés pour créer les cibles d'exportation Prometheus. La valeur de sd_metrics_path définit __metrics_path__ sur /metrics. L' CloudWatch agent extraira donc les métriques Prometheus, qui seront envoyées au flux private_ip:host_port/metrics CloudWatch de journaux dans Logs java-prometheus du groupe de journaux. /aws/ecs/containerinsights/cluster_name/prometheus

  • Pour la deuxième section, les tâches ECS avec appmesh dans leur ARN de définition de tâche ECS et avec la version :23 sont filtrées pour l'analyse des ports de conteneur. Pour les conteneurs dont le nom est envoy qui exposent le port de conteneur sur 9901, le port hôte mappé ainsi que l'adresse IP privée du conteneur sont utilisés pour créer les cibles d'exportation Prometheus. La valeur de ces tâches ECS expose le port de conteneur sur 9404 ou 9406, le port hôte mappé ainsi que l'adresse IP privée du conteneur sont utilisés pour créer les cibles d'exportation Prometheus. La valeur de sd_metrics_path définit __metrics_path__ sur /stats/prometheus. L' CloudWatchagent extraira donc les métriques Prometheus et les enverra au flux private_ip:host_port/stats/prometheus CloudWatch de journaux dans Logs envoy-prometheus du groupe de journaux. /aws/ecs/containerinsights/cluster_name/prometheus

Exemple 4

"ecs_service_discovery": { "sd_frequency": "5m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "service_name_list_for_tasks": [ { "sd_job_name": "nginx-prometheus", "sd_metrics_path": "/metrics", "sd_metrics_ports": "9113", "sd_service_name_pattern": "^nginx-.*" }, { "sd_job_name": "haproxy-prometheus", "sd_metrics_path": "/stats/metrics", "sd_container_name_pattern": "^haproxy$", "sd_metrics_ports": "8404", "sd_service_name_pattern": ".*haproxy-service.*" } ] }

Cet exemple montre comment activer la découverte de service basée sur l'expression régulière du nom du service ECS. L' CloudWatch agent interroge les métadonnées des services ECS toutes les cinq minutes et écrit les cibles découvertes dans le /tmp/cwagent_ecs_auto_sd.yaml fichier du conteneur de l' CloudWatch agent.

Deux sections d'expressions régulières de nom de service sont définies :

  • Dans la première section, les tâches ECS associées aux services ECS dont les noms correspondent à l'expression régulière ^nginx-.* sont filtrées pour l'analyse du port du conteneur. Si les conteneurs de ces tâches ECS exposent le port de conteneur sur 9113, le port hôte mappé ainsi que l'adresse IP privée du conteneur sont utilisés pour créer les cibles d'exportation Prometheus. La valeur de sd_metrics_path définit __metrics_path__ sur /metrics. L' CloudWatch agent extraira donc les métriques Prometheus, et les métriques private_ip:host_port/metrics supprimées seront envoyées au flux CloudWatch de journaux dans Logs nginx-prometheus du groupe de journaux. /aws/ecs/containerinsights/cluster_name/prometheus

  • ou la seconde section, les tâches ECS associées aux services ECS dont les noms correspondent à l'expression régulière .*haproxy-service.* sont filtrées pour l'analyse du port du conteneur. Pour les conteneurs dont le nom est haproxy qui exposent le port de conteneur sur 8404, le port hôte mappé ainsi que l'adresse IP privée du conteneur sont utilisés pour créer les cibles d'exportation Prometheus. La valeur de sd_metrics_path définit __metrics_path__ sur /stats/metrics. L' CloudWatch agent extraira donc les métriques Prometheus, et les métriques private_ip:host_port/stats/metrics supprimées seront envoyées au flux CloudWatch de journaux dans Logs haproxy-prometheus du groupe de journaux. /aws/ecs/containerinsights/cluster_name/prometheus

Exemple 5

"ecs_service_discovery": { "sd_frequency": "1m30s", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { "sd_port_label": "MY_PROMETHEUS_EXPORTER_PORT_LABEL", "sd_metrics_path_label": "MY_PROMETHEUS_METRICS_PATH_LABEL", "sd_job_name_label": "MY_PROMETHEUS_METRICS_NAME_LABEL" } "task_definition_list": [ { "sd_metrics_ports": "9150", "sd_task_definition_arn_pattern": "*memcached.*" } ] }

Cet exemple montre comment activer les deux modes de découverte de service ECS. L' CloudWatch agent interroge les métadonnées des tâches ECS toutes les 90 secondes et écrit les cibles découvertes dans le /tmp/cwagent_ecs_auto_sd.yaml fichier du conteneur de l' CloudWatch agent.

Pour la configuration de découverte de service basée sur Docker :

  • Les tâches ECS avec l'étiquette docker MY_PROMETHEUS_EXPORTER_PORT_LABEL seront filtrées pour l'analyse du port Prometheus. Le port de conteneur Prometheus cible est spécifié par la valeur de l'étiquette MY_PROMETHEUS_EXPORTER_PORT_LABEL.

  • La valeur de l'étiquette docker MY_PROMETHEUS_EXPORTER_PORT_LABEL est utilisée pour __metrics_path__. Si le conteneur ne possède pas cette étiquette docker, la valeur par défaut /metrics est utilisée.

  • La valeur de l'étiquette docker MY_PROMETHEUS_EXPORTER_PORT_LABEL est utilisée comme étiquette de tâche. Si le conteneur n'a pas cette étiquette docker, le nom de tâche défini dans la configuration Prometheus est utilisé.

Pour la configuration de la découverte de service basée sur l'expression régulière ARN de la tâche ECS :

  • Les tâches ECS avec memcached dans l'ARN de définition de tâche ECS sont filtrées pour l'analyse des ports de conteneur. Le port de conteneur Prometheus cible est 9150 tel que défini par sd_metrics_ports. Le chemin d'accès aux métriques par défaut /metrics est utilisé. Le nom de tâche défini dans la configuration Prometheus est utilisé.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.