

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

# 運作狀態監控系統
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-agent"></a>

SageMaker HyperPod 運作狀態監控系統包含兩個元件 

1. 監控安裝在節點中的代理程式，包括做為主機運作狀態監控器的運作狀態監控代理程式 (HMA)，以及一組out-of-node運作狀態監控器。

1. SageMaker HyperPod 管理的節點復原系統。運作狀態監控系統會透過監控代理程式持續監控節點運作狀態，然後在使用節點復原系統偵測到錯誤時自動採取動作。

![\[此影像說明運作狀態監控系統如何與 HyperPod 叢集整合。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/hyperpod/hyperpod-resilience-event.png)


## SageMaker HyperPod 運作狀態監控代理程式執行的運作狀態檢查
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-agent-list-of-checks"></a>

SageMaker HyperPod 運作狀態監控代理程式會檢查下列項目。

**NVIDIA GPU**
+ [DCGM 政策違規通知](https://docs.nvidia.com/datacenter/dcgm/3.0/user-guide/feature-overview.html#notifications)
+ `nvidia-smi` 輸出中的錯誤
+ Amazon Elastic Compute Cloud (EC2) 平台所產生日誌中的各種錯誤
+ GPU 計數驗證 – 如果特定執行個體類型 （例如：ml.p5.48xlarge 執行個體類型中的 8 GPUs) 中預期的 GPUs 數量與 傳回的計數不相符`nvidia-smi`，HMA 會重新啟動節點 

**AWS Trainium**
+ [AWS Neuron 監視器](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html)輸出中的錯誤
+ Neuron 節點問題偵測器產生的輸出 （如需 AWS Neuron 節點問題偵測器的詳細資訊，請參閱 [Amazon EKS 叢集內 AWS Neuron 節點的節點問題偵測和復原](https://aws.amazon.com/blogs/machine-learning/node-problem-detection-and-recovery-for-aws-neuron-nodes-within-amazon-eks-clusters/)。)
+ Amazon EC2 平台所產生日誌中的各種錯誤
+ Neuron Device Count 驗證 - 如果特定執行個體類型中神經元裝置的實際計數與 傳回的計數不相符`neuron-ls`，HMA 會重新啟動節點

 上述檢查是被動的背景運作狀態檢查，HyperPod 會持續在您的節點上執行。除了這些檢查之外，HyperPod 也會在建立和更新 HyperPod 叢集期間執行深度 （或作用中） 運作狀態檢查。進一步了解 [Deep 運作狀態檢查](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-resiliency-deep-health-checks.html)。

## 故障偵測
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-fault-detection"></a>

當 SageMaker HyperPod 偵測到錯誤時，它會實作四個部分的回應：

1. **節點標籤**

   1. 運作狀態： `sagemaker.amazonaws.com/node-health-status`

   1. 故障類型：高階分類的`sagemaker.amazonaws.com/fault-types`標籤

   1. 故障原因：詳細故障資訊的`sagemaker.amazonaws.com/fault-reasons`標籤

1. **節點標記**

   1. `sagemaker.amazonaws.com/node-health-status=Unschedulable:NoSchedule`

1. **節點註釋**

   1. 故障詳細資訊： `sagemaker.amazonaws.com/fault-details`

   1. 使用節點上發生的時間戳記記錄最多 20 個故障

1. **節點條件** ([Kubernetes 節點條件](https://kubernetes.io/docs/reference/node/node-status/#condition))

   1. 在節點條件下反映目前的運作狀態：
      + 類型：與錯誤類型相同
      + 狀態： `True`
      + 原因：與故障原因相同
      + LastTransitionTime：故障發生時間

![\[此影像說明偵測到錯誤時，運作狀態監控系統的運作方式。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/hyperpod/hyperpod-resilience-workflow.png)


## SageMaker HyperPod 運作狀態監控代理程式產生的日誌
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-agent-health-check-results"></a>

SageMaker HyperPod 運作狀態監控代理程式是開箱即用的運作狀態檢查功能，並持續在所有 HyperPod 叢集上執行。運作狀態監控代理程式會將 GPU 或 Trn 執行個體上偵測到的運作狀態事件發佈至叢集日誌群組 `/aws/sagemaker/Clusters/` 下的 CloudWatch。

來自 HyperPod 運作狀態監控代理程式的偵測日誌是針對每個節點建立的，而這些日誌會做為個別的日誌串流，命名為 `SagemakerHealthMonitoringAgent`。您可以使用 CloudWatch 日誌洞見來查詢偵測日誌，如下所示。

```
fields @timestamp, @message
| filter @message like /HealthMonitoringAgentDetectionEvent/
```

此命令會傳回如下的輸出。

```
2024-08-21T11:35:35.532-07:00
    {"level":"info","ts":"2024-08-21T18:35:35Z","msg":"NPD caught event: %v","details: ":{"severity":"warn","timestamp":"2024-08-22T20:59:29Z","reason":"XidHardwareFailure","message":"Node condition NvidiaErrorReboot is now: True, reason: XidHardwareFailure, message: \"NVRM: Xid (PCI:0000:b9:00): 71, pid=<unknown>, name=<unknown>, NVLink: fatal error detected on link 6(0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)\""},"HealthMonitoringAgentDetectionEvent":"HealthEvent"}
2024-08-21T11:35:35.532-07:00
    {"level":"info","ts":"2024-08-21T18:35:35Z","msg":"NPD caught event: %v","details: ":{"severity":"warn","timestamp":"2024-08-22T20:59:29Z","reason":"XidHardwareFailure","message":"Node condition NvidiaErrorReboot is now: True, reason: XidHardwareFailure, message: \"NVRM: Xid (PCI:0000:b9:00): 71, pid=<unknown>, name=<unknown>, NVLink: fatal error detected on link 6(0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)\""},"HealthMonitoringAgentDetectionEvent":"HealthEvent"}
```