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.
Collecte Slurm métriques avec un gestionnaire Prometheus collectionneur
Après avoir activé Slurm les métriques sur votre cluster AWS PCS (voirSlurm métriques dans AWS PIÈCES), vous pouvez utiliser un Prometheus collecteur géré pour extraire automatiquement les points de terminaison des métriques et fournir les données pour PromQL les requêtes. Le collecteur géré crée des interfaces réseau élastiques dans vos sous-réseaux VPC pour atteindre les points de terminaison des métriques du contrôleur de cluster sur le port 6817.
Le collecteur peut fournir des métriques vers l'une des destinations suivantes :
-
Amazon Managed Service for Prometheus Workspace : un magasin de métriques dédié et Prometheus compatible avec une durée de conservation configurable (150 jours par défaut). Vous pouvez effectuer des requêtes via des API Prometheus compatibles ouGrafana.
-
CloudWatch jeu de données : ensemble de CloudWatch données par défaut de votre compte avec 15 mois de conservation inclus. Vous pouvez effectuer des requêtes via CloudWatch Query Studio ou l'API HTTP Prometheus compatible.
La configuration côté cluster (Slurmparamètres, cible du contrôleur, groupes de sécurité et configuration du scrape) est la même quelle que soit la destination que vous choisissez. Seul le destination bloc de la requête Create-Scraper et le point de terminaison de la requête diffèrent.
Vous créez le collecteur à l'aide de la aws amp create-scraper commande. Bien que cette commande appartienne à l'espace de noms amp CLI, elle prend en charge les deux destinations.
Pour plus d'informations sur les collecteurs VPC-connected gérés, voir Configurer un collecteur VPC-connected géré dans le Guide de CloudWatch l'utilisateur Amazon.
Conditions préalables
Avant de configurer le collecteur géré, vérifiez les points suivants :
-
Slurmmétriques activées : le point de terminaison des métriques doit être actif sur votre cluster. Vous l'activez en définissant les paramètres
MetricsTypeet Slurm les paramètresCommunicationParameterspersonnalisés. Pour obtenir des instructions sur l'activation Slurm des métriques, consultezSlurm métriques dans AWS PIÈCES. Pour plus d'informations sur Slurm les paramètres personnalisés, consultezConfiguration des paramètres personnalisés de Slurm dans AWS PIÈCES. -
Slurmversion 25.11 ou supérieure : le cluster doit exécuter la version Slurm 25.11 ou supérieure pour exposer le point de terminaison des métriques.
-
Ressource de destination : créez la destination de vos indicateurs :
-
Amazon Managed Service pour l'espace de travail Prometheus : créez un espace de travail et attendez qu'il atteigne
ACTIVEson statut. Pour obtenir des instructions sur la création d'un espace de travail, voir Créer un espace de travail dans le guide de l'utilisateur d'Amazon Managed Service for Prometheus. -
CloudWatch jeu de données — Chaque compte possède un
defaultensemble de données dans chaque région. Vous n'avez pas besoin de le créer.
-
-
Sous-réseaux VPC et mise en réseau : vous avez besoin d'au moins deux sous-réseaux dans des zones de disponibilité différentes au sein du même VPC que le contrôleur de cluster. Incluez la zone de disponibilité où se trouve l'interface réseau du contrôleur. Le VPC doit prendre en charge le DNS et les noms d'hôte DNS doivent être activés. Pour connaître les exigences réseau détaillées, consultez la section Configuration d'un collecteur VPC-connected géré dans le Guide de CloudWatch l'utilisateur Amazon.
-
Groupes de sécurité : un groupe de sécurité dédié est requis pour le collecteur. Pour obtenir des instructions sur la configuration des groupes de sécurité, consultezConfigurer les groupes de sécurité pour le collecteur.
-
Autorisations IAM : principal IAM qui crée les besoins et les autorisations du scraper.
aps:CreateScraperiam:CreateServiceLinkedRoleLe service crée automatiquement un rôle lié au service ()AWSServiceRoleForAmazonPrometheusScraper. Ce rôle donne au collecteur l'autorisation d'accéder à vos ressources VPC et d'écrire vers la destination que vous avez choisie. Aucune configuration manuelle des rôles n'est requise. Pour plus d'informations, consultez la section Utilisation des rôles liés aux services dans le guide de l'utilisateur d'Amazon Managed Service for Prometheus. -
Point de terminaison Internet ou VPC : les sous-réseaux du collecteur doivent être en mesure d'atteindre le service de destination. Si vos sous-réseaux n'ont pas accès à Internet, créez un point de terminaison VPC d'interface dans le même VPC et les mêmes sous-réseaux.
com.amazonaws.À utiliser pour une destination d'espace de travail Amazon Managed Service pour Prometheus ouregion.aps-workspacescom.amazonaws.pour une destination de CloudWatch jeu de données.region.monitoring
Configurer les groupes de sécurité pour le collecteur
Nous vous recommandons de créer un groupe de sécurité dédié pour le collecteur géré plutôt que de réutiliser un groupe de sécurité existant. Un groupe dédié vous donne des règles explicites et vérifiables qui suivent le principe du moindre privilège.
Important
Le enable_http paramètre expose un point de terminaison HTTP non authentifié sur le port 6817. Restreignez l'accès entrant sur ce port au groupe de sécurité du collecteur uniquement. N'autorisez pas un accès réseau étendu (tel qu'une plage d'adresses CIDR) à ce port.
La procédure suivante utilise des variables shell pour les ID des groupes de sécurité. Définissez ces variables avant d'exécuter les commandes :
-
VPC_ID— L'ID du VPC sur lequel se trouve votre cluster AWS PCS. -
CLUSTER_SG_ID— L'ID du groupe de sécurité associé à votre cluster (celui que vous avez spécifié lors de la création du cluster). -
VPCE_SG_ID— L'ID du groupe de sécurité associé à votre point de terminaison VPC d'interface. Cette variable n'est nécessaire que si vos sous-réseaux collecteurs atteignent le service de destination via un point de terminaison VPC d'interface plutôt que via Internet ou une sortie NAT. Le point de terminaison estcom.amazonaws.destiné à une destination d'espace de travail Amazon Managed Service pour Prometheus ouregion.aps-workspacescom.amazonaws.à une destination de CloudWatch jeu de données.region.monitoring
Pour configurer des groupes de sécurité pour les Prometheus collectionneur
-
Créez un groupe de sécurité dédié pour le collecteur et saisissez l'ID du groupe :
COLLECTOR_SG_ID=$(aws ec2 create-security-group \ --group-name "pcs-prometheus-collector" \ --description "Security group for managed Prometheus collector" \ --vpc-id "$VPC_ID" \ --query 'GroupId' \ --output text) -
Ajoutez une règle entrante au groupe de sécurité du cluster qui autorise le trafic TCP sur le port 6817 à partir du groupe de sécurité du collecteur. Cette règle permet au collecteur de récupérer le point de terminaison des Slurm métriques sur le contrôleur.
Utilisez le
--ip-permissionsformulaire pour inclure une description des règles d'auditabilité :aws ec2 authorize-security-group-ingress \ --group-id "$CLUSTER_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=6817,ToPort=6817,UserIdGroupPairs=[{GroupId='"$COLLECTOR_SG_ID"',Description="Prometheus collector scrapes Slurm metrics"}]'Vous pouvez également utiliser le formulaire plus court sans description de règle :
aws ec2 authorize-security-group-ingress \ --group-id "$CLUSTER_SG_ID" \ --protocol tcp \ --port 6817 \ --source-group "$COLLECTOR_SG_ID" -
(Facultatif) Bloquez le trafic sortant sur le groupe de sécurité du collecteur. Par défaut, un groupe de sécurité nouvellement créé autorise tout le trafic sortant. Si vous souhaitez appliquer la sortie explicite uniquement pour renforcer la sécurité, révoquez la règle d'autorisation par défaut et ajoutez uniquement les règles de sortie requises par le collecteur.
Révoquez la règle d'autorisation de sortie par défaut :
aws ec2 revoke-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions '[{"IpProtocol":"-1","IpRanges":[{"CidrIp":"0.0.0.0/0"}]}]'Ajoutez une règle de sortie explicite pour permettre au collecteur d'atteindre le contrôleur sur le TCP 6817 :
aws ec2 authorize-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=6817,ToPort=6817,UserIdGroupPairs=[{GroupId='"$CLUSTER_SG_ID"',Description="Egress to Slurm controller for metrics scraping"}]'Ajoutez une règle de sortie explicite pour HTTPS (TCP 443) afin d'atteindre la destination de diffusion des métriques (Amazon Managed Service pour Prometheus ou) : CloudWatch
aws ec2 authorize-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges=[{CidrIp=0.0.0.0/0,Description="HTTPS egress for metrics delivery"}]'Pour un contrôle plus strict des sous-réseaux qui utilisent un point de terminaison VPC pour la distribution, remplacez la plage CIDR par le groupe de sécurité du point de terminaison VPC :
aws ec2 authorize-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,UserIdGroupPairs=[{GroupId='"$VPCE_SG_ID"',Description="HTTPS egress to VPC endpoint for metrics delivery"}]'Note
Si vous n'avez pas révoqué la règle de sortie par défaut, vous pouvez ignorer cette étape. La règle par défaut autorise déjà tout le trafic sortant, y compris le trafic vers le port 6817 et le port 443.
-
(Clusters isolés) Si vos sous-réseaux collecteurs n'ont pas accès à Internet et utilisent un point de terminaison VPC d'interface pour atteindre le service de destination, ajoutez une règle entrante au groupe de sécurité du point de terminaison VPC. Cette règle permet au trafic HTTPS du collecteur d'atteindre les interfaces réseau des terminaux. Il s'agit d'une étape souvent manquée.
aws ec2 authorize-security-group-ingress \ --group-id "$VPCE_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,UserIdGroupPairs=[{GroupId='"$COLLECTOR_SG_ID"',Description="Managed collector reaches service endpoint"}]'
Note
Comme alternative plus simple mais moins restrictive, vous pouvez associer le groupe de sécurité existant du contrôleur au collecteur si ce groupe de sécurité contient une règle d'autoréférencement qui autorise le trafic depuis lui-même. Cela répond à l'exigence de connectivité sans créer de groupe dédié.
Par exemple, si le groupe de sécurité (sg-0abc1234def56789a) de votre cluster autorise déjà tout le trafic TCP en provenance de lui-même, transmettez cet ID de groupe de sécurité dans le --security-group-ids paramètre lorsque vous créez le scraper :
aws amp create-scraper \ --source '{"vpcConfiguration":{"subnetIds":["subnet-id-1","subnet-id-2"],"securityGroupIds":["sg-0abc1234def56789a"]}}' \ ...
Cependant, l'approche des groupes de sécurité dédiés décrite dans la procédure précédente fournit une barre de sécurité plus élevée avec des règles explicites et vérifiables.
Pour plus d'informations sur les règles des groupes de sécurité, consultez la rubrique Règles des groupes de sécurité dans le Guide de l'utilisateur de Amazon VPC.
Création du collecteur géré
Utilisez le AWS CLI pour créer un collecteur VPC-connected géré qui extrait votre contrôleur de cluster et fournit des métriques à la destination que vous avez choisie.
Pour créer un collecteur géré pour Slurm metrics
-
Enregistrez la configuration du scrape dans un fichier YAML local nommé.
scrape-config.yamlPour une configuration suggérée, consultezConfiguration de scrape suggérée. -
Créez un fichier d'entrée JSON nommé
create-scraper-input.jsonselon la structure suivante. Choisissez ledestinationbloc qui correspond à votre cible.{ "source": { "vpcConfiguration": { "subnetIds": ["subnet-1", "subnet-2"], "securityGroupIds": ["sg-collector"] } }, "destination": { ... }, "scrapeConfiguration": { "configurationBlob": "raw-yaml-contents" } }Remplacez :
-
subnet-1etsubnet-2— Au moins deux ID de sous-réseau dans des zones de disponibilité différentes au sein du même VPC que le contrôleur de cluster. -
sg-collector— L'ID du groupe de sécurité pour le collecteur géré. -
raw-yaml-contents— Le texte intégral de votrescrape-config.yamlfichier, collé sous la forme d'une seule valeur de chaîne JSON. Le AWS CLI base64 code automatiquement la valeur sur le fil.
Pour le
destinationchamp, utilisez l'une des options suivantes :Destination : Amazon Managed Service pour l'espace de travail Prometheus
"destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:region:account-id:workspace/workspace-id" } }Destination : CloudWatch ensemble de données
"destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } }Pour l'ensemble complet des paramètres, voir create-scraper dans la AWS CLI référence des commandes.
-
-
Créez le grattoir :
aws amp create-scraper --cli-input-json file://create-scraper-input.jsonLa commande renvoie un
scraperIdet un état deCREATING. -
Attendez que l'état du grattoir passe à
ACTIVE(généralement 5 à 15 minutes) :aws amp describe-scraper --scraper-idscraper-idscraper-idRemplacez-le par l'identifiant renvoyé à l'étape précédente. Vous ne pouvez pas supprimer un scraper tant qu'il n'a pas atteint sonACTIVEstatut.
Trouvez le point de terminaison du contrôleur de cluster
La configuration Scrape nécessite l'adresse IP privée de votre contrôleur de cluster AWS PCS. Utilisez l'une des méthodes suivantes pour le trouver.
Configuration de scrape suggérée
La configuration YAML suivante extrait quatre points de terminaison de Slurm métriques (tâches, nœuds, planificateur et partitions) du contrôleur de cluster. Chaque point de terminaison est défini comme une tâche distincte afin que vous puissiez identifier les métriques par source dans vos requêtes.
global: scrape_interval: 60s scrape_timeout: 30s scrape_configs: - job_name: 'slurm-jobs' metrics_path: /metrics/jobs static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name' - job_name: 'slurm-nodes' metrics_path: /metrics/nodes static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name' - job_name: 'slurm-scheduler' metrics_path: /metrics/scheduler static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name' - job_name: 'slurm-partitions' metrics_path: /metrics/partitions static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name'
Remplacez :
-
controller-endpoint— L'adresse IP privée de votre contrôleur de cluster AWS PCS. Pour obtenir des instructions sur la recherche de cette valeur, consultezTrouvez le point de terminaison du contrôleur de cluster. -
my-cluster-name— Une étiquette qui identifie votre cluster. Lerelabel_configsbloc appose uneclusterétiquette sur chaque métrique de ce grattoir. Filtrez toujours les requêtes sur l'clusterétiquette. Les séries provenant d'un grattoir qui n'ont pas estampillé l'étiquette apparaissent comme des séries dupliquées sans étiquette jusqu'à ce qu'elles vieillissent.
Le minimum scrape_interval pour un collecteur géré est de 30 secondes. Cette configuration prend 60 secondes car le grattage charge le Slurm contrôleur (slurmctld). Les métriques d'interrogation permettent d'acquérir des verrous internes et de lire les structures de données en mémoire. Cette activité peut affecter les performances du planificateur sur les clusters occupés. Le Slurm Metrics Guide recommande un intervalle de 60 à 120 secondes pour minimiser l'impact sur les performances.
Note
Cette configuration n'inclut pas le /metrics/jobs-users-accts point de terminaison. Slurmla documentation indique que ce point de terminaison produit un nombre illimité de séries et n'est pas adapté à la surveillance stockée. Ne grattez pas non plus le simple /metrics index, car il combine toutes les données des sous-points de terminaison en une seule réponse.
Pour plus d'informations sur les options de configuration de scrape prises en charge, consultez la section Configuration de Scraper dans le guide de l' CloudWatch utilisateur Amazon.
Vérifier la livraison des métriques
Une fois que le scraper a atteint son ACTIVE statut, les premiers points de données apparaissent environ à un intervalle de scrape plus le délai de livraison plus tard. Utilisez la méthode de vérification qui correspond à votre destination.
Vérifier la livraison dans un espace de travail Amazon Managed Service pour Prometheus
Envoyez une SigV4-signed demande pour répertorier les noms de métriques disponibles depuis votre espace de travail :
awscurl --service aps --regionregion\ "https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/label/__name__/values"
Les besoins aps:QueryMetrics et aps:GetLabels les autorisations du principal appelant (ou la politique AmazonPrometheusQueryAccess gérée).
Vérifier la livraison à un CloudWatch ensemble de données
Envoyez une SigV4-signed demande pour répertorier les noms de métriques disponibles dans votre CloudWatch ensemble de données :
awscurl --service monitoring --regionregion\ "https://monitoring.region.amazonaws.com/api/v1/label/__name__/values"
Les besoins cloudwatch:GetMetricData et les cloudwatch:ListMetrics autorisations du principal appelant.
Important
Les métriques fournies à un CloudWatch jeu de données sont stockées sous forme de métriques OpenTelemetry (OTel). Ils n'apparaissent pas dans le navigateur d'espaces de noms CloudWatch Metrics classique ni dans la sortie deaws cloudwatch list-metrics. Vous devez les interroger avecPromQL.
Pour l'une ou l'autre des destinations, recherchez les noms de métriques commençant parslurm_nodes, par exempleslurm_jobs_running, ouslurm_node_cpus. slurm_ Si aucune statistique Slurm n'apparaît, vérifiez les points suivants :
-
L'état du grattoir est
ACTIVE. -
Les règles des groupes de sécurité permettent au collecteur d'atteindre le port 6817 du contrôleur.
-
Le point de terminaison des Slurm métriques est activé sur le cluster.
Requête Slurm métriques avec ProMQL
Vous interrogez les Slurm statistiques collectées à l'aide dePromQL. Les mêmes requêtes fonctionnent pour l'une ou l'autre destination. La méthode de requête dépend de l'endroit où vous avez fourni les mesures.
Interroger un espace de travail Amazon Managed Service pour Prometheus
-
API HTTP : envoyez SigV4-signed des demandes (nom du service
aps) àhttps://aps-workspaces.ouregion.amazonaws.com/workspaces/workspace-id/api/v1/query/api/v1/query_range. -
Grafana— Ajoutez une source de Prometheus données avec authentification SIGv4 et nom
apsde service. Pour obtenir des instructions sur la manière d'effectuer des requêtes avecGrafana, consultez la section Effectuer une requête à l'aide de Grafana dans le guide de l'utilisateur d'Amazon Managed Service for Prometheus.
L'exemple suivant permet awscurl d'interroger des tâches en cours d'exécution depuis un espace de travail Amazon Managed Service for Prometheus :
awscurl --service aps --regionregion\ -X POST "https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/query" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "query=slurm_jobs_running"
Le principal appelant a besoin de aps:QueryMetricsaps:GetMetricMetadata,aps:GetSeries, et aps:GetLabels d'autorisations (ou de la politique AmazonPrometheusQueryAccess gérée).
Interroger un CloudWatch ensemble de données
-
CloudWatch console : ouvrez CloudWatch, choisissez Query Studio, puis sélectionnez ProMQL dans le menu du langage de requête.
-
API HTTP : envoyez SigV4-signed des demandes (nom du service
monitoring) àhttps://monitoring.ouregion.amazonaws.com/api/v1/query/api/v1/query_range. -
Grafana— Ajoutez une source de Prometheus données avec URL
https://monitoring., authentification Sigv4 et nomregion.amazonaws.com.rproxy.goskope.commonitoringde service. Pour obtenir des instructions sur l'interrogation de CloudWatch métriques à l'aide de PromQL inGrafana, voir Interroger CloudWatch des métriques avec ProMQL dans Grafana dans le guide de l'utilisateur d'Amazon Managed Grafana.
L'exemple suivant permet d'interroger des tâches awscurl en cours d'exécution à partir d'un CloudWatch ensemble de données :
awscurl --service monitoring --regionregion\ -X POST "https://monitoring.region.amazonaws.com/api/v1/query" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "query=slurm_jobs_running"
Les besoins cloudwatch:GetMetricData et les cloudwatch:ListMetrics autorisations du principal appelant.
Exemple ProMQL queries
Les requêtes suivantes fonctionnent pour l'une ou l'autre des destinations. my-cluster-nameRemplacez-la par la valeur que vous avez définie dans le nouveau libellé de votre configuration de scrapecluster.
- Pourcentage d'utilisation du processeur
-
100 * slurm_node_cpus_alloc{cluster="my-cluster-name"} / slurm_node_cpus{cluster="my-cluster-name"} - Tâches en attente (arriéré dans les files d'attente)
-
slurm_jobs_pending{cluster="my-cluster-name"} - Exécution de tâches
-
slurm_jobs_running{cluster="my-cluster-name"} - Débit des tâches
-
slurm_jobs_completed{cluster="my-cluster-name"}
Pour plus d'informations sur les métriques disponibles et la configuration du scraping, consultez le guide des métriques