

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

# 检索和保留日志
<a name="troubleshooting-v3-get-logs"></a>

AWS ParallelCluster 为计算实例 HeadNode 和存储创建 Amazon EC2 指标。您可以在控制台的**自定义 CloudWatch 控制面板**中查看指标。 AWS ParallelCluster 还会在 CloudWatch 日志组中创建集群日志流。您可以在控制台的**自定义 CloudWatch 控制面板**或**日志组**中查看这些日志。[监控](Monitoring-v3.md#yaml-Monitoring-Logs-CloudWatch)集群配置部分描述了如何修改集群 CloudWatch日志和控制面板。有关更多信息，请参阅[与 Amazon CloudWatch 日志集成](cloudwatch-logs-v3.md)和[亚马逊 CloudWatch 控制面板](cloudwatch-dashboard-v3.md)。

日志是用于排查问题的有用资源。例如，如果您想要删除失败的集群，则首先创建该集群的日志存档可能会很有用。按照[存档日志](#troubleshooting-v3-get-logs-archive)中的步骤创建存档。

**Topics**
+ [中的集群日志不可用 CloudWatch](#troubleshooting-v3-get-logs-unavailable)
+ [存档日志](#troubleshooting-v3-get-logs-archive)
+ [保留的日志](#troubleshooting-v3-get-logs-preserve)
+ [已终止节点日志](#troubleshooting-v3-get-logs-terminated-node)

## 中的集群日志不可用 CloudWatch
<a name="troubleshooting-v3-get-logs-unavailable"></a>

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

要向 CloudWatch 配置中添加自定义日志，请确保附加到配置中，而不是获取和覆盖配置。有关`fetch-config`和的更多信息`append-config`，请参阅《*CloudWatch 用户指南》*中的[多个 CloudWatch 代理配置文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-common-scenarios.html#CloudWatch-Agent-multiple-config-files)。

要恢复 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
```

## 存档日志
<a name="troubleshooting-v3-get-logs-archive"></a>

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

**注意**  
从 AWS ParallelCluster 3.12.0 开始，您可以将日志导出到默认 AWS ParallelCluster 存储桶。在这种情况下，您无需设置存储桶权限。

**注意**  
向 Amazon S3 存储桶策略添加权限以授予 CloudWatch 访问权限。有关更多信息，请参阅*CloudWatch 日志用户指南*中的对 [Amazon S3 存储桶设置权限](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasks.html#S3Permissions)。

```
$ 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 流和 CloudFormation 堆栈事件。命令完成所需的时间取决于集群中的节点数量和日志中 CloudWatch 可用的日志流数量。有关可用日志流的更多信息，请参阅[与 Amazon CloudWatch 日志集成](cloudwatch-logs-v3.md)。

## 保留的日志
<a name="troubleshooting-v3-get-logs-preserve"></a>

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

## 已终止节点日志
<a name="troubleshooting-v3-get-logs-terminated-node"></a>

如果静态计算节点意外终止并且 CloudWatch 没有日志，请检查`/var/log/parallelcluster/compute_console_output`日志中是否 AWS ParallelCluster 已将该计算节点的控制台输出记录在头节点上。有关更多信息，请参阅 [用于调试的关键日志](troubleshooting-v3-scaling-issues.md#troubleshooting-v3-key-logs)。

如果`/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
```

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