检索和保留日志 - AWS ParallelCluster

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

检索和保留日志

AWS ParallelCluster 为计算实例 HeadNode 和存储创建 Amazon EC2 指标。您可以在控制台的 “自定义 CloudWatch 控制面板” 中查看指标。 AWS ParallelCluster 还会在 CloudWatch 日志组中创建集群日志流。您可以在控制台的 “自定义 CloudWatch 控制面板” 或 “日志” 组中查看这些日志监控集群配置部分描述了如何修改集群 CloudWatch日志和控制面板。有关更多信息,请参阅 与 Amazon CloudWatch Logs 集成亚马逊 CloudWatch 控制面板

日志是用于排查问题的有用资源。例如,如果您想要删除失败的集群,则首先创建该集群的日志存档可能会很有用。按照存档日志中的步骤创建存档。

集群日志在中不可用 CloudWatch

如果中没有集群日志 CloudWatch,请检查以确保在向配置中添加自定义 AWS ParallelCluster CloudWatch 日志时没有覆盖日志配置。

要向 CloudWatch 配置中添加自定义日志,请务必附加到配置中,而不是获取和覆盖配置。有关fetch-config和的更多信息append-config,请参阅《CloudWatch 用户指南》中的多个 CloudWatch 代理配置文件

要恢复 AWS ParallelCluster CloudWatch 日志配置,可以在 AWS ParallelCluster 节点内运行以下命令:

$ PLATFORM="$(ohai platform | jq -r ".[]")" LOG_GROUP_NAME="$(cat /etc/chef/dna.json | jq -r ".cluster.log_group_name")" SCHEDULER="$(cat /etc/chef/dna.json | jq -r ".cluster.scheduler")" NODE_ROLE="$(cat /etc/chef/dna.json | jq -r ".cluster.node_type")" CONFIG_DATA_PATH="/usr/local/etc/cloudwatch_agent_config.json" /opt/parallelcluster/pyenv/versions/cookbook_virtualenv/bin/python /usr/local/bin/write_cloudwatch_agent_json.py --platform $PLATFORM --config $CONFIG_DATA_PATH --log-group $LOG_GROUP_NAME --scheduler $SCHEDULER --node-role $NODE_ROLE /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s

存档日志

您可以将日志存档到 Amazon S3 或本地文件中(具体取决于 --output-file 参数)。

注意

向 Amazon S3 存储桶策略添加权限以授予 CloudWatch 访问权限。有关更多信息,请参阅CloudWatch 日志用户指南中的对 Amazon S3 存储桶设置权限

$ pcluster export-cluster-logs --cluster-name mycluster --region eu-west-1 \ --bucket bucketname --bucket-prefix logs { "url": "https://bucketname.s3.eu-west-1.amazonaws.com/export-log/mycluster-logs-202109071136.tar.gz?..." } # use the --output-file parameter to save the logs locally $ pcluster export-cluster-logs --cluster-name mycluster --region eu-west-1 \ --bucket bucketname --bucket-prefix logs --output-file /tmp/archive.tar.gz { "path": "/tmp/archive.tar.gz" }

除非在配置或export-cluster-logs命令参数中明确指定,否则该档案包含过去 14 天来自头节点和计算节点的 Amazon CloudWatch Logs 流和 AWS CloudFormation 堆栈事件。命令完成所需的时间取决于集群中的节点数量和日志中 CloudWatch 可用的日志流数量。有关可用日志流的更多信息,请参阅与 Amazon CloudWatch Logs 集成

保留的日志

从版本 3.0.0 开始,删除集群时会默认 AWS ParallelCluster 保留 CloudWatch 日志。如果您想要删除集群并保留其日志,请确保集群配置中的 Monitoring/Logs/CloudWatch/DeletionPolicy 未设置为 Delete。否则,请将此字段的值更改为 Retain,然后运行 pcluster update-cluster 命令。然后,运行pcluster delete-cluster --cluster-name <cluster_name>删除集群,但保留存储在 Amazon 中的日志组 CloudWatch。

已终止节点日志

如果静态计算节点意外终止并且 CloudWatch 没有日志,请检查/var/log/parallelcluster/compute_console_output日志中是否 AWS ParallelCluster 已在头节点上记录了该计算节点的控制台输出。有关更多信息,请参阅 用于调试的关键日志

如果/var/log/parallelcluster/compute_console_output日志不可用或不包含节点的输出,请使用从故障节点检索控制台输出。 AWS CLI 登录到集群头节点并从 /var/log/parallelcluster/slurm_resume.log 文件中获取失败节点的 instance-id

使用 instance-id 运行以下命令,检索控制台输出:

$ aws ec2 get-console-output --instance-id i-abcdef01234567890

如果动态计算节点在启动后自行终止并且 CloudWatch 没有日志,请提交激活集群扩展操作的作业。等待实例失败,然后检索实例控制台日志。

登录到集群头节点并从 /var/log/parallelcluster/slurm_resume.log 文件中获取计算节点的 instance-id

使用以下命令检索实例控制台日志:

$ aws ec2 get-console-output --instance-id i-abcdef01234567890

当计算节点日志不可用时,控制台输出日志可以帮助您调试计算节点失败的根本原因。