Utilisation d'un collecteur AWS géré - Amazon Managed Service for Prometheus

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.

Utilisation d'un collecteur AWS géré

Pour utiliser un collecteur Amazon Managed Service for Prometheus, vous devez créer un scraper qui reconnaît et extrait les métriques de votre cluster Amazon EKS.

  • Vous pouvez créer un scraper dans le cadre de la création de votre cluster Amazon EKS. Pour plus d’informations sur la création d’un cluster Amazon EKS, notamment la création d’un scraper, consultez la section Création d’un cluster Amazon EKS dans le Guide de l’utilisateur Amazon EKS.

  • Vous pouvez créer votre propre scraper, par programmation avec l' AWS API ou en utilisant le. AWS CLI

Note

Les espaces de travail Amazon Managed Service for Prometheus créés à l'aide de clés gérées par le client ne peuvent pas AWS utiliser de collecteurs gérés pour l'ingestion.

Un collecteur Amazon Managed Service for Prometheus collecte les métriques compatibles avec Prometheus. Pour plus d’informations sur les métriques compatibles avec Prometheus, consultez la section Quelles sont les métriques compatibles avec Prometheus ?.

Les rubriques suivantes décrivent comment créer, gérer et configurer des scrapers.

Créer un scraper

Un collecteur Amazon Managed Service for Prometheus consiste en un scraper qui reconnaît et collecte des métriques d’un cluster Amazon EKS. Amazon Managed Service for Prometheus gère le scraper pour vous, vous offrant ainsi l’évolutivité, la sécurité et la fiabilité dont vous avez besoin, sans avoir à gérer vous-même les instances, les agents ou les scrapers.

Un scraper est automatiquement créé lorsque vous créez un cluster Amazon EKS via la console Amazon EKS. Cependant, dans certains cas, vous souhaiterez peut-être créer vous-même un scraper. Par exemple, si vous souhaitez ajouter un collecteur AWS géré à un cluster Amazon EKS existant, ou si vous souhaitez modifier la configuration d'un collecteur existant.

Vous pouvez créer un scraper à l'aide de l' AWS API ou du AWS CLI.

Il existe quelques prérequis pour créer votre propre scraper :

  • Vous devez avoir créé un cluster Amazon EKS.

  • Le contrôle d'accès aux points de terminaison du cluster de votre propre cluster Amazon EKS doit être configuré pour inclure l'accès privé. Il peut inclure l’accès privé et l’accès public, mais doit inclure l’accès privé.

Note

Le cluster sera associé au scraper par son nom de ressource Amazon (ARN). Si vous supprimez un cluster, puis que vous en créez un nouveau portant le même nom, l'ARN sera réutilisé pour le nouveau cluster. Pour cette raison, le scraper tentera de collecter des métriques pour le nouveau cluster. Vous supprimez les scrapers séparément de la suppression du cluster.

AWS API

Pour créer un scraper à l'aide de l'API AWS

Utilisez l’opération d’API CreateScraper pour créer un scraper avec l’API AWS . L’exemple suivant crée un scraper dans la région us-west-2. Vous devez remplacer les informations relatives à l' Compte AWS espace de travail, à la sécurité et au cluster Amazon EKS par vos propres identifiants, et fournir la configuration à utiliser pour votre scraper.

Note

Vous devez inclure au moins deux sous-réseaux dans au moins deux zones de disponibilité.

La scrapeConfiguration est un fichier YAML de configuration Prometheus codé en base64. Vous pouvez télécharger une configuration générale à l’aide de l’opération d’API GetDefaultScraperConfiguration. Pour plus d'informations sur le format duscrapeConfiguration, consultezConfiguration du scraper.

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id" } }, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name", "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": <base64-encoded-blob> } }
AWS CLI

Pour créer un grattoir à l'aide du AWS CLI

Utilisez la create-scraper commande pour créer un grattoir avec le AWS CLI. L’exemple suivant crée un scraper dans la région us-west-2. Vous devez remplacer les informations relatives à l' Compte AWS espace de travail, à la sécurité et au cluster Amazon EKS par vos propres identifiants, et fournir la configuration à utiliser pour votre scraper.

Note

Vous devez inclure au moins deux sous-réseaux dans au moins deux zones de disponibilité.

La scrape-configuration est un fichier YAML de configuration Prometheus codé en base64. Vous pouvez télécharger une configuration à usage général à l'aide de la get-default-scraper-configuration commande. Pour plus d'informations sur le format duscrape-configuration, consultezConfiguration du scraper.

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"

Vous trouverez ci-dessous la liste complète des opérations de scraper que vous pouvez utiliser avec l’API AWS  :

Note

Le cluster Amazon EKS que vous collectez doit être configuré pour autoriser Amazon Managed Service for Prometheus à accéder aux métriques. La rubrique suivante décrit comment configurer votre cluster.

Erreurs courantes lors de la création de grattoirs

Les problèmes les plus courants rencontrés lors de la tentative de création d'un nouveau scraper sont les suivants.

  • Les AWS ressources requises n'existent pas. Le groupe de sécurité, le sous-réseau et le cluster Amazon EKS spécifiés doivent exister.

  • Espace d'adresse IP insuffisant. Vous devez disposer d'au moins une adresse IP dans chaque sous-réseau que vous transmettez à l'CreateScraperAPI.

Configuration de votre cluster Amazon EKS

Votre cluster Amazon EKS doit être configuré pour permettre au scraper d’accéder aux métriques. Il existe deux options pour cette configuration :

  • Utilisez les entrées d'accès Amazon EKS pour fournir automatiquement à Amazon Managed Service for Prometheus Collectors l'accès à votre cluster.

  • Configurez manuellement votre cluster Amazon EKS pour le scraping de métriques géré.

Les rubriques suivantes décrivent chacune d'entre elles de manière plus détaillée.

Configurer Amazon EKS pour l'accès au scraper avec des entrées d'accès

L'utilisation d'entrées d'accès pour Amazon EKS est le moyen le plus simple de permettre à Amazon Managed Service for Prometheus d'accéder aux métriques de votre cluster.

Le cluster Amazon EKS que vous collectez doit être configuré pour autoriser l'authentification par API. Le mode d'authentification du cluster doit être défini sur API ouAPI_AND_CONFIG_MAP. Cela est visible dans la console Amazon EKS dans l'onglet Configuration de l'accès des détails du cluster. Pour plus d'informations, consultez Autoriser les rôles ou les utilisateurs IAM à accéder à un objet Kubernetes sur votre cluster Amazon EKS dans le guide de l'utilisateur Amazon EKS.

Vous pouvez créer le scraper lors de la création du cluster, ou après avoir créé le cluster :

  • Lors de la création d'un cluster : vous pouvez configurer cet accès lorsque vous créez un cluster Amazon EKS via la console Amazon EKS (suivez les instructions pour créer un scraper dans le cadre du cluster), et une politique de saisie d'accès sera automatiquement créée, permettant à Amazon Managed Service for Prometheus d'accéder aux métriques du cluster.

  • Ajout après la création d'un cluster : si votre cluster Amazon EKS existe déjà, définissez le mode d'authentification sur l'un API ou l'autreAPI_AND_CONFIG_MAP, et tous les scrapers que vous créez via l'API ou la CLI Amazon Managed Service for Prometheus seront automatiquement dotés de la politique d'entrée d'accès appropriée créée pour vous, et les scrapers auront accès à votre cluster.

Politique d'entrée d'accès créée

Lorsque vous créez un scraper et que vous laissez Amazon Managed Service for Prometheus générer une politique de saisie d'accès pour vous, il génère la politique suivante. Pour plus d'informations sur les entrées d'accès, consultez Autoriser les rôles ou les utilisateurs IAM à accéder à Kubernetes dans le guide de l'utilisateur Amazon EKS.

{ "rules": [ { "effect": "allow", "apiGroups": [ "" ], "resources": [ "nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "extensions", "networking.k8s.io" ], "resources": [ "ingresses/status", "ingresses" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }

Configuration manuelle d'Amazon EKS pour l'accès au scraper

Si vous préférez utiliser le pour contrôler l'accès aws-auth ConfigMap à votre cluster Kubernetes, vous pouvez toujours autoriser les scrapers Amazon Managed Service for Prometheus à accéder à vos métriques. Les étapes suivantes permettront à Amazon Managed Service for Prometheus d'accéder aux métriques de votre cluster Amazon EKS.

Note

Pour plus d'informations sur les entrées ConfigMap et pour y accéder, consultez la section Autoriser les rôles ou utilisateurs IAM à accéder à Kubernetes dans le guide de l'utilisateur Amazon EKS.

Cette procédure utilise kubectl et la AWS CLI. Pour plus d'informations sur l'installation de kubectl, consultez Installation de kubectl dans le Guide de l'utilisateur Amazon EKS.

Pour configurer manuellement votre cluster Amazon EKS pour le scraping de métriques géré
  1. Créez un fichier appelé clusterrole-binding.yml avec le texte suivant :

    apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aps-collector-role rules: - apiGroups: [""] resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] verbs: ["describe", "get", "list", "watch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status", "ingresses"] verbs: ["describe", "get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aps-collector-user-role-binding subjects: - kind: User name: aps-collector-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aps-collector-role apiGroup: rbac.authorization.k8s.io
  2. Exécutez la commande suivante dans votre cluster :

    kubectl apply -f clusterrole-binding.yml

    Le lien et la règle du rôle du cluster sont alors créés. Cet exemple utilise aps-collector-role comme nom de rôle et aps-collector-user comme nom d’utilisateur.

  3. La commande suivante vous donne des informations sur le scraper avec l’ID scraper-id. Il s’agit du scraper que vous avez créé à l’aide de la commande de la section précédente.

    aws amp describe-scraper --scraper-id scraper-id
  4. À partir des résultats dudescribe-scraper, recherchez le roleArn. Son format est le suivant :

    arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Amazon EKS nécessite un format différent pour cet ARN. Vous devez ajuster le format de l’ARN renvoyé pour l’utiliser à l’étape suivante. Modifiez-le pour qu’il corresponde au format suivant :

    arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Par exemple, l’ARN suivant :

    arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7

    Doit être réécrit comme suit :

    arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
  5. Exécutez la commande suivante dans votre cluster, en utilisant le roleArn modifié de l'étape précédente, ainsi que le nom et la région du cluster.

    eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user

    Le scraper peut ainsi accéder au cluster en utilisant le rôle et l’utilisateur que vous avez créés dans le fichier clusterrole-binding.yml.

Recherche et suppression des scrapers

Vous pouvez utiliser l' AWS API ou le AWS CLI pour répertorier les scrapers de votre compte ou pour les supprimer.

Note

Assurez-vous que vous utilisez la dernière version du AWS CLI ou du SDK. La dernière version vous fournit les fonctionnalités les plus récentes, ainsi que des mises à jour de sécurité. Vous pouvez également utiliser automatiquement AWS Cloudshell, qui fournit une expérience en ligne de up-to-date commande permanente.

Pour répertorier tous les scrapers de votre compte, utilisez l'opération ListScrapersAPI.

Sinon, avec le AWS CLI, appelez :

aws amp list-scrapers

ListScrapers renvoie tous les scrapers de votre compte. Par exemple :

{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:us-west-2:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster", "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

Pour supprimer un grattoir, scraperId recherchez le grattoir que vous souhaitez supprimer à l'aide de l'ListScrapersopération, puis utilisez l'DeleteScraperopération pour le supprimer.

Sinon, avec le AWS CLI, appelez :

aws amp delete-scraper --scraper-id scraperId

Configuration du scraper

Vous pouvez contrôler la façon dont votre scraper reconnaît et collecte les métriques grâce à une configuration de scraper compatible avec Prometheus. Par exemple, vous pouvez modifier l’intervalle d’envoi des métriques à l’espace de travail. Vous pouvez également utiliser le réétiquetage pour réécrire dynamiquement les étiquettes d’une métrique. La configuration du scraper est un fichier YAML qui fait partie de la définition du scraper.

Lorsqu’un nouveau scraper est créé, vous spécifiez une configuration en fournissant un fichier YAML codé en base64 dans l’appel d’API. Vous pouvez télécharger un fichier de configuration générale avec l’opération GetDefaultScraperConfiguration dans l’API Amazon Managed Service for Prometheus.

Pour modifier la configuration d’un scraper, supprimez le scraper et recréez-le avec la nouvelle configuration.

Configuration prise en charge

Pour plus d'informations sur le format de configuration du scraper, y compris une description détaillée des valeurs possibles, consultez la section Configuration dans la documentation de Prometheus. Les options de configuration globale et les options <scrape_config> décrivent les options les plus fréquemment requises.

Amazon EKS étant le seul service pris en charge, la seule configuration de découverte de service (<*_sd_config>) prise en charge est le<kubernetes_sd_config>.

La liste complète des sections de configuration autorisées :

  • <global>

  • <scrape_config>

  • <static_config>

  • <relabel_config>

  • <metric_relabel_configs>

  • <kubernetes_sd_config>

Les limites de ces sections sont répertoriées après l'exemple de fichier de configuration.

Exemple de fichier de configuration

Voici un exemple de fichier de configuration YAML avec un intervalle de récupération de 30 secondes.

global: scrape_interval: 30s external_labels: clusterArn: apiserver-test-2 scrape_configs: - job_name: pod_exporter kubernetes_sd_configs: - role: pod - job_name: cadvisor scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor # apiserver metrics - scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name # kube proxy metrics - job_name: kube-proxy honor_labels: true kubernetes_sd_configs: - role: pod relabel_configs: - action: keep source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_pod_name separator: '/' regex: 'kube-system/kube-proxy.+' - source_labels: - __address__ action: replace target_label: __address__ regex: (.+?)(\\:\\d+)? replacement: $1:10249

Les limites suivantes sont spécifiques aux collecteurs AWS gérés :

  • Intervalle de scrape : la configuration du scraper ne peut pas spécifier un intervalle de scrape inférieur à 30 secondes.

  • Cibles : les cibles de static_config doivent être spécifiées sous la forme d'adresses IP.

  • Autorisation : omettez si aucune autorisation n'est requise. Si nécessaire, l'autorisation doit l'être Bearer et doit pointer vers le fichier/var/run/secrets/kubernetes.io/serviceaccount/token. En d'autres termes, si elle est utilisée, la section d'autorisation doit ressembler à ce qui suit :

    authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    Note

    type: Bearerest la valeur par défaut, elle peut donc être omise.

Résolution des erreurs de configuration du scraper

Les collecteurs Amazon Managed Service for Prometheus reconnaissent et collectent automatiquement les métriques. Mais comment résoudre le problème lorsque vous ne voyez pas une métrique que vous vous attendiez à voir dans votre espace de travail Amazon Managed Service for Prometheus ?

La métrique up est un outil utile. Pour chaque point de terminaison reconnu par un collecteur Amazon Managed Service for Prometheus, ce dernier envoie automatiquement cette métrique. Il existe trois états de cette métrique qui peuvent vous aider à résoudre les problèmes qui se produisent dans le collecteur.

  • up n’est pas présent – Si aucune métrique up n’est présente pour un point de terminaison, cela signifie que le collecteur n’a pas pu trouver le point de terminaison.

    Si vous êtes sûr que le point de terminaison existe, vous devrez probablement ajuster la configuration du scraper. Il se peut que la reconnaissance relabel_config doive être ajustée ou qu’il y ait un problème avec le role utilisé pour la reconnaissance.

  • up est présent, mais la valeur est toujours 0 – Si up est présent, mais a la valeur 0, le collecteur est en mesure de reconnaître le point de terminaison, mais ne trouve aucune métrique compatible avec Prometheus.

    Dans ce cas, vous pouvez essayer d’utiliser une commande curl directement sur le point de terminaison. Vous pouvez vérifier que les informations sont correctes, par exemple le protocole (httpouhttps), le point de terminaison ou le port que vous utilisez. Vous pouvez également vérifier que le terminal répond avec une 200 réponse valide et qu'il respecte le format Prometheus. Enfin, le corps de la réponse ne peut pas dépasser la taille maximale autorisée. (Pour connaître les limites applicables aux collecteurs AWS gérés, consultez la section suivante.)

  • up est présent et supérieur à 0 – Si up est présent et supérieur à 0, cela signifie que les métriques sont envoyées à Amazon Managed Service for Prometheus.

    Assurez-vous de rechercher les bonnes métriques dans Amazon Managed Service for Prometheus (ou dans votre autre tableau de bord, par exemple Amazon Managed Grafana). Vous pouvez à nouveau utiliser curl pour vérifier les données attendues sur votre point de terminaison /metrics. Vérifiez également que vous n’avez pas dépassé les autres limites, telles que le nombre de points de terminaison par scraper. Vous pouvez vérifier le nombre de points de terminaison des métriques extraits en vérifiant le nombre de up métriques, en utilisant. count(up)

Limitations du scraper

Les scrapers entièrement gérés fournis par Amazon Managed Service for Prometheus sont soumis à quelques limitations.

  • Région – Votre cluster EKS, votre scraper géré et votre espace de travail Amazon Managed Service for Prometheus doivent tous se trouver dans la même région AWS .

  • Compte – Votre cluster EKS, votre scraper géré et votre espace de travail Amazon Managed Service for Prometheus doivent tous se trouver dans le même Compte AWS.

  • Collecteurs – Vous pouvez disposer d’un maximum de 10 scrapers Amazon Managed Service for Prometheus par région et par compte.

    Note

    Vous pouvez demander une augmentation de cette limite en demandant une augmentation de quota.

  • Réponse aux métriques – Le corps d’une réponse provenant d’une demande de point de terminaison /metrics ne peut pas dépasser 50 mégaoctets (Mo).

  • Points de terminaison par scraper – Un scraper peut collecter jusqu’à 30 000 points de terminaison /metrics.

  • Intervalle de scrape : la configuration du scraper ne peut pas spécifier un intervalle de scrape inférieur à 30 secondes.