View a markdown version of this page

Recopilación Slurm métricas con un sistema gestionado Prometheus coleccionista - AWS PIEZAS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recopilación Slurm métricas con un sistema gestionado Prometheus coleccionista

Después de habilitar Slurm las métricas en su clúster de AWS PCS (consulteSlurm métricas en AWS PIEZAS), puede usar un Prometheus recopilador administrado para extraer automáticamente los puntos finales de las métricas y entregar los datos para su PromQL consulta. El recopilador administrado crea interfaces de red elásticas en las subredes de la VPC para llegar a los puntos finales de las métricas del controlador del clúster en el puerto 6817.

El recopilador puede enviar métricas a cualquiera de los siguientes destinos:

  • Amazon Managed Service para Prometheus Workspace: un almacén Prometheus de métricas dedicado y compatible con retención configurable (150 días de forma predeterminada). Puede realizar consultas a través Prometheus de API compatibles o. Grafana

  • CloudWatch conjunto de datos: el CloudWatch conjunto de datos predeterminado de tu cuenta con 15 meses de retención incluida. Puedes realizar consultas a través de CloudWatch Query Studio o la API HTTP Prometheus compatible.

La configuración del clúster (Slurmajustes, destino de la controladora, grupos de seguridad y configuración de extracción) es la misma independientemente del destino que se elija. Solo el destination bloque de la solicitud de creación del raspador y el punto final de la consulta son diferentes.

El recopilador se crea con el comando. aws amp create-scraper Aunque este comando pertenece al espacio de nombres de la amp CLI, admite ambos destinos.

Para obtener más información sobre los recopiladores VPC-connected gestionados, consulte Configurar un recopilador VPC-connected gestionado en la Guía del CloudWatch usuario de Amazon.

Requisitos previos

Antes de configurar el recopilador gestionado, compruebe lo siguiente:

  • Slurmmétricas habilitadas: el punto final de métricas debe estar activo en tu clúster. Para habilitarlo, defina MetricsType la Slurm configuración CommunicationParameters personalizada. Para obtener instrucciones sobre cómo habilitar Slurm las métricas, consulteSlurm métricas en AWS PIEZAS. Para obtener más información sobre la Slurm configuración personalizada, consulteCómo configurar los ajustes personalizados de Slurm en AWS PC.

  • Slurmversión 25.11 o superior: el clúster debe ejecutar la versión Slurm 25.11 o una versión superior para mostrar el punto final de las métricas.

  • Recurso de destino: crea el destino para tus métricas:

    • Amazon Managed Service para el espacio de trabajo de Prometheus: cree un espacio de trabajo y espere a que alcance ACTIVE el estado. Para obtener instrucciones sobre cómo crear un espacio de trabajo, consulte Crear un espacio de trabajo en la guía del usuario de Amazon Managed Service for Prometheus.

    • CloudWatch conjunto de datos: cada cuenta tiene un default conjunto de datos en cada región. No es necesario que lo crees.

  • Subredes y redes de VPC: necesita al menos dos subredes en diferentes zonas de disponibilidad dentro de la misma VPC que el controlador del clúster. Incluya la zona de disponibilidad en la que reside la interfaz de red del controlador. La VPC debe tener la compatibilidad con DNS y los nombres de host DNS habilitados. Para obtener información detallada sobre los requisitos de red, consulte Configurar un recopilador VPC-connected gestionado en la Guía del CloudWatch usuario de Amazon.

  • Grupos de seguridad: se requiere un grupo de seguridad dedicado para el recopilador. Para obtener instrucciones sobre la configuración de los grupos de seguridad, consulteConfigure los grupos de seguridad para el recopilador.

  • Permisos de IAM: el principal de IAM que crea las necesidades aps:CreateScraper y los permisos del raspador. iam:CreateServiceLinkedRole El servicio crea automáticamente un rol vinculado al servicio (). AWSServiceRoleForAmazonPrometheusScraper Esta función otorga al recopilador permiso para acceder a los recursos de la VPC y escribir en el destino elegido. No es necesaria la configuración manual de los roles. Para obtener más información, consulte Uso de roles vinculados a servicios en la guía del usuario de Amazon Managed Service para Prometheus.

  • Punto final de Internet o VPC: las subredes recopiladoras deben poder llegar al servicio de destino. Si sus subredes no tienen acceso a Internet, cree un punto final de VPC de interfaz en la misma VPC y en las mismas subredes. com.amazonaws.region.aps-workspacesUtilízalo como destino del espacio de trabajo de Amazon Managed Service para Prometheus o como destino de un conjunto de datos. com.amazonaws.region.monitoring CloudWatch

Configure los grupos de seguridad para el recopilador

Recomendamos crear un grupo de seguridad dedicado para el recopilador administrado en lugar de reutilizar un grupo de seguridad existente. Un grupo dedicado ofrece reglas explícitas y auditables que siguen el principio del mínimo privilegio.

importante

La enable_http configuración expone un punto final HTTP no autenticado en el puerto 6817. Restrinja el acceso entrante en este puerto únicamente al grupo de seguridad del recopilador. No permita un acceso de red amplio (como un rango de CIDR) a este puerto.

El siguiente procedimiento utiliza variables de shell para los identificadores de los grupos de seguridad. Establezca estas variables antes de ejecutar los comandos:

  • VPC_ID— El ID de la VPC en la que reside su clúster de AWS PCS.

  • CLUSTER_SG_ID— El ID del grupo de seguridad adjunto a su clúster (el que especificó al crear el clúster).

  • VPCE_SG_ID— El ID del grupo de seguridad adjunto al punto final de la VPC de tu interfaz. Esta variable solo es necesaria si las subredes del recopilador llegan al servicio de destino a través de un punto final de la VPC de la interfaz en lugar de a través de una salida de Internet o NAT. El punto final es com.amazonaws.region.aps-workspaces para un destino de espacio de trabajo de Amazon Managed Service for Prometheus o com.amazonaws.region.monitoring para un destino de conjunto de datos. CloudWatch

Para configurar los grupos de seguridad para el espacio gestionado Prometheus coleccionista
  1. Cree un grupo de seguridad dedicado para el recopilador y capture el ID del grupo:

    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)
  2. Agregue una regla de entrada al grupo de seguridad del clúster que permita el tráfico TCP en el puerto 6817 desde el grupo de seguridad del recopilador. Esta regla permite al recopilador extraer el punto final de las Slurm métricas del controlador.

    Utilice el --ip-permissions formulario para incluir una descripción de la regla con fines de auditabilidad:

    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"}]'

    Como alternativa, puede usar el formulario más corto sin una descripción de la regla:

    aws ec2 authorize-security-group-ingress \ --group-id "$CLUSTER_SG_ID" \ --protocol tcp \ --port 6817 \ --source-group "$COLLECTOR_SG_ID"
  3. (Opcional) Bloquee el tráfico saliente en el grupo de seguridad del recopilador. De forma predeterminada, un grupo de seguridad recién creado permite todo el tráfico saliente. Si desea imponer la salida únicamente de forma explícita para aumentar la seguridad, revoque la regla predeterminada que permite todo y añada solo las reglas de salida que requiera el recopilador.

    Revoca la regla de salida predeterminada que permite todo el acceso:

    aws ec2 revoke-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions '[{"IpProtocol":"-1","IpRanges":[{"CidrIp":"0.0.0.0/0"}]}]'

    Agregue una regla de salida explícita para permitir que el recopilador llegue al controlador en 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"}]'

    Agregue una regla de salida explícita para HTTPS (TCP 443) para llegar al destino de entrega de las métricas (Amazon Managed Service para Prometheus o): 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"}]'

    Para tener un control más estricto en las subredes que utilizan un punto final de la VPC para la entrega, sustituya el rango de CIDR por el grupo de seguridad del punto final de la 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"}]'
    nota

    Si no revocó la regla de salida predeterminada, puede omitir este paso. La regla predeterminada ya permite todo el tráfico saliente, incluido el tráfico a los puertos 6817 y 443.

  4. (Clústeres aislados) Si las subredes de tu recopilador no tienen acceso a Internet y utilizan un punto final de interfaz de VPC para llegar al servicio de destino, agrega una regla de entrada al grupo de seguridad del punto final de la VPC. Esta regla permite que el tráfico HTTPS del recopilador llegue a las interfaces de red de los puntos finales. Este es un paso que se omite con frecuencia.

    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"}]'
nota

Como alternativa más sencilla pero menos restrictiva, puede adjuntar el grupo de seguridad existente de la controladora al recopilador si ese grupo de seguridad contiene una regla de autorreferencia que permita que el tráfico provenga de sí mismo. Esto satisface los requisitos de conectividad sin necesidad de crear un grupo dedicado.

Por ejemplo, si el grupo de seguridad de tu clúster (sg-0abc1234def56789a) ya permite que todo el tráfico TCP provenga de sí mismo, introduce ese ID de grupo de seguridad en el --security-group-ids parámetro cuando crees el raspador:

aws amp create-scraper \ --source '{"vpcConfiguration":{"subnetIds":["subnet-id-1","subnet-id-2"],"securityGroupIds":["sg-0abc1234def56789a"]}}' \ ...

Sin embargo, el enfoque de grupo de seguridad dedicado descrito en el procedimiento anterior proporciona un nivel de seguridad más alto con reglas auditables y explícitas.

Si desea obtener más información acerca de las reglas del grupo de seguridad, consulte Security group rules (Reglas del grupo de seguridad) en la Guía del usuario de Amazon VPC.

Cree el recopilador gestionado

AWS CLI Utilízalo para crear un recopilador VPC-connected gestionado que extraiga tu controlador de clúster y entregue las métricas al destino que hayas elegido.

Para crear un recopilador gestionado para Slurm métricas
  1. Guarde la configuración de scrape en un archivo YAML local denominado. scrape-config.yaml Para ver una configuración sugerida, consulte. Configuración de raspado sugerida

  2. Cree un archivo de entrada JSON denominado create-scraper-input.json con la siguiente estructura. Elige el destination bloque que coincida con tu objetivo.

    { "source": { "vpcConfiguration": { "subnetIds": ["subnet-1", "subnet-2"], "securityGroupIds": ["sg-collector"] } }, "destination": { ... }, "scrapeConfiguration": { "configurationBlob": "raw-yaml-contents" } }

    Reemplace:

    • subnet-1ysubnet-2: al menos dos ID de subred en diferentes zonas de disponibilidad dentro de la misma VPC que el controlador del clúster.

    • sg-collector— El ID del grupo de seguridad del recopilador gestionado.

    • raw-yaml-contents— El texto completo del scrape-config.yaml archivo, pegado como un único valor de cadena JSON. La AWS CLI base 64 codifica el valor del cable automáticamente.

    Para el destination campo, utilice una de las siguientes opciones:

    Destino: Amazon Managed Service para el espacio de trabajo de Prometheus

    "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:region:account-id:workspace/workspace-id" } }

    Destino: conjunto de datos CloudWatch

    "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } }

    Para ver el conjunto completo de parámetros, consulta create-scraper en la AWS CLI referencia de comandos.

  3. Crea el raspador:

    aws amp create-scraper --cli-input-json file://create-scraper-input.json

    El comando devuelve un scraperId y un estado deCREATING.

  4. Espere a que el estado del raspador cambie a ACTIVE (normalmente de 5 a 15 minutos):

    aws amp describe-scraper --scraper-id scraper-id

    scraper-idSustitúyala por la identificación devuelta en el paso anterior. No puedes eliminar un raspador hasta que alcance el ACTIVE estado.

Busque el punto final de la controladora del clúster

La configuración de scrape requiere la dirección IP privada de su controlador de clúster AWS PCS. Utilice uno de los métodos siguientes para encontrarla.

Consola de administración de AWS
  1. Abra la consola AWS PCS en https://console.aws.amazon.com/pcs/.

  2. Elija su clúster de la lista.

  3. En los detalles de configuración del clúster, localice la sección Terminales.

  4. Anota la dirección IP privada y el puerto del Slurm controlador (slurmctld). El puerto es 6817.

AWS CLI
  1. Ejecute el comando siguiente. cluster-identifierSustitúyalo por el nombre o ID de su clúster.

    aws pcs get-cluster --cluster-identifier cluster-identifier

    En la respuesta, localice la SLURMCTLD entrada en la endpoints matriz. El privateIpAddress valor es el punto final del controlador que necesita para la configuración de raspado. A continuación se muestra un ejemplo:

    "endpoints": [ { "type": "SLURMCTLD", "privateIpAddress": "192.0.2.1", "port": "6817" }, { "type": "SLURMRESTD", "privateIpAddress": "192.0.2.1", "port": "6820" } ]

    Utilice el valor privateIpAddress de la SLURMCTLD entrada (puerto 6817) como controller-endpoint valor en la configuración de scrape.

  2. Como alternativa, extraiga directamente solo la dirección IP del controlador:

    aws pcs get-cluster --cluster-identifier cluster-identifier \ --query 'cluster.endpoints[?type==`SLURMCTLD`].privateIpAddress' \ --output text

Configuración de raspado sugerida

La siguiente configuración de YAML extrae cuatro puntos finales de Slurm métricas (trabajos, nodos, planificador y particiones) del controlador de clúster. Cada punto final se define como un trabajo independiente para que puedas identificar las métricas por fuente en tus consultas.

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'

Reemplace:

  • controller-endpoint— La dirección IP privada de su controlador de clúster AWS PCS. Para obtener instrucciones sobre cómo encontrar este valor, consulteBusque el punto final de la controladora del clúster.

  • my-cluster-name— Una etiqueta que identifique su clúster. El relabel_configs bloque estampa una cluster etiqueta en cada métrica de este raspador. Filtra siempre las consultas de la cluster etiqueta. Las series de un raspador que no selló la etiqueta aparecen como series duplicadas sin etiquetar hasta que envejecen.

El mínimo scrape_interval para un recopilador gestionado es de 30 segundos. Esta configuración utiliza 60 segundos porque el raspado carga el Slurm controlador (slurmctld). Al consultar las métricas, se obtienen bloqueos internos y se leen las estructuras de datos en memoria. Esta actividad puede afectar al rendimiento del programador en clústeres ocupados. La guía de Slurm métricas recomienda un intervalo de procesamiento de 60 a 120 segundos para minimizar el impacto en el rendimiento.

nota

Esta configuración no incluye el punto final. /metrics/jobs-users-accts SlurmLa documentación advierte que este punto final produce un número ilimitado de series y no es adecuado para la supervisión almacenada. Tampoco extraiga el /metrics índice básico, ya que combina todos los datos de subpuntos finales en una sola respuesta.

Para obtener más información sobre las opciones de configuración de scrape compatibles, consulte la configuración de Scraper en la guía del usuario de Amazon. CloudWatch

Verifica las métricas de entrega

Una vez que el raspador alcanza el ACTIVE estado, los primeros puntos de datos aparecen aproximadamente un intervalo de raspado más el tiempo de entrega posterior. Usa el método de verificación que coincida con tu destino.

Verifica la entrega a un espacio de trabajo de Amazon Managed Service para Prometheus

Envía una SigV4-signed solicitud para enumerar los nombres de las métricas disponibles en tu espacio de trabajo:

awscurl --service aps --region region \ "https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/label/__name__/values"

Las necesidades aps:QueryMetrics y aps:GetLabels los permisos del principal llamante (o la política AmazonPrometheusQueryAccess gestionada).

Verifique la entrega a un CloudWatch conjunto de datos

Envía una SigV4-signed solicitud para enumerar los nombres de las métricas disponibles en tu CloudWatch conjunto de datos:

awscurl --service monitoring --region region \ "https://monitoring.region.amazonaws.com/api/v1/label/__name__/values"

Las necesidades cloudwatch:GetMetricData y los cloudwatch:ListMetrics permisos del principal llamante.

importante

Las métricas entregadas a un CloudWatch conjunto de datos se almacenan como métricas OpenTelemetry (Otel). No aparecen en el navegador de espacios de nombres clásico de CloudWatch Metrics ni en la salida deaws cloudwatch list-metrics. Debes consultarlos conPromQL.

Para cualquiera de los destinos, busca nombres de métricas que comiencen por slurm_slurm_nodes, comoslurm_jobs_running, oslurm_node_cpus. Si no aparece ninguna Slurm métrica, compruebe lo siguiente:

  • El estado del raspador esACTIVE.

  • Las reglas del grupo de seguridad permiten que el recopilador llegue al puerto 6817 del controlador.

  • El punto final de Slurm métricas está habilitado en el clúster.

Consultar Slurm métricas con PromQL

Consulta las Slurm métricas recopiladas mediantePromQL. Las mismas consultas funcionan en cualquiera de los destinos. El método de consulta depende de dónde hayas entregado las métricas.

Consulta un espacio de trabajo de Amazon Managed Service para Prometheus

  • API HTTP: envíe SigV4-signed solicitudes (nombre del servicioaps) a https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/query o. /api/v1/query_range

  • Grafana— Agregue una fuente Prometheus de datos con la autenticación SIGv4 y el nombre del aps servicio. Para obtener instrucciones sobre cómo realizar consultas conGrafana, consulte Realizar consultas con Grafana en la guía del usuario de Amazon Managed Service for Prometheus.

El siguiente ejemplo se utiliza awscurl para consultar trabajos en ejecución desde un espacio de trabajo de Amazon Managed Service para Prometheus:

awscurl --service aps --region region \ -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"

Las necesidades aps:QueryMetrics y los aps:GetLabels permisos del principal aps:GetSeries llamante (o la política AmazonPrometheusQueryAccess gestionada). aps:GetMetricMetadata

Consulta un CloudWatch conjunto de datos

  • CloudWatch consola: CloudWatch ábrala, elija Query Studio y seleccione PromQL en el menú del lenguaje de consulta.

  • API HTTP: envíe SigV4-signed solicitudes (nombre del serviciomonitoring) a https://monitoring.region.amazonaws.com/api/v1/query o. /api/v1/query_range

  • Grafana— Agregue una fuente Prometheus de datos con la URLhttps://monitoring.region.amazonaws.com, la autenticación SIGv4 y el nombre del monitoring servicio. Para obtener instrucciones sobre cómo consultar CloudWatch métricas con PromQL InGrafana, consulte la Guía del usuario de Amazon Managed Grafana para consultar CloudWatch métricas con PromQL en Grafana.

El siguiente ejemplo se utiliza awscurl para consultar trabajos en ejecución desde un conjunto de datos: CloudWatch

awscurl --service monitoring --region region \ -X POST "https://monitoring.region.amazonaws.com/api/v1/query" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "query=slurm_jobs_running"

Las necesidades cloudwatch:GetMetricData y los cloudwatch:ListMetrics permisos del principal llamante.

Ejemplo PromQL consultas

Las siguientes consultas funcionan con cualquiera de los destinos. my-cluster-nameSustitúyala por el valor que estableciste en la nueva etiqueta de tu configuración de scrapecluster.

Porcentaje de utilización de la CPU
100 * slurm_node_cpus_alloc{cluster="my-cluster-name"} / slurm_node_cpus{cluster="my-cluster-name"}
Trabajos pendientes (acumulación de tareas pendientes)
slurm_jobs_pending{cluster="my-cluster-name"}
Trabajos en ejecución
slurm_jobs_running{cluster="my-cluster-name"}
Rendimiento de los trabajos
slurm_jobs_completed{cluster="my-cluster-name"}

Para obtener más información sobre las métricas disponibles y la configuración de extracción, consulte la guía de métricas en el sitio web. Slurm