Supervisión de instancias de AWS PCS mediante Amazon CloudWatch - AWS PCS

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.

Supervisión de instancias de AWS PCS mediante Amazon CloudWatch

AWS PCS lanza EC2 las instancias de Amazon según sea necesario para cumplir con los requisitos de escalado definidos en sus grupos de nodos de cómputo de PCS. Puedes monitorizar estas instancias mientras se ejecutan con Amazon CloudWatch. Puede inspeccionar los registros de las instancias en ejecución iniciando sesión en ellas y utilizando herramientas de línea de comandos interactivas. Sin embargo, de forma predeterminada, los datos de CloudWatch las métricas solo se conservan durante un período limitado una vez que se cierra una instancia y, por lo general, los registros de la instancia se eliminan junto con los volúmenes de EBS que respaldan la instancia. Para conservar las métricas o los datos de registro de las instancias lanzadas por PCS una vez finalizadas, puede configurar el CloudWatch agente de las instancias con una plantilla de EC2 lanzamiento. En este tema se proporciona información general sobre la supervisión de las instancias en ejecución y se proporcionan ejemplos de cómo configurar las métricas y los registros de las instancias persistentes.

Supervisión de instancias en ejecución

Búsqueda de instancias de AWS PCS

Para monitorear las instancias lanzadas por PCS, busque las instancias en ejecución asociadas a un clúster o grupo de nodos de cómputo. A continuación, en la EC2 consola de una instancia determinada, inspeccione las secciones de estado y alarmas y de supervisión. Si el acceso de inicio de sesión está configurado para esas instancias, puede conectarse a ellas e inspeccionar los distintos archivos de registro de las instancias. Para obtener más información sobre cómo identificar qué instancias administra PCS, consulteBúsqueda de instancias de grupos de nodos de cómputo en AWS PCS.

Habilitar métricas detalladas

De forma predeterminada, las métricas de las instancias se recopilan en intervalos de 5 minutos. Para recopilar métricas en intervalos de un minuto, habilita la CloudWatch supervisión detallada en la plantilla de lanzamiento de tu grupo de nodos de cómputo. Para obtener más información, consulte Active la CloudWatch supervisión detallada.

Configurar las métricas y los registros de las instancias persistentes

Puedes conservar las métricas y los registros de tus instancias instalando y configurando el CloudWatch agente de Amazon en ellas. Consta de tres pasos principales:

  1. Cree una configuración de CloudWatch agente.

  2. Guarde la configuración en un lugar donde las instancias de PCS puedan recuperarla.

  3. Escriba una plantilla de EC2 lanzamiento que instale el software del CloudWatch agente, busque la configuración e inicie el CloudWatch agente con la configuración.

Para obtener más información, consulte Recopilar métricas, registros y seguimientos con el CloudWatch agente en la Guía del CloudWatch usuario de Amazon yUso de plantillas de EC2 lanzamiento de Amazon con AWS PCS.

Cree una configuración CloudWatch de agente

Antes de implementar el CloudWatch agente en las instancias, debe generar un archivo de configuración JSON que especifique las métricas, los registros y los seguimientos que desea recopilar. Los archivos de configuración se pueden crear mediante un asistente o manualmente, mediante un editor de texto. El archivo de configuración se creará manualmente para esta demostración.

En un equipo en el que tenga instalada la AWS CLI, cree un archivo de CloudWatch configuración denominado config.json con el contenido siguiente. También puede usar la siguiente URL para descargar una copia del archivo.

https://aws-hpc-recipes.s3.amazonaws.com/main/recipes/pcs/cloudwatch/assets/config.json
Notas
  • Las rutas de registro del archivo de ejemplo son para Amazon Linux 2. Si sus instancias utilizarán un sistema operativo base diferente, cambie las rutas según corresponda.

  • Para capturar otros registros, añada entradas adicionales encollect_list.

  • Los valores de {brackets} son variables modeladas. Para ver la lista completa de variables admitidas, consulte Crear o editar manualmente el archivo de configuración del CloudWatch agente en la Guía del CloudWatch usuario de Amazon.

  • Puede optar por omitir logs metrics o no recopilar estos tipos de información.

{ "agent": { "metrics_collection_interval": 60 }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/cloud-init.log", "log_group_class": "STANDARD", "log_group_name": "/PCSLogs/instances", "log_stream_name": "{instance_id}.cloud-init.log", "retention_in_days": 30 }, { "file_path": "/var/log/cloud-init-output.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.cloud-init-output.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/amazon/pcs/bootstrap.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.bootstrap.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/slurmd.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.slurmd.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/messages", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.messages", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/secure", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.secure", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 } ] } } }, "metrics": { "aggregation_dimensions": [ [ "InstanceId" ] ], "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}", "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}" }, "metrics_collected": { "cpu": { "measurement": [ "cpu_usage_idle", "cpu_usage_iowait", "cpu_usage_user", "cpu_usage_system" ], "metrics_collection_interval": 60, "resources": [ "*" ], "totalcpu": false }, "disk": { "measurement": [ "used_percent", "inodes_free" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "diskio": { "measurement": [ "io_time" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 60 }, "swap": { "measurement": [ "swap_used_percent" ], "metrics_collection_interval": 60 } } } }

Este archivo indica al CloudWatch agente que supervise varios archivos que pueden ser útiles para diagnosticar errores, como el arranque, la autenticación y el inicio de sesión, y otros ámbitos de solución de problemas. Entre ellos se incluyen:

  • /var/log/cloud-init.log— Resultado de la fase inicial de configuración de la instancia

  • /var/log/cloud-init-output.log— Resultado de los comandos que se ejecutan durante la configuración de la instancia

  • /var/log/amazon/pcs/bootstrap.log— Resultado de las operaciones específicas de PCS que se ejecutan durante la configuración de la instancia

  • /var/log/slurmd.log— Resultado del daemon slurmd del administrador de cargas de trabajo de Slurm

  • /var/log/messages— Mensajes del sistema desde el núcleo, los servicios del sistema y las aplicaciones

  • /var/log/secure— Registros relacionados con los intentos de autenticación, como SSH, sudo y otros eventos de seguridad

Los archivos de registro se envían a un grupo de CloudWatch registros denominado. /PCSLogs/instances Los flujos de registro son una combinación del ID de instancia y el nombre base del archivo de registro. El grupo de registros tiene un tiempo de retención de 30 días.

Además, el archivo indica al CloudWatch agente que recopile varias métricas comunes y las agregue por ID de instancia.

Guarde la configuración

El archivo de configuración del CloudWatch agente debe almacenarse en un lugar donde las instancias del nodo de cómputo de PCS puedan acceder a él. Existen dos formas comunes de hacerlo. Puede cargarlo en un bucket de Amazon S3 al que las instancias de su grupo de nodos de cómputo tendrán acceso a través de su perfil de instancia. También puede almacenarlo como un parámetro de SSM en el almacén de parámetros de Amazon Systems Manager.

Cárguelo a un bucket de S3

Para almacenar el archivo en S3, utilice los siguientes comandos de la AWS CLI. Antes de ejecutar el comando, realice los siguientes reemplazos:

  • amzn-s3-demo-bucketSustitúyalo por el nombre de su propio bucket de S3

En primer lugar (esto es opcional si tiene un depósito existente), cree un depósito para almacenar sus archivos de configuración.

aws s3 mb s3://amzn-s3-demo-bucket

A continuación, sube el archivo al depósito.

aws s3 cp ./config.json s3://amzn-s3-demo-bucket/

Almacénelo como un parámetro SSM

Para almacenar el archivo como un parámetro SSM, utilice el siguiente comando. Antes de ejecutar el comando, realice las siguientes sustituciones:

  • region-codeSustitúyalo por la región de AWS en la que trabaja con AWS PCS.

  • (Opcional) AmazonCloudWatch-PCS Sustitúyalo por su propio nombre para el parámetro. Ten en cuenta que si cambias el prefijo del nombre de, AmazonCloudWatch- tendrás que añadir específicamente el acceso de lectura al parámetro SSM en el perfil de instancia de tu grupo de nodos.

aws ssm put-parameter \ --region region-code \ --name "AmazonCloudWatch-PCS" \ --type String \ --value file://config.json

Escribe una plantilla de lanzamiento EC2

Los detalles específicos de la plantilla de lanzamiento dependen de si el archivo de configuración está almacenado en S3 o SSM.

Utilice una configuración almacenada en S3

Este script instala el CloudWatch agente, importa un archivo de configuración de un bucket de S3 e inicia el CloudWatch agente con él. Sustituya los siguientes valores de este script por sus propios detalles:

  • amzn-s3-demo-bucket— El nombre de un bucket de S3 desde el que puede leer su cuenta

  • /config.json— Ruta relativa a la raíz del bucket de S3 donde se almacena la configuración

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-cloudwatch-agent runcmd: - aws s3 cp s3://amzn-s3-demo-bucket/config.json /etc/s3-cw-config.json - /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file://etc/s3-cw-config.json --==MYBOUNDARY==--

El perfil de instancia de IAM del grupo de nodos debe tener acceso al bucket. A continuación, se muestra un ejemplo de política de IAM para el depósito en el script de datos de usuario anterior.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Tenga en cuenta también que las instancias deben permitir el tráfico saliente al S3 y CloudWatch a los puntos finales. Esto se puede lograr mediante grupos de seguridad o puntos finales de VPC, según la arquitectura del clúster.

Utilice una configuración almacenada en SSM

Este script instala el CloudWatch agente, importa un archivo de configuración desde un parámetro de SSM e inicia el CloudWatch agente con él. Sustituya los siguientes valores de este script por sus propios detalles:

  • (Opcional) AmazonCloudWatch-PCS Sustitúyalo por su propio nombre para el parámetro.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-cloudwatch-agent runcmd: - /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-PCS --==MYBOUNDARY==--

La política de instancias de IAM para el grupo de nodos debe tener la CloudWatchAgentServerPolicyinformación adjunta.

Si el nombre de su parámetro no comienza por, AmazonCloudWatch- tendrá que añadir específicamente el acceso de lectura al parámetro SSM en el perfil de instancia de su grupo de nodos. A continuación, se muestra un ejemplo de política de IAM que ilustra esto para el prefijo. DOC-EXAMPLE-PREFIX

JSON
{ "Version":"2012-10-17", "Statement" : [ { "Sid" : "CustomCwSsmMParamReadOnly", "Effect" : "Allow", "Action" : [ "ssm:GetParameter" ], "Resource" : "arn:aws:ssm:*:*:parameter/DOC-EXAMPLE-PREFIX*" } ] }

Tenga en cuenta también que las instancias deben permitir el tráfico saliente hacia el SSM y los puntos finales. CloudWatch Esto se puede lograr mediante grupos de seguridad o puntos finales de VPC, según la arquitectura del clúster.