Récupération de sources Prometheus supplémentaires et importation de ces métriques - 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.

Récupération de sources Prometheus supplémentaires et importation de ces métriques

L' CloudWatch agent chargé de la surveillance par Prometheus a besoin de deux configurations pour récupérer les métriques Prometheus. L'une concerne les configurations standard Prometheus, comme décrit dans <scrape_config> dans la documentation Prometheus. L'autre concerne la configuration de l' CloudWatch agent.

Pour les clusters Amazon ECS, les configurations sont intégrées au Parameter Store de AWS Systems Manager par les secrets de la définition de tâche Amazon ECS :

  • Le secret PROMETHEUS_CONFIG_CONTENT concerne la configuration de récupération Prometheus.

  • Le secret CW_CONFIG_CONTENT réside dans la configuration de CloudWatch l'agent.

Pour extraire des sources de métriques Prometheus supplémentaires et les importer, CloudWatch vous devez modifier à la fois la configuration de Prometheus Scrape et la configuration de l'agent, puis redéployer CloudWatch l'agent avec la configuration mise à jour.

Exigences de groupe de sécurité VPC

Les règles d'entrée des groupes de sécurité pour les charges de travail Prometheus doivent ouvrir les ports Prometheus à l'agent pour récupérer les métriques Prometheus par CloudWatch l'adresse IP privée.

Les règles de sortie du groupe de sécurité pour l' CloudWatch agent doivent permettre à l'agent de se connecter au CloudWatch port des charges de travail Prometheus via une adresse IP privée.

Configuration de récupération Prometheus

L' CloudWatch agent prend en charge les configurations standard de Prometheus scrape, comme indiquéhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config <scrape_config>dans la documentation de Prometheus. Vous pouvez modifier cette section pour mettre à jour les configurations déjà présentes dans ce fichier et ajouter des cibles de récupération Prometheus supplémentaires. Par défaut, l'exemple de fichier de configuration contient les lignes de configuration globale suivantes :

global: scrape_interval: 1m scrape_timeout: 10s
  • scrape_interval– Définit la fréquence à laquelle récupérer les cibles.

  • scrape_timeout– Définit le temps d'attente avant l'expiration d'une requête de récupération.

Vous pouvez également définir différentes valeurs pour ces paramètres au niveau de la tâche, afin de remplacer les configurations globales.

Tâches de récupération Prometheus

Certaines tâches de scraping par défaut sont déjà configurées dans les fichiers YAML de l' CloudWatch agent. Par exemple, dans les fichiers YAML pour Amazon ECS tels que cwagent-ecs-prometheus-metric-for-bridge-host.yaml, les tâches de récupération par défaut sont configurées dans la section ecs_service_discovery.

"ecs_service_discovery": { "sd_frequency": "1m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { }, "task_definition_list": [ { "sd_job_name": "ecs-appmesh-colors", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition\/.*-ColorTeller-(white):[0-9]+", "sd_metrics_path": "/stats/prometheus" }, { "sd_job_name": "ecs-appmesh-gateway", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition/.*-ColorGateway:[0-9]+", "sd_metrics_path": "/stats/prometheus" } ] }

Chacune de ces cibles par défaut est supprimée et les métriques sont envoyées dans le journal des événements CloudWatch à l'aide d'un format de métrique intégré. Pour de plus amples informations, veuillez consulter Intégration de métriques dans les journaux.

Les événements de journal des clusters Amazon ECS sont stockés dans le groupe de journaux aws/ecs/containerinsights//cluster_name/prometheus.

Chaque tâche de récupération est contenue dans un flux de journaux différent au sein de ce groupe de journaux.

Pour ajouter une nouvelle cible de récupération, vous ajoutez une nouvelle entrée dans la section task_definition_list sous la section ecs_service_discovery du fichier YAML et redémarrez l'agent. Pour un exemple de ce processus, consultez Didacticiel pour l'ajout d'une nouvelle cible de récupération Prometheus : métrique du serveur d'API Prometheus.

CloudWatch configuration de l'agent pour Prometheus

Le fichier de configuration de l' CloudWatch agent contient une prometheus section metrics_collected dédiée à la configuration du scraping de Prometheus. Elle inclut les options de configuration suivantes :

  • cluster_name– Spécifie le nom du cluster à ajouter en tant qu'étiquette dans l'évènement du journal. Ce champ est facultatif. Si vous l'omettez, l'agent peut détecter le nom du cluster Amazon ECS.

  • log_group_name– Spécifie le nom du groupe de journaux pour les métriques Prometheus récupérées. Ce champ est facultatif. Si vous l'omettez, utilisez/ CloudWatch aws/ecs/containerinsights/cluster_name/prometheus pour les journaux des clusters Amazon ECS.

  • prometheus_config_path– Spécifie le chemin d'accès du fichier de configuration de récupération Prometheus. Si la valeur de ce champ commence par env:, le contenu du fichier de configuration de récupération Prometheus sera récupéré à partir de la variable d'environnement du conteneur. Ne modifiez pas ce champ.

  • ecs_service_discovery– Il s'agit de la section qui spécifie les configurations des fonctions de découverte automatique de la cible Amazon ECS Prometheus. Deux modes sont pris en charge pour découvrir les cibles Prometheus : découverte basée sur l'étiquette docker du conteneur ou découverte basée sur l'expression régulière ARN de définition de tâche Amazon ECS. Vous pouvez utiliser les deux modes ensemble et l' CloudWatch agent dédupliquera les cibles découvertes en fonction de : {private_ip} : {port}/{metrics_path}.

    La section ecs_service_discovery peut contenir les champs suivants :

    • sd_frequency est la fréquence de découverte des exportateurs Prometheus. Spécifiez un nombre et un suffixe d'unité. Par exemple, 1m pour une fois par minute ou 30s pour une fois toutes les 30 secondes. Les suffixes d'unités valides sont ns, us, ms, s, m et h.

      Ce champ est facultatif. La valeur par défaut est de 60 secondes (1 minute).

    • sd_target_cluster est le nom du cluster Amazon ECS cible pour la découverte automatique. Ce champ est facultatif. Le nom par défaut est le nom du cluster Amazon ECS sur lequel l' CloudWatch agent est installé.

    • sd_cluster_region est la région du cluster Amazon ECS cible. Ce champ est facultatif. La valeur par défaut est la région du cluster Amazon ECS dans laquelle l' CloudWatchagent est installé.

    • sd_result_file est le chemin d'accès du fichier YAML pour les résultats de la cible Prometheus. La configuration de récupération Prometheus fera référence à ce fichier.

    • docker_label est une section facultative que vous pouvez utiliser pour spécifier la configuration de la découverte de service basée sur des étiquettes de docker. Si vous omettez cette section, la découverte basée sur les étiquettes docker n'est pas utilisée. Cette section peut contenir les champs suivants :

      • sd_port_label est le nom de l'étiquette docker du conteneur qui spécifie le port du conteneur pour les métriques Prometheus. La valeur par défaut est ECS_PROMETHEUS_EXPORTER_PORT. Si le conteneur ne possède pas cette étiquette docker, l' CloudWatch agent l'ignorera.

      • sd_metrics_path_label est le nom de l'étiquette docker du conteneur qui spécifie le chemin d'accès aux métriques Prometheus. La valeur par défaut est ECS_PROMETHEUS_METRICS_PATH. Si le conteneur n'a pas cette étiquette docker, l'agent utilise le chemin par défaut /metrics.

      • sd_job_name_label est le nom de l'étiquette docker du conteneur qui spécifie le nom de la tâche de récupération Prometheus. La valeur par défaut est job. Si le conteneur ne possède pas cette étiquette docker, l' CloudWatch agent utilise le nom de la tâche dans la configuration Prometheus Scrape.

    • task_definition_list est une section facultative que vous pouvez utiliser pour spécifier la configuration de la découverte de service basée sur les définitions de tâches. Si vous omettez cette section, la découverte basée sur les définitions de tâches n'est pas utilisée. Cette section peut contenir les champs suivants :

      • sd_task_definition_arn_pattern est le modèle à utiliser pour spécifier les définitions de tâches Amazon ECS à découvrir. Il s'agit d'une expression régulière.

      • sd_metrics_ports répertorie le containerPort pour les métriques Prometheus. Séparez les containerPorts par des points-virgules.

      • sd_container_name_pattern spécifie les noms des conteneurs de tâches Amazon ECS. Il s'agit d'une expression régulière.

      • sd_metrics_path spécifie le chemin de métrique Prometheus. Si vous ne spécifiez pas ce paramètre, l'agent utilise le chemin par défaut /metrics

      • sd_job_name spécifie le nom de la tâche de récupération Prometheus. Si vous omettez ce champ, l' CloudWatch agent utilise le nom de la tâche dans la configuration Prometheus Scrape.

    • service_name_list_for_tasks est une section facultative que vous pouvez utiliser pour spécifier la configuration de la découverte de service basée sur les noms. Si vous omettez cette section, la découverte basée sur les noms n'est pas utilisée. Cette section peut contenir les champs suivants :

      • sd_service_name_pattern est le modèle à utiliser pour spécifier l'Amazon ECS service où les tâches doivent être découvertes. Il s'agit d'une expression régulière.

      • sd_metrics_ports répertorie le containerPort pour les métriques Prometheus. Séparez plusieurs containerPorts avec des points-virgules.

      • sd_container_name_pattern spécifie les noms des conteneurs de tâches Amazon ECS. Il s'agit d'une expression régulière.

      • sd_metrics_path spécifie le chemin d'accès aux métriques Prometheus. Si vous ne spécifiez pas ce paramètre, l'agent utilise le chemin par défaut /metrics.

      • sd_job_name spécifie le nom de la tâche de récupération Prometheus. Si vous omettez ce champ, l' CloudWatch agent utilise le nom de la tâche dans la configuration Prometheus Scrape.

  • metric_declaration – Ce sont des sections qui spécifient le tableau de journaux avec le format de métrique intégré à générer. Il existe des sections metric_declaration pour chaque source Prometheus que l'agent CloudWatch importe par défaut. Chacune de ces sections comprend les champs suivants :

    • label_matcher est une expression régulière qui vérifie la valeur des étiquettes répertoriées dans source_labels. Les métriques correspondantes sont activées pour être incluses dans le format de métrique intégré envoyé à CloudWatch.

      Si plusieurs étiquettes sont spécifiées dans source_labels, nous vous recommandons de ne pas utiliser les caractères ^ ou $ dans l'expression régulière pour label_matcher.

    • source_labels spécifie la valeur des étiquettes qui sont vérifiées par la ligne label_matcher.

    • label_separator spécifie le séparateur à utiliser dans la ligne label_matcher si plusieurs source_labels sont spécifiées. La valeur par défaut est ;. Vous pouvez voir cette valeur par défaut utilisée dans la ligne label_matcher dans l'exemple suivant.

    • metric_selectors est une expression régulière qui spécifie les métriques à collecter et à envoyer à CloudWatch.

    • dimensionsest la liste des étiquettes à utiliser comme CloudWatch dimensions pour chaque métrique sélectionnée.

Consultez l'exemple metric_declaration suivant.

"metric_declaration": [ { "source_labels":[ "Service", "Namespace"], "label_matcher":"(.*node-exporter.*|.*kube-dns.*);kube-system$", "dimensions":[ ["Service", "Namespace"] ], "metric_selectors":[ "^coredns_dns_request_type_count_total$" ] } ]

Cet exemple montre comment configurer une section de format de métrique intégrée à envoyer en tant qu'événement de journaux si les conditions suivantes sont remplies :

  • La valeur de Service contient node-exporter ou kube-dns.

  • La valeur de Namespace est kube-system.

  • La métrique Prometheus coredns_dns_request_type_count_total contient les deux étiquettes Namespace et Service.

L'événement de journal envoyé inclut la section en surbrillance suivante :

{ "CloudWatchMetrics":[ { "Metrics":[ { "Name":"coredns_dns_request_type_count_total" } ], "Dimensions":[ [ "Namespace", "Service" ] ], "Namespace":"ContainerInsights/Prometheus" } ], "Namespace":"kube-system", "Service":"kube-dns", "coredns_dns_request_type_count_total":2562, "eks_amazonaws_com_component":"kube-dns", "instance":"192.168.61.254:9153", "job":"kubernetes-service-endpoints", ... }