检索和保留日志 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

检索和保留日志

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

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

集群日志在 CloudWatch 中不可用

如果集群日志在 CloudWatch 中不可用,请检查以确保在向配置中添加自定义日志时未覆盖 Amazon ParallelCluster CloudWatch 日志配置。

要向 CloudWatch 配置中添加自定义日志,请确保将其附加到配置中,而不是获取并覆盖。有关 fetch-configappend-config 的更多信息,请参阅 CloudWatch 用户指南 中的多个 CloudWatch 代理配置文件

要还原 Amazon ParallelCluster CloudWatch 日志配置,您可以在 Amazon 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 Logs 用户指南 中的在 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 流和 Amazon CloudFormation 堆栈事件。命令运行结束所需的时间取决于集群中的节点数量以及 CloudWatch Logs 中可用的日志流数量。有关可用日志流的更多信息,请参阅与 Amazon CloudWatch Logs 集成

保留的日志

从版本 3.0.0 开始,在删除集群时,Amazon ParallelCluster 会默认保留 CloudWatch Logs。如果您想要删除集群并保留其日志,请确保集群配置中的 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 日志中检查 Amazon ParallelCluster 是否已将该计算节点的控制台输出记录在头节点上。有关更多信息,请参阅 用于调试的关键日志

如果 /var/log/parallelcluster/compute_console_output 日志不可用或不包含该节点的输出,请使用 Amazon 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

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