

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

# 计划程序在 PCS 中 AWS 登录
<a name="monitoring_scheduler-logs"></a>

您可以将 AWS PCS 配置为将详细的日志数据从集群计划程序发送到亚马逊 CloudWatch 日志、亚马逊简单存储服务 (Amazon S3) Service 和 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 CLI为 AWS PCS 集群设置调度程序日志。

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

**使用控制台设置调度程序日志**

1. 打开 [AWS PCS 控制台](https://console.aws.amazon.com/pcs)。

1. 在导航窗格中，选择**集群**。

1. 选择要在其中添加调度程序日志的集群。

1. 在集群详细信息页面上，选择**日志**选项卡。

1. 在 “**计划程序日志**” 下，选择 “**添加**”，从日志、Amazon S3 和 Firehose 中添加最多 3 个 CloudWatch 日志传输目标。

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 日志组、S3 存储桶或 Firehose 传输流的亚马逊资源名称 (ARN)。

   有关更多信息，请参阅 *Amazon CloudWatch 日志 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*— 您的 PCS 集群的 AWS ARN

   有关更多信息，请参阅 *Amazon CloudWatch 日志 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 日志 API 参考[CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html)*中的。

------

## 调度器日志流路径和名称
<a name="monitoring_scheduler-logs_paths"></a>

 AWS PCS 计划程序日志的路径和名称取决于目标类型。
+ **CloudWatch 日志**
  +  CloudWatch 日志流遵循此命名约定。

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

    ```
    AWSLogs/PCS/abcdef0123/slurmctld_24.05.log
    ```
+ **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"
}
```