View a markdown version of this page

扩展登录 AWS 个 - AWS 个

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

扩展登录 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。

AWS 管理控制台
使用控制台设置扩展日志
  1. 打开 AWS PCS 控制台。

  2. 在导航窗格中,选择集群。

  3. 选择要添加扩展日志的集群。

  4. 在集群详细信息页面上,选择日志选项卡。

  5. 在 “扩展日志” 下,选择 “添加”,从日志、Amazon S3 和 Firehose 中添加最多 3 个 CloudWatch 日志传输目的地。

  6. 选择 “更新日志交付” 。

AWS CLI
要使用设置扩展日志 AWS CLI
  1. 创建日志传送目标:

    aws logs put-delivery-destination --region region \ --name pcs-logs-destination \ --delivery-destination-configuration \ destinationResourceArn=resource-arn

    进行如下替换:

    • region— 您要创建目的地 AWS 区域 的位置,例如 us-east-1

    • pcs-logs-destination— 目的地的名称

    • resource-arn— CloudWatch 日志组、S3 存储桶或 Firehose 交付流的亚马逊资源名称 (ARN)。

    有关更多信息,请参阅PutDeliveryDestination《亚马逊 CloudWatch 日志 API 参考》。

  2. 将 PCS 集群设置为日志传输源:

    aws logs put-delivery-source --region region \ --name cluster-logs-source-name \ --resource-arn cluster-arn \ --log-type PCS_SCALING_LOGS

    进行如下替换:

    • region— 您的 AWS 区域 集群的,例如 us-east-1

    • cluster-logs-source-name— 来源的名称

    • cluster-arn— 您的 AWS PCS 集群的 ARN

    有关更多信息,请参阅PutDeliverySource《亚马逊 CloudWatch 日志 API 参考》。

  3. 将传送源连接到交付目的地:

    aws logs create-delivery --region region \ --delivery-source-name cluster-logs-source \ --delivery-destination-arn destination-arn

    进行如下替换:

    • region— 那个 AWS 区域,比如 us-east-1

    • cluster-logs-source— 您的交付来源的名称

    • destination-arn— 您的送货目的地的 ARN

    有关更多信息,请参阅CreateDelivery《亚马逊 CloudWatch 日志 API 参考》。

查找扩展日志

您可以在日志和 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对象包含过渡细节。

下表描述了每个日志条目中的顶级字段。

Top-level 字段
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" } }