View a markdown version of this page

Configurer des collecteurs gérés pour Amazon EKS - 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.

Configurer des collecteurs gérés pour Amazon EKS

Pour utiliser un collecteur Amazon Managed Service for Prometheus, vous devez créer un scraper qui découvre et extrait les métriques de votre cluster Amazon EKS. Vous pouvez également créer un scraper qui s'intègre à Amazon Managed Streaming pour Apache Kafka ou à Amazon OpenSearch Service. Pour plus d'informations, consultez Intégrer Amazon MSK et Intégrer Amazon OpenSearch Service.

  • 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

Un collecteur Amazon Managed Service for Prometheus extrait les métriques qui le sont. Prometheus-compatible Pour plus d’informations sur les métriques compatibles avec Prometheus, consultez la section Que sont les Prometheus-compatible métriques ?. Les clusters Amazon EKS présentent des métriques pour le serveur d'API. Les clusters Amazon EKS de version Kubernetes 1.28 ou supérieure présentent également des métriques pour le et. kube-scheduler kube-controller-manager Pour plus d'informations, consultez la section Récupérer les métriques brutes du plan de contrôle au format Prometheus dans le guide de l'utilisateur Amazon EKS.

Note

L'extraction de métriques à partir d'un cluster peut entraîner des frais d'utilisation du réseau. L'un des moyens d'optimiser ces coûts consiste à configurer votre /metrics terminal pour compresser les métriques fournies (par exemple, avec gzip), réduisant ainsi les données qui doivent être déplacées sur le réseau. La procédure à suivre dépend de l'application ou de la bibliothèque qui fournit les métriques. Certaines bibliothèques sont compressées par défaut.

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.

Il existe trois manières de créer un grattoir :

  • Un scraper est automatiquement créé pour vous lorsque vous créez un cluster Amazon EKS via la console Amazon EKS et que vous choisissez d'activer les métriques Prometheus.

  • Vous pouvez créer un scraper depuis la console Amazon EKS pour un cluster existant. Ouvrez le cluster dans la console Amazon EKS, puis, dans l'onglet Observabilité, choisissez Ajouter un scraper.

    Pour plus de détails sur les paramètres disponibles, consultez la section Activer les métriques Prometheus dans le guide de l'utilisateur Amazon EKS.

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

    Ces options sont décrites dans la procédure suivante.

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

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

Note

Le groupe de sécurité et les sous-réseaux doivent être définis sur le groupe de sécurité et les sous-réseaux du cluster auquel vous vous connectez.

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 scraper à l’aide de l’ 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 à Compte AWS, l’espace de travail, la sécurité et au cluster Amazon EKS par vos propres identifiants, et fournir la configuration à utiliser pour votre scraper.

Note

Le groupe de sécurité et les sous-réseaux doivent être définis sur le groupe de sécurité et les sous-réseaux du cluster auquel vous vous connectez.

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 générale à 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  :

  • Créez un scraper avec l’opération d’API CreateScraper.

  • Répertoriez vos scrapers existants avec l’opération d’API ListScrapers.

  • Mettez à jour l'alias, la configuration ou la destination d'un scraper à l'aide de l'opération UpdateScraper API.

  • Supprimez un scraper avec l’opération d’API DeleteScraper.

  • Obtenez plus de détails sur un scraper avec l’opération d’API DescribeScraper.

  • Obtenez une configuration générale pour les scrapers avec l’opération d’API GetDefaultScraperConfiguration.

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.

Cross-account configuration

Pour créer un scraper multicompte lorsque votre cluster Amazon EKS et l'espace de travail Amazon Managed Service for Prometheus se trouvent sur des comptes différents, procédez comme suit. Par exemple, vous avez un compte source account_id_source contenant le cluster Amazon EKS et un compte cible account_id_target contenant l'espace de travail Amazon Managed Service for Prometheus.

Pour créer un scraper dans une configuration multi-comptes
  1. Dans le compte source, créez un rôle arn:aws:iam::account_id_source:role/Source et ajoutez la politique de confiance suivante.

    { "Effect": "Allow", "Principal": { "Service": [ "scraper.aps.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "scraper_ARN" }, "StringEquals": { "AWS:SourceAccount": "account_id" } } }
  2. Pour chaque combinaison de source (cluster Amazon EKS) et de cible (Amazon Managed Service for Prometheus workspace), vous devez créer un rôle arn:aws:iam::account_id_target:role/Target et ajouter la politique de confiance suivante avec des autorisations pour. AmazonPrometheusRemoteWriteAccess

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id_source:role/Source" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "scraper_ARN" } } }
  3. Créez un grattoir avec l'--role-configurationoption.

    aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id_source:cluster/xarw,subnetIds=[subnet-subnet-id]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id_target:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::account-id_source:role/Source", "targetRoleArn":"arn:aws:iam::account-id_target:role/Target"}'
  4. Validez la création du scraper.

    aws amp list-scrapers { "scrapers": [ { "scraperId": "scraper-id", "arn": "arn:aws:aps:us-west-2:account_id_source:scraper/scraper-id", "roleArn": "arn:aws:iam::account_id_source:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraperInternal_cc319052-41a3-4", "status": { "statusCode": "ACTIVE" }, "createdAt": "2024-10-29T16:37:58.789000+00:00", "lastModifiedAt": "2024-10-29T16:55:17.085000+00:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account_id_source:cluster/xarw", "securityGroupIds": [ "sg-security-group-id", "sg-security-group-id" ], "subnetIds": [ "subnet-subnet_id" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account_id_target:workspace/ws-workspace-id" } } } ] }

Passage d'un rôle à RoleConfiguration un rôle lié à un service

Lorsque vous souhaitez revenir à un rôle lié à un service au lieu d'écrire dans un espace de travail Amazon Managed Service pour Prometheus, vous devez mettre à jour UpdateScraper et fournir un espace de travail sur le même compte que le scraper sans le. RoleConfiguration RoleConfiguration Le rôle RoleConfiguration sera supprimé du scraper et le rôle lié au service sera utilisé.

Lorsque vous changez d'espace de travail sur le même compte que le scraper et que vous souhaitez continuer à utiliser leRoleConfiguration, vous devez à nouveau saisir l'RoleConfigurationoption activée. UpdateScraper

Création d'un scraper pour les espaces de travail activé à l'aide de clés gérées par le client

Pour créer un scraper permettant d'ingérer des métriques dans un espace de travail Amazon Managed Service for Prometheus avec des clés gérées par le client, utilisez le dont la --role-configuration source et la cible sont définies sur le même compte.

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/xarw,subnetIds=[subnet-subnet_id]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::account_id:role/Source", "targetRoleArn":"arn:aws:iam::account_id:role/Target"}'

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 nécessaires n'existent pas. Le groupe de sécurité , les sous-réseaux et le cluster Amazon EKS spécifiés doivent exister.

  • Espace d'adressage 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 aux collecteurs Amazon Managed Service for Prometheus un accès à votre cluster.

  • Configurez manuellement votre cluster Amazon EKS pour le grattage géré des métriques.

Les rubriques suivantes décrivent chacun de ces éléments plus en détail.

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

L'utilisation des 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 d'accès des détails du cluster. Pour plus d'informations, consultez Autoriser les rôles IAM ou les utilisateurs à accéder à l'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 cluster), et une politique d'entrée d'accès sera automatiquement créée, permettant à Amazon Managed Service for Prometheus d'accéder aux métriques du cluster.

  • Ajouter après la création d'un cluster  : si votre cluster Amazon EKS existe déjà, définissez le mode d'authentification sur ou sur API ouAPI_AND_CONFIG_MAP, et tous les scrapers que vous créez via l'API ou la CLI Amazon Managed Service for Prometheus ou via la console Amazon EKS verront automatiquement 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, la politique suivante est générée. Pour plus d'informations sur les entrées d'accès, consultez la section Autoriser les rôles IAM ou les utilisateurs à 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", "apiGroups": [ "metrics.eks.amazonaws.com" ], "resources": [ "kcm/metrics", "ksh/metrics" ], "verbs": [ "get" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }

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

Si vous préférez l'utiliser pour contrôler l'accès aws-auth ConfigMap à votre cluster Kubernetes, vous pouvez toujours autoriser Amazon Managed Service for Prometheus scrapers à 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 ConfigMap et pour accéder aux entrées, consultez la section Autoriser les rôles IAM ou les utilisateurs à 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 grattage géré des métriques
  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"] - apiGroups: ["metrics.eks.amazonaws.com"] resources: ["kcm/metrics", "ksh/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'IDscraper-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 SDK AWS CLI or. La dernière version vous fournit les dernières fonctionnalités et fonctionnalités, ainsi que des mises à jour de sécurité. Vous pouvez également utiliser AWS CloudShell, qui fournit automatiquement une expérience de ligne de commande toujours à jour.

Pour afficher tous les scrapers de votre compte, utilisez l’opératon d’API ListScrapers.

Vous pouvez également utiliser le AWS CLI, appeler :

aws amp list-scrapers --region aws-region

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 scraper, recherchez le scraperId du scraper que vous souhaitez supprimer à l'aide de l'opération ListScrapers, puis utilisez l'opération DeleteScraper pour le supprimer.

Vous pouvez également utiliser le AWS CLI, appeler :

aws amp delete-scraper --scraper-id scraperId

Configuration du scraper

Vous pouvez contrôler la façon dont votre scraper découvre et collecte les métriques grâce à une configuration de Prometheus-compatible scraper. 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, vous pouvez utiliser l'UpdateScraperopération. Si vous devez mettre à jour la source des métriques (par exemple, vers un autre cluster Amazon EKS), vous devez supprimer le scraper et le recréer avec la nouvelle source.

Configuration prise en charge

Pour plus d'informations sur le format de configuration du scraper, y compris une ventilation détaillée des valeurs possibles, consultez la section Configuration dans la documentation 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. Cet exemple inclut la prise en charge des métriques du serveur d'API kube, ainsi que des métriques kube-controller-manager et kube-scheduler. Pour plus d'informations, consultez la section Récupérer les métriques brutes du plan de contrôle au format Prometheus dans le guide de l'utilisateur Amazon EKS.

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 # Scheduler metrics - job_name: 'ksh-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics scheme: https bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name action: keep regex: default;kubernetes;https # Controller Manager metrics - job_name: 'kcm-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics scheme: https bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name action: keep regex: default;kubernetes;https

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

  • 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.

  • Résolution DNS — En ce qui concerne le nom de la cible, le seul nom de serveur reconnu dans cette configuration est le serveur API Kubernetes,. kubernetes.default.svc Tous les autres noms de machines doivent être spécifiés par adresse IP.

  • Autorisation  : omettez si aucune autorisation n'est requise. Si nécessaire, l'autorisation doit êtreBearer, 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 ?

Important

Vérifiez que l'accès privé pour votre cluster Amazon EKS est activé. Pour plus d'informations, consultez la section Point de terminaison privé du cluster dans le guide de l'utilisateur Amazon EKS.

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 certain que le point de terminaison existe, il se peut que le collecteur ne puisse pas le trouver pour plusieurs raisons.

  • upest présent, mais vaut toujours 0 — S'il up est présent, mais 0, le collecteur est en mesure de découvrir le point de terminaison, mais ne trouve aucune Prometheus-compatible métrique.

    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 par une 200 réponse valide et qu'il respecte le format Prometheus. Enfin, le corps de la réponse ne peut pas être plus grand que 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 à l'aide de. 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 .

  • 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.