

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

# AWS PCS 中的排程器日誌
<a name="monitoring_scheduler-logs"></a>

您可以設定 AWS PCS 將詳細的記錄資料從叢集排程器傳送至 Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3) 和 Amazon Data Firehose。這可協助監控和故障診斷。

**Contents**
+ [先決條件](#monitoring_scheduler-logs_prereqs)
+ [設定排程器日誌](#monitoring_scheduler-logs_setup)
+ [排程器日誌串流路徑和名稱](#monitoring_scheduler-logs_paths)
+ [排程器日誌記錄範例](#monitoring_scheduler-logs_record)

## 先決條件
<a name="monitoring_scheduler-logs_prereqs"></a>

管理 AWS PCS 叢集的 IAM 主體必須允許 `pcs:AllowVendedLogDeliveryForResource`動作。

下列範例 IAM 政策會授予必要的許可。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "PcsAllowVendedLogsDelivery",
         "Effect": "Allow",
         "Action": ["pcs:AllowVendedLogDeliveryForResource"],
         "Resource": [
            "arn:aws:pcs:*::cluster/*"
         ]
      }
   ]
}
```

------

## 設定排程器日誌
<a name="monitoring_scheduler-logs_setup"></a>

您可以使用 AWS 管理主控台 或 為您的 AWS PCS 叢集設定排程器日誌 AWS CLI。

------
#### [ AWS 管理主控台 ]

**使用主控台設定排程器日誌**

1. 開啟 [AWS PCS 主控台](https://console.aws.amazon.com/pcs)。

1. 在導覽窗格中，選擇**叢集**。

1. 選擇您要新增排程器日誌的叢集。

1. 在叢集詳細資訊頁面上，選擇**日誌**索引標籤。

1. 在**排程器日誌**下，選擇**新增**以在 CloudWatch Logs、Amazon S3 和 Firehose 之間新增最多 3 個日誌交付目的地。

1. 選擇**更新日誌交付**。

------
#### [ 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](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html)。

1. 將 PCS 叢集設定為日誌交付來源：

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

   取代：
   + *region* — 叢集 AWS 區域 的 ，例如 `us-east-1`
   + *cluster-logs-source-name* — 來源的名稱
   + *cluster-arn* — AWS PCS 叢集的 ARN

   如需詳細資訊，請參閱《*Amazon CloudWatch Logs API 參考*》中的 [PutDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html)。

1. 將交付來源連接至交付目的地：

   ```
   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](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html)。

------

## 排程器日誌串流路徑和名稱
<a name="monitoring_scheduler-logs_paths"></a>

 AWS PCS 排程器日誌的路徑和名稱取決於目的地類型。
+ **CloudWatch Logs**
  + CloudWatch Logs 串流遵循此命名慣例。

    ```
    AWSLogs/PCS/${cluster_id}/${log_name}_${scheduler_major_version}.log
    ```  
**Example**  

    ```
    AWSLogs/PCS/abcdef0123/slurmctld_24.05.log
    ```
+ **S3 bucket (S3 儲存貯體)**
  + S3 儲存貯體輸出路徑遵循此命名慣例：

    ```
    AWSLogs/${account-id}/PCS/${region}/${cluster_id}/${log_name}/${scheduler_major_version}/yyyy/MM/dd/HH/
    ```  
**Example**  

    ```
    AWSLogs/111111111111/PCS/us-east-2/abcdef0123/slurmctld/24.05/2024/09/01/00.
    ```
  + S3 物件名稱遵循此慣例：

    ```
    PCS_${log_name}_${scheduler_major_version}_#{expr date 'event_timestamp', format: "yyyy-MM-dd-HH"}_${cluster_id}_${hash}.log
    ```  
**Example**  

    ```
    PCS_slurmctld_24.05_2024-09-01-00_abcdef0123_0123abcdef.log
    ```

## 排程器日誌記錄範例
<a name="monitoring_scheduler-logs_record"></a>

AWS PCS 排程器日誌是結構化的。除了從 Slurm 控制器程序發出的日誌訊息之外，還包含叢集識別符、排程器類型、主要和修補程式版本等欄位。請見此處範例。

```
{
    "resource_id": "s3431v9rx2",
    "resource_type": "PCS_CLUSTER",
    "event_timestamp": 1721230979,
    "log_level": "info",
    "log_name": "slurmctld",
    "scheduler_type": "slurm",
    "scheduler_major_version": "25.05",
    "scheduler_patch_version": "3",
    "node_type": "controller_primary",
    "message": "[2024-07-17T15:42:58.614+00:00] Running as primary controller\n"
}
```