Monitoramento de AWS PCS instâncias usando a Amazon CloudWatch - AWS PCS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Monitoramento de AWS PCS instâncias usando a Amazon CloudWatch

AWSPCSlança EC2 instâncias da Amazon conforme necessário para atender aos requisitos de escalabilidade definidos em seus grupos de nós de PCS computação. Você pode monitorar essas instâncias enquanto elas estão em execução usando a Amazon CloudWatch. Você pode inspecionar os registros das instâncias em execução fazendo login nelas e usando ferramentas de linha de comando interativas. No entanto, por padrão, os dados de CloudWatch métricas só são retidos por um período limitado quando uma instância é encerrada, e os registros da instância geralmente são excluídos junto com os EBS volumes que sustentam a instância. Para reter métricas ou dados de registro das instâncias iniciadas PCS após o encerramento, você pode configurar o CloudWatch agente em suas instâncias com um modelo de EC2 execução. Este tópico fornece uma visão geral do monitoramento de instâncias em execução e fornece exemplos de como configurar métricas e registros de instâncias persistentes.

Monitorando instâncias em execução

Encontrando AWS PCS instâncias

Para monitorar instâncias lançadas peloPCS, encontre as instâncias em execução associadas a um cluster ou grupo de nós de computação. Em seguida, no EC2 console de uma determinada instância, inspecione as seções Status e alarmes e Monitoramento. Se o acesso de login estiver configurado para essas instâncias, você poderá se conectar a elas e inspecionar vários arquivos de log nas instâncias. Para obter mais informações sobre como identificar quais instâncias são gerenciadasPCS, consulteEncontrando instâncias de grupos de nós de computação em AWS PCS.

Habilitando métricas detalhadas

Por padrão, as métricas da instância são coletadas em intervalos de 5 minutos. Para coletar métricas em intervalos de um minuto, ative o CloudWatch monitoramento detalhado em seu modelo de lançamento do grupo de nós de computação. Para obter mais informações, consulte Ativar o CloudWatch monitoramento detalhado.

Configurando métricas e registros de instâncias persistentes

Você pode reter as métricas e os registros de suas instâncias instalando e configurando o CloudWatch agente da Amazon nelas. Isso consiste em três etapas principais:

  1. Crie uma configuração de CloudWatch agente.

  2. Armazene a configuração onde ela possa ser recuperada pelas PCS instâncias.

  3. Escreva um modelo de EC2 lançamento que instale o software do CloudWatch agente, busque sua configuração e inicie o CloudWatch agente usando a configuração.

Para obter mais informações, consulte Coletar métricas, registros e rastreamentos com o CloudWatch agente no Guia CloudWatch do usuário da Amazon Usando modelos de EC2 lançamento da Amazon com AWS PCS e.

Criar uma configuração de CloudWatch agente

Antes de implantar o CloudWatch agente em suas instâncias, você deve gerar um arquivo de JSON configuração que especifique as métricas, os registros e os rastreamentos a serem coletados. Os arquivos de configuração podem ser criados usando um assistente ou manualmente, usando um editor de texto. O arquivo de configuração será criado manualmente para esta demonstração.

Em um computador em que você tenha o AWS CLI instalado, crie um arquivo de CloudWatch configuração chamado config.json com o conteúdo a seguir. Você também pode usar o seguinte URL para baixar uma cópia do arquivo.

https://aws-hpc-recipes.s3.amazonaws.com/main/recipes/pcs/cloudwatch/assets/config.json
Observações
  • Os caminhos de log no arquivo de amostra são para o Amazon Linux 2. Se suas instâncias usarem um sistema operacional básico diferente, altere os caminhos conforme apropriado.

  • Para capturar outros registros, adicione outras entradas abaixocollect_list.

  • Os valores em {brackets} são variáveis modeladas. Para obter a lista completa das variáveis suportadas, consulte Criar ou editar manualmente o arquivo de configuração do CloudWatch agente no Guia CloudWatch do usuário da Amazon.

  • Você pode optar por omitir logs ou metrics se não quiser coletar esses tipos de informações.

{ "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 } } } }

Esse arquivo instrui o CloudWatch agente a monitorar vários arquivos que podem ser úteis no diagnóstico de erros na inicialização, autenticação e login da instância e em outros domínios de solução de problemas. Isso inclui:

  • /var/log/cloud-init.log— Saída do estágio inicial da configuração da instância

  • /var/log/cloud-init-output.log— Saída de comandos que são executados durante a configuração da instância

  • /var/log/amazon/pcs/bootstrap.log— Saída de operações PCS específicas que são executadas durante a configuração da instância

  • /var/log/slurmd.log— Saída do daemon slurmd do gerenciador de carga de trabalho Slurm

  • /var/log/messages— Mensagens do sistema do kernel, serviços do sistema e aplicativos

  • /var/log/secure— Registros relacionados a tentativas de autenticaçãoSSH, como sudo e outros eventos de segurança

Os arquivos de log são enviados para um grupo de CloudWatch log chamado/PCSLogs/instances. Os fluxos de log são uma combinação do ID da instância e do nome base do arquivo de log. O grupo de registros tem um tempo de retenção de 30 dias.

Além disso, o arquivo instrui o CloudWatch agente a coletar várias métricas comuns, agregando-as por ID da instância.

Armazene a configuração

O arquivo de configuração do CloudWatch agente precisa ser armazenado onde possa ser acessado pelas instâncias do nó de PCS computação. Há duas maneiras comuns de fazer isso. Você pode carregá-lo em um bucket do Amazon S3 ao qual suas instâncias do grupo de nós computacionais terão acesso por meio de seu perfil de instância. Como alternativa, você pode armazená-lo como um parâmetro SSM no Amazon Systems Manager Parameter Store.

Fazer upload para um bucket do S3

Para armazenar seu arquivo no S3, use os AWS CLI comandos a seguir. Antes de executar o comando, faça estas substituições:

  • Substituir amzn-s3-demo-bucket com seu próprio nome de bucket S3

Primeiro, (isso é opcional se você tiver um bucket existente), crie um bucket para armazenar seus arquivos de configuração.

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

Em seguida, faça o upload do arquivo para o bucket.

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

Armazenar como SSM parâmetro

Para armazenar seu arquivo como um SSM parâmetro, use o comando a seguir. Antes de executar o comando, faça estas substituições:

  • Substituir region-code com a AWS região com a qual você está trabalhando AWSPCS.

  • (Opcional) Substituir AmazonCloudWatch-PCS com seu próprio nome para o parâmetro. Observe que, se você alterar o prefixo do nome de, AmazonCloudWatch- precisará adicionar especificamente o acesso de leitura ao SSM parâmetro no perfil da instância do seu grupo de nós.

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

Escreva um modelo de EC2 lançamento

Os detalhes específicos do modelo de lançamento dependem de seu arquivo de configuração estar armazenado no S3 ou SSM no.

Use uma configuração armazenada no S3

Esse script instala o CloudWatch agente, importa um arquivo de configuração de um bucket do S3 e inicia o CloudWatch agente com ele. Substitua os seguintes valores nesse script pelos seus próprios detalhes:

  • amzn-s3-demo-bucket — O nome de um bucket do S3 que sua conta pode ler

  • /config.json — Caminho relativo à raiz do bucket do S3 em que a configuração está armazenada

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==--

O perfil da IAM instância do grupo de nós deve ter acesso ao bucket. Aqui está um exemplo IAM de política para o bucket no script de dados do usuário acima.

{ "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/*" ] } ] }

Observe também que as instâncias devem permitir tráfego de saída para o S3 e CloudWatch os endpoints. Isso pode ser feito usando grupos de segurança ou VPC endpoints, dependendo da arquitetura do cluster.

Use uma configuração armazenada em SSM

Esse script instala o CloudWatch agente, importa um arquivo de configuração de um SSM parâmetro e inicia o CloudWatch agente com ele. Substitua os seguintes valores nesse script pelos seus próprios detalhes:

  • (Opcional) Substituir AmazonCloudWatch-PCS com seu próprio nome para o 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==--

A política de IAM instância para o grupo de nós deve ter o CloudWatchAgentServerPolicyanexado a ela.

Se o nome do seu parâmetro não começar com, AmazonCloudWatch- você precisará adicionar especificamente o acesso de leitura ao SSM parâmetro no perfil da instância do seu grupo de nós. Aqui está um exemplo de IAM política que ilustra isso para o prefixo DOC-EXAMPLE-PREFIX.

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

Observe também que as instâncias devem permitir tráfego de saída para os CloudWatch endpoints SSM e. Isso pode ser feito usando grupos de segurança ou VPC endpoints, dependendo da arquitetura do cluster.