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 instâncias AWS PCS usando a Amazon CloudWatch
O AWS PCS lança EC2 instâncias da Amazon conforme necessário para atender aos requisitos de escalabilidade definidos em seus grupos de nós de computação do PCS. 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 volumes do EBS que apoiam a instância. Para reter métricas ou dados de registro das instâncias lançadas pelo 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 instâncias do AWS PCS
Para monitorar instâncias lançadas pelo PCS, 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 gerenciadas pelo PCS, 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:
-
Crie uma configuração de CloudWatch agente.
-
Armazene a configuração onde ela possa ser recuperada pelas instâncias do PCS.
-
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 configuração JSON 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 a AWS CLI instalada, 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 abaixo
collect_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
oumetrics
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 específicas do PC 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ção, como SSH, 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 computação do PCS. 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 comandos da AWS CLI a seguir. Antes de executar o comando, faça estas substituições:
-
amzn-s3-demo-bucket
Substitua pelo seu próprio nome de bucket do 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 um parâmetro SSM
Para armazenar seu arquivo como um parâmetro SSM, use o comando a seguir. Antes de executar o comando, faça estas substituições:
-
region-code
Substitua pela região da AWS em que você está trabalhando com o AWS PCS. -
(Opcional)
AmazonCloudWatch-PCS
Substitua o parâmetro pelo seu próprio nome. Observe que, se você alterar o prefixo do nome de,AmazonCloudWatch-
precisará adicionar especificamente o acesso de leitura ao parâmetro SSM 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 no SSM.
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 instância do IAM para o grupo de nós deve ter acesso ao bucket. Aqui está um exemplo de política do IAM 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 no SSM
Esse script instala o CloudWatch agente, importa um arquivo de configuração de um parâmetro SSM e inicia o CloudWatch agente com ele. Substitua os seguintes valores nesse script pelos seus próprios detalhes:
-
(Opcional)
AmazonCloudWatch-PCS
Substitua o parâmetro pelo seu próprio nome.
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 instância do IAM 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 parâmetro SSM em seu perfil de instância de grupo de nós. Aqui está um exemplo de política do IAM que ilustra isso para prefixoDOC-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 o SSM e CloudWatch os endpoints. Isso pode ser feito usando grupos de segurança ou VPC endpoints, dependendo da arquitetura do cluster.