本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
扩展登录 AWS 个
扩展日志可记录 AWS 并行计算服务如何扩展集群中的计算节点组。每个日志条目记录了一个计算节点的一次状态转换:例如,实例启动、节点注册、缩减或启动失败及其原因。您可以使用扩展日志来回答诸如为什么节点组未达到其目标大小、由于容量原因启动失败以及特定节点何时启动或停止等问题。
您可以向亚马逊 CloudWatch、亚马逊简单存储服务 (Amazon S3) 和亚马逊 Data Firehose 发送扩展日志。对于每个过渡, AWS PCS 会记录以下数据:
-
集群和计算节点组标识符
-
节点名称
-
新状态
-
原因代码和人类可读的描述
-
EC2 实例 ID,当实例与过渡关联时
-
启动上下文,例如实例类型和子网(如果相关)
AWS PCS 通过PCS_SCALING_LOGS日志类型提供扩展日志。扩展日志传输是可选的。 AWS 只有在您为集群配置交付后,PCS 才会为其提供扩展日志。
先决条件
管理 AWS PCS 集群的 IAM 委托人必须允许该pcs:AllowVendedLogDeliveryForResource操作。
以下示例 IAM 策略授予所需的权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PcsAllowVendedLogsDelivery", "Effect": "Allow", "Action": ["pcs:AllowVendedLogDeliveryForResource"], "Resource": [ "arn:aws:pcs:*::cluster/*" ] } ] }
设置扩展日志
您可以使用 AWS 管理控制台 或为 AWS PCS 集群设置扩展日志 AWS CLI。
查找扩展日志
您可以在日志和 Amazon S3 中配置 CloudWatch 日志目的地。 AWS PCS 使用以下结构化路径名和文件名。
CloudWatch 日志
AWS PCS 对 CloudWatch 日志流使用以下名称格式:
AWSLogs/PCS/cluster-id/node_lifecycle.log
例如:AWSLogs/PCS/pcs_abc123de45/node_lifecycle.log
Amazon S3
AWS PCS 对 S3 路径使用以下名称格式:
AWSLogs/account-id/PCS/region/cluster-id/node_lifecycle/year/month/day/hour/
例如:AWSLogs/111122223333/PCS/us-east-1/pcs_abc123de45/node_lifecycle/2026/09/03/11/
AWS PCS 对日志文件使用以下名称格式:
PCS_cluster-id_node_lifecycle_year-month-day-hour_random-id.log.gz
例如:PCS_pcs_abc123de45_node_lifecycle_2026-09-03-11_04be080b.log.gz
缩放日志字段
AWS PCS 以 JSON 对象的形式写入扩展日志数据。每个日志条目都包含顶级元数据字段和一个details对象。顶级字段标识集群、事件时间、计算节点组和调度器节点 ID。该details对象包含过渡细节。
下表描述了每个日志条目中的顶级字段。
| Name | 示例值 | 必填 | 注意 |
|---|---|---|---|
resource_id |
"pcs_22l8nzr3t9" |
是 | AWS PCS 集群 ID |
resource_type |
"PCS_CLUSTER" |
是 | 永远 "PCS_CLUSTER" |
event_timestamp |
1789179816460 |
是 | 事件发生时的 Unix 纪元(毫秒) |
compute_node_group_id |
"pcs_56zr33g8" |
是 | 该节点所属的计算节点组 |
scheduler_node_id |
"compute-1" |
是 | 调度器节点 ID |
status_code |
"LAUNCH_FAILED" |
是 | 节点的新状态。请参阅 状态代码和原因代码。 |
reason_code |
"INSUFFICIENT_CAPACITY" |
是 | 为什么会发生过渡 |
description |
"The launch failed because EC2 did not have enough capacity" |
是 | 源自状态和原因代码的人类可读摘要 |
details |
{...} |
否 | 过渡的其他背景。密钥取决于过渡类型 |
下表描述了可能出现在details对象内部的密钥。
| Name | 示例值 | 必填 | 注意 |
|---|---|---|---|
instance_id |
"i-0abcdef01234567a" |
否 | 与该节点关联的 EC2 实例。当没有关联实例时(例如启动失败之后)不存在 |
ec2_error_code |
"InsufficientInstanceCapacity" |
否 | 启动失败的 EC2 错误代码。相同的代码会出现在您账户的 CreateFleet 通话 CloudTrail 记录中 |
instance_type |
"t4g.micro" |
否 | 启动的实例类型 |
subnet_id |
"subnet-0abc123" |
否 | 启动的目标子网 |
状态代码和原因代码
该status_code字段告诉你节点进入的状态。该reason_code字段告诉你原因。例如,带有INSUFFICIENT_CAPACITY原因的LAUNCH_FAILED状态表示 Amazon EC2 无法为目标子网中请求的实例类型提供容量。A LIMIT_EXCEEDED 表示亚马逊 EC2 配额阻止了启动。
| 状态代码 | 原因代码 | 说明 |
|---|---|---|
LAUNCHED |
SCHEDULER_REQUESTED |
为满足调度器扩展请求而启动的实例 |
LAUNCHED |
MAINTAIN_MIN_CAPACITY |
已启动实例以维持节点组的最低容量 |
REGISTERED |
REGISTER_SUCCESS |
通过 PCS 代理成功注册节点 |
ACTIVE |
BOOTSTRAP_SUCCESS |
节点引导已完成;slurmd 正在运行并正在接受作业 |
PENDING_REPLACEMENT |
NODE_GROUP_UPDATE |
在关机进行节点组更新之前,节点正在耗尽 |
PENDING_REPLACEMENT |
EC2_HEALTH_CHECK_FAILED |
由于节点或其实例的运行状况检查失败,该节点正在耗尽 |
PENDING_REPLACEMENT |
EC2_SCHEDULED_EVENT |
节点正在耗尽,因为其实例有预定的 EC2 维护事件 |
LAUNCH_FAILED |
INSUFFICIENT_CAPACITY |
由于没有足够的可用容量,节点没有获得实例 |
LAUNCH_FAILED |
LIMIT_EXCEEDED |
由于超出账户配额,实例启动失败 |
LAUNCH_FAILED |
LAUNCH_ERROR |
节点未能启动其实例 |
TERMINATED |
SCHEDULER_REQUESTED |
调度器释放节点(空闲超时或关机)后,实例终止 |
TERMINATED |
UNHEALTHY_NODE |
由于调度器报告该节点运行状况不佳,实例终止 |
TERMINATED |
BOOTSTRAP_FAILED |
由于节点无法引导,实例终止 |
TERMINATED |
EXTERNALLY_TERMINATED |
实例已在 PCS 之外终止;该节点已被释放,因此可以更换 |
TERMINATED |
REPLACEMENT_REQUESTED |
由于节点已耗尽以进行替换,实例已终止 |
TERMINATED |
NODE_GROUP_DELETION |
实例因计算节点组删除而终止 |
TERMINATE_FAILED |
EC2_OPERATION_NOT_PERMITTED |
实例终止失败。确保未在实例上启用终止保护 |
TERMINATE_FAILED |
EC2_ERROR |
实例终止失败 |
扩展日志示例
以下示例显示了成功启动实例:
{ "resource_id": "pcs_abc123de45", "resource_type": "PCS_CLUSTER", "event_timestamp": 1789179816460, "compute_node_group_id": "pcs_abcdef01", "scheduler_node_id": "compute-1", "status_code": "LAUNCHED", "reason_code": "SCHEDULER_REQUESTED", "description": "Instance launched to satisfy a scheduler scale-up request.", "details": { "instance_id": "i-0abc12345def67890", "instance_type": "c6i.xlarge", "subnet_id": "subnet-0123456789abcdef0" } }
以下示例显示了由 EC2 容量不足导致的启动失败。instance_id不存在,因为没有启动任何实例。
{ "resource_id": "pcs_abc123de45", "resource_type": "PCS_CLUSTER", "event_timestamp": 1789179816460, "compute_node_group_id": "pcs_abcdef01", "scheduler_node_id": "compute-2", "status_code": "LAUNCH_FAILED", "reason_code": "INSUFFICIENT_CAPACITY", "description": "Node did not get an instance because there was not enough capacity available.", "details": { "ec2_error_code": "InsufficientInstanceCapacity" } }