View a markdown version of this page

在 AWS PCS 中擴展日誌 - AWS PCS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 AWS PCS 中擴展日誌

擴展日誌可讓您記錄 AWS 平行運算服務如何擴展叢集中的運算節點群組。每個日誌項目都會記錄一個運算節點的一個狀態轉換:例如,執行個體啟動、節點註冊、縮減規模或啟動失敗及其原因。您可以使用擴展日誌來回答問題,例如節點群組未達到目標大小的原因、因容量原因啟動失敗,以及特定節點何時開始或停止。

您可以將擴展日誌傳送至 Amazon CloudWatch、Amazon Simple Storage Service (Amazon S3) 和 Amazon 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. 在擴展日誌下,選擇新增以在 CloudWatch Logs、Amazon S3 和 Firehose 之間新增最多 3 個日誌交付目的地。

  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 Logs 日誌群組、S3 儲存貯體或 Firehose 交付串流的 Amazon Resource Name (ARN)。

    如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考指南》中的 PutDeliveryDestination。

  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

    如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 PutDeliverySource。

  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

    如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 CreateDelivery。

尋找擴展日誌

您可以在 CloudWatch Logs 和 Amazon S3. AWS PCS 中設定日誌目的地,並使用下列結構化路徑名稱和檔案名稱。

CloudWatch Logs

AWS PCS 使用 CloudWatch Logs 串流的下列名稱格式:

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 物件會保留轉換詳細資訊。

下表說明每個日誌項目中的最上層欄位。

最上層欄位
名稱 範例值 必要 備註
resource_id "pcs_22l8nzr3t9" 是 AWS PCS 叢集 ID
resource_type "PCS_CLUSTER" 是 一律 "PCS_CLUSTER"
event_timestamp 1789179816460 是 事件發生時的 Unix epoch 毫秒數
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 物件中的金鑰。

details 物件內的欄位
名稱 範例值 必要 備註
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 無法為目標子網路中請求的執行個體類型提供容量。LIMIT_EXCEEDED 表示 Amazon 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" } }