

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

# 叢集和任務可觀測性
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster"></a>

監控 SageMaker HyperPod 叢集有兩個選項：

**SageMaker HyperPod 可觀測性附加元件** - SageMaker HyperPod 提供全面、開箱即用儀表板，讓您深入了解基礎模型 (FM) 開發任務和叢集資源。這個統一的可觀測性解決方案會自動將關鍵指標發佈至 Amazon Managed Service for Prometheus，並在 Amazon Managed Grafana 儀表板中顯示這些指標。儀表板專為 FM 開發最佳化，深入涵蓋硬體運作狀態、資源使用率和任務層級效能。使用此附加元件，您可以合併來自 NVIDIA DCGM、執行個體層級 Kubernetes 節點匯出工具、Elastic Fabric Adapter、整合檔案系統、Kubernetes API、Kueue 和 SageMaker HyperPod 任務運算子的運作狀態和效能資料。

**Amazon CloudWatch Insights**—Amazon CloudWatch Insights 會收集 CPU、記憶體、磁碟和網路等運算資源的指標。Container Insights 還提供診斷資訊，例如容器重新啟動故障，協助您快速隔離和解決這些故障。您也可以為 Container Insights 收集的指標設定 CloudWatch 警示。

**Topics**
+ [

# 搭配 Amazon Managed Grafana 和 Amazon Managed Service for Prometheus 的 Amazon SageMaker HyperPod 可觀測性
](sagemaker-hyperpod-observability-addon.md)
+ [

# 可觀測性與 Amazon CloudWatch
](sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci.md)

# 搭配 Amazon Managed Grafana 和 Amazon Managed Service for Prometheus 的 Amazon SageMaker HyperPod 可觀測性
<a name="sagemaker-hyperpod-observability-addon"></a>

Amazon SageMaker HyperPod (SageMaker HyperPod) 提供全面、開箱即用儀表板，讓您深入了解基礎模型 (FM) 開發任務和叢集資源。這個統一的可觀測性解決方案會自動將關鍵指標發佈至 Amazon Managed Service for Prometheus，並在 Amazon Managed Grafana 儀表板中顯示這些指標。儀表板專為 FM 開發最佳化，深入涵蓋硬體運作狀態、資源使用率和任務層級效能。使用此附加元件，您可以合併來自 NVIDIA DCGM、執行個體層級 Kubernetes 節點匯出工具、Elastic Fabric Adapter、整合檔案系統、Kubernetes API、Kueue 和 SageMaker HyperPod 任務運算子的運作狀態和效能資料。

## 受限制的執行個體群組 (RIG) 支援
<a name="hyperpod-observability-addon-rig-support"></a>

可觀測性附加元件也支援包含受限制執行個體群組的叢集。在 RIG 叢集中，附加元件會自動調整其部署策略，以符合受限節點的網路隔離和安全限制。DaemonSet 元件 （節點匯出器、DCGM 匯出器、EFA 匯出器、Neuron 監視器和節點收集器） 會在標準節點和受限節點上執行。部署元件 （中央收集器、Kube 狀態指標和訓練指標代理程式） 是以邊界感知邏輯排程，以遵守執行個體群組之間的網路隔離。具有 Fluent Bit 的容器日誌集合不適用於受限節點。

如需在具有限制執行個體群組的叢集上設定附加元件的詳細資訊，請參閱 [設定 SageMaker HyperPod 可觀測性附加元件](hyperpod-observability-addon-setup.md)。

**Topics**
+ [

## 受限制的執行個體群組 (RIG) 支援
](#hyperpod-observability-addon-rig-support)
+ [

# 設定 SageMaker HyperPod 可觀測性附加元件
](hyperpod-observability-addon-setup.md)
+ [

# Amazon SageMaker HyperPod 可觀測性儀表板
](hyperpod-observability-addon-viewing-dashboards.md)
+ [

# 探索 Amazon Managed Grafana 中的 SageMaker HyperPod 叢集指標
](hyperpod-observability-addon-exploring-metrics.md)
+ [

# 自訂 SageMaker HyperPod 叢集指標儀表板和警示
](hyperpod-observability-addon-customizing.md)
+ [

# 建立自訂 SageMaker HyperPod 叢集指標
](hyperpod-observability-addon-custom-metrics.md)
+ [

# SageMaker HyperPod 叢集指標
](hyperpod-observability-cluster-metrics.md)
+ [

# 預先設定的警示
](hyperpod-observability-addon-alerts.md)
+ [

# 針對 Amazon SageMaker HyperPod 可觀測性附加元件進行疑難排解
](hyperpod-observability-addon-troubleshooting.md)

# 設定 SageMaker HyperPod 可觀測性附加元件
<a name="hyperpod-observability-addon-setup"></a>

下列清單描述設定可觀測性附加元件的先決條件。

若要讓 Amazon SageMaker HyperPod (SageMaker HyperPod) 叢集的指標傳送至 Amazon Managed Service for Prometheus 工作區，並選擇性地在 Amazon Managed Grafana 中檢視它們，請先將下列受管政策和許可連接至您的主控台角色。
+ 若要使用 Amazon Managed Grafana，請在可使用 Amazon Managed Grafana AWS 區域 的 中啟用 AWS IAM Identity Center (IAM Identity Center)。如需詳細說明，請參閱《AWS IAM Identity Center 使用者指南》**中的 [開始使用 IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。如需 Amazon Managed Grafana 可用的 AWS 區域 清單，請參閱《Amazon Managed Grafana 使用者指南》**中的[支援區域](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html#AMG-supported-Regions)。
+ 在 IAM Identity Center 中建立至少一個使用者。
+ 確定 [Amazon EKS Pod 身分識別代理程式](https://docs.aws.amazon.com/eks/latest/userguide/workloads-add-ons-available-eks.html#add-ons-pod-id)附加元件已安裝在您的 Amazon EKS 叢集中。Amazon EKS Pod 身分識別代理程式附加元件可讓 SageMaker HyperPod 可觀測性附加元件取得憑證，以與 Amazon Managed Service for Prometheus 和 CloudWatch Logs 互動。若要檢查 Amazon EKS 叢集是否有附加元件，請前往 Amazon EKS 主控台，並檢查叢集的**附加元件**索引標籤。如需如何在未安裝附加元件時安裝附加元件的相關資訊，請參閱《Amazon EKS 使用者指南》**中的[建立附加元件 (AWS 管理主控台)](https://docs.aws.amazon.com/eks/latest/userguide/creating-an-add-on.html#_create_add_on_console)。
**注意**  
標準執行個體群組需要 Amazon EKS Pod Identity Agent。對於限制執行個體群組 (RIG)，由於網路隔離限制，無法使用 Pod Identity Agent。叢集的執行個體群組執行 IAM 角色用於與 Amazon Managed Service for Prometheus 互動。如需如何設定該角色的資訊，請參閱 [受限執行個體群組的其他先決條件](#hyperpod-observability-addon-rig-prerequisites)。
+ 在安裝 SageMaker HyperPod 可觀測性附加元件之前，確定您在 SageMaker HyperPod 叢集中至少有一個節點。在此情況下運作的最小 Amazon EC2 執行個體類型為 `4xlarge`。此最小節點大小要求確保節點可以容納 SageMaker HyperPod 可觀測性附加元件建立的所有 Pod，以及叢集上已執行的任何其他 Pod。
+ 將下列政策和許可新增至角色。
  + [AWS 受管政策：AmazonSageMakerHyperPodObservabilityAdminAccess](security-iam-awsmanpol-AmazonSageMakerHyperPodObservabilityAdminAccess.md)
  + [AWS 受管政策：AWSGrafanaWorkspacePermissionManagementV2](https://docs.aws.amazon.com/grafana/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AWSGrafanaWorkspacePermissionManagementV2)
  + [AWS 受管政策：AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)
  + 設定必要 IAM 角色進行 Amazon Managed Grafana 和 Amazon Elastic Kubernetes Service 附加元件存的其他許可：

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

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "CreateRoleAccess",
                "Effect": "Allow",
                "Action": [
                    "iam:CreateRole",
                    "iam:CreatePolicy",
                    "iam:AttachRolePolicy",
                    "iam:ListRoles"
                ],
                "Resource": [
                    "arn:aws:iam::*:role/service-role/AmazonSageMakerHyperPodObservabilityGrafanaAccess*",
                    "arn:aws:iam::*:role/service-role/AmazonSageMakerHyperPodObservabilityAddonAccess*",
                    "arn:aws:iam::*:policy/service-role/HyperPodObservabilityAddonPolicy*",
                    "arn:aws:iam::*:policy/service-role/HyperPodObservabilityGrafanaPolicy*"
                ]
            }
        ]
    }
    ```

------
  + 為 Amazon Managed Grafana 管理 IAM Identity Center 使用者所需的其他許可：

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

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "SSOAccess",
                "Effect": "Allow",
                "Action": [
                    "sso:ListProfileAssociations",
                    "sso-directory:SearchUsers",
                    "sso-directory:SearchGroups",
                    "sso:AssociateProfile",
                    "sso:DisassociateProfile"
                ],
                "Resource": [
                    "*"
                ]
            }
        ]
    }
    ```

------

## 受限執行個體群組的其他先決條件
<a name="hyperpod-observability-addon-rig-prerequisites"></a>

如果您的叢集包含受限制的執行個體群組，執行個體群組執行角色必須具有將指標寫入 Amazon Managed Service for Prometheus 的許可。當您使用**快速設定**建立已啟用可觀測性的叢集時，這些許可會自動新增至執行角色。

如果您使用**自訂設定**或將可觀測性新增至現有的 RIG 叢集，請確定每個受限制執行個體群組的執行角色具有下列許可：

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "PrometheusAccess",
            "Effect": "Allow",
            "Action": "aps:RemoteWrite",
            "Resource": "arn:aws:aps:us-east-1:account_id:workspace/workspace-ID"
        }
    ]
}
```

以您的、帳戶 ID 和 Amazon Managed Service for Prometheus 工作區 ID 取代 *us-east-1* AWS 區域、*account\$1id* 和 *workspace-*ID。

在確定您符合了上述先決條件之後，您可以安裝可觀測性附加元件。

**快速安裝可觀測性附加元件**

1. 開啟 Amazon SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 前往叢集的詳細資訊頁面。

1. 在**儀表板**索引標籤上，找到名為 **HyperPod 監控與可觀測性**的附加元件，然後選擇**快速安裝**。

**執行可觀測性附加元件的自訂安裝**

1. 前往叢集的詳細資訊頁面。

1. 在**儀表板**索引標籤上，找到名為 **HyperPod 監控與可觀測性**的附加元件，然後選擇**自訂安裝**。

1. 指定您要查看的指標類別。如需這些指標類別的詳細資訊，請參閱[SageMaker HyperPod 叢集指標](hyperpod-observability-cluster-metrics.md)。

1. 指定是否您想要啟用 Amazon CloudWatch Logs。

1. 指定您是否想要服務建立新的 Amazon Managed Service for Prometheus 工作區。

1. 若要能夠在 Amazon Managed Grafana 儀表板中檢視指標，請勾選標記為**使用 Amazon Managed Grafana 工作區**的方塊。您可以指定自己的工作區，或讓服務為您建立新的工作區。
**注意**  
Amazon Managed Grafana 不適用於可使用 Amazon Managed Service for Prometheus AWS 區域 的所有 。不過，您可以在任何 AWS 區域 中設定 Grafana 工作區，並將其設定為從位於不同 AWS 區域的 Prometheus 工作區取得指標資料。如需詳細資訊，請參閱[使用 AWS 資料來源組態將 Amazon Managed Service for Prometheus 新增為資料來源](https://docs.aws.amazon.com/grafana/latest/userguide/AMP-adding-AWS-config.html)，以及[連線至 Amazon Managed Service for Prometheus 和開放原始碼 Prometheus 資料來源](https://docs.aws.amazon.com/grafana/latest/userguide/prometheus-data-source.html)。

# Amazon SageMaker HyperPod 可觀測性儀表板
<a name="hyperpod-observability-addon-viewing-dashboards"></a>

本主題描述如何檢視 Amazon SageMaker HyperPod (SageMaker HyperPod) 叢集的指標儀表板，以及如何將新的使用者新增至儀表板。主題也會描述不同類型的儀表板。

## 存取儀表板
<a name="hyperpod-observability-addon-accessing-dashboards"></a>

若要在 Amazon Managed Grafana 中檢視 SageMaker HyperPod 叢集的指標，請執行下列步驟：

1. 開啟 Amazon SageMaker AI 主控台，網址為 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 前往叢集的詳細資訊頁面。

1. 在**儀表板**索引標籤上，找到 **HyperPod 可觀測性**區段，然後選擇**在 Grafana 中開啟儀表板**。

## 將新的使用者新增至 Amazon Managed Grafana 工作區
<a name="hyperpod-observability-addon-adding-users"></a>

如需如何將使用者新增至 Amazon Managed Grafana 工作區的相關資訊，請參閱《Amazon Managed Grafana 使用者指南》**中的[使用 AWS IAM Identity Center 搭配 Amazon Managed Grafana 工作區](https://docs.aws.amazon.com/grafana/latest/userguide/authentication-in-AMG-SSO.html)。

## 可觀測性儀表板
<a name="hyperpod-observability-addon-dashboards.title"></a>

SageMaker HyperPod 可觀測性附加元件會在您的預設 Amazon Managed Grafana 工作區中提供六個互連儀表板。每個儀表板都為資料科學家、機器學習工程師和管理員等各種使用者提供有關叢集中不同資源和任務的深入洞見。

### 任務儀表板
<a name="hyperpod-observability-addon-task-dashboard"></a>

任務儀表板可全面監控和視覺化 SageMaker HyperPod 任務的資源使用率指標。主面板會依父任務顯示詳細的資料表分組資源用量，其中顯示 CPU、GPU 和跨 Pod 的記憶體使用率。互動式時間序列圖表會追蹤所選 Pod 的 CPU 用量、系統記憶體耗用量、GPU 使用率百分比和 GPU 記憶體用量，讓您可以隨時間監控效能趨勢。儀表板透過叢集名稱、命名空間、任務類型和特定 Pod 等變數提供強大的篩選功能，讓您輕鬆深入探索特定工作負載。此監控解決方案對於最佳化資源配置和維護 SageMaker HyperPod 上機器學習工作負載的效能至關重要。

### 訓練儀表板
<a name="hyperpod-observability-addon-training-dashboard"></a>

訓練儀表板提供訓練任務運作狀態、可靠性和故障管理指標的全面監控。儀表板具有關鍵效能指標，包括任務建立計數、成功率和運行時間百分比，以及自動和手動重新啟動事件的詳細追蹤。它透過圓餅圖和熱度圖提供詳細的故障模式視覺化，依類型和修復延遲細分事件，讓您可以識別重複性問題並最佳化任務可靠性。介面包括即時監控關鍵指標，例如系統復原時間和故障偵測延遲，使其成為維持訓練工作負載高可用性的重要工具。此外，儀表板的 24 小時追蹤視窗提供歷史脈絡，用於分析訓練任務效能中的趨勢和模式，協助團隊在潛在問題影響生產工作負載之前主動解決這些問題。

### 推論儀表板
<a name="hyperpod-observability-addon-inference-dashboard"></a>

推論儀表板可全面監控多個維度的模型部署效能和運作狀態指標。它提供主動部署、請求率即時監控、成功百分比和延遲指標的詳細概觀，可讓您追蹤模型服務效能並識別潛在的瓶頸。儀表板包含特殊化面板，適用於語言模型的一般推論指標和字符特定指標，例如第一個字符的時間 (TTFT) 和字符輸送量，這使其對於監控大型語言模型部署特別有價值。此外，它透過 Pod 和節點配置追蹤提供基礎設施洞見，同時提供詳細的錯誤分析功能，以協助維持推論工作負載的高可用性和效能。

### 叢集儀表板
<a name="hyperpod-observability-addon-cluster-dashboard"></a>

叢集儀表板具有叢集運作狀態和效能的全面檢視，可讓您跨 Amazon SageMaker HyperPod (SageMaker HyperPod) 環境即時查看運算、記憶體、網路和儲存資源。您可以透過每隔幾秒就會自動更新資料的直覺式介面一目了然地檢視關鍵指標，包括執行個體總數、GPU 使用率、記憶體用量和網路效能。儀表板會分為幾個邏輯區段，從高階叢集概觀開始，其中顯示運作狀態良好的執行個體百分比和總資源計數等關鍵指標，接著是 GPU 效能、記憶體使用率、網路統計資料和儲存指標的詳細區段。每個區段都具有互動式圖形和面板，可讓您深入探索特定指標，其中包含可自訂的時間範圍，以及可依叢集名稱、執行個體或 GPU ID 篩選選項。

### 檔案系統儀表板
<a name="hyperpod-observability-addon-filesystem-dashboard"></a>

檔案系統儀表板提供檔案系統 (Amazon FSx for Lustre) 效能和運作狀態指標的全面可見性。儀表板會顯示重要的儲存指標，包括可用容量、節省重複資料刪除、CPU/記憶體使用率、磁碟 IOPS、輸送量，以及跨多個視覺化的用戶端連線。您可以監控 CPU 和記憶體用量等系統層級效能指標，以及讀取/寫入操作和磁碟使用率模式等儲存體特定指標。介面包含警示監控功能和詳細的時間序列圖，用於追蹤一段時間內的效能趨勢，因此對於主動維護和容量規劃來說很有價值。此外，透過其全面的指標涵蓋範圍，儀表板可協助識別潛在瓶頸、最佳化儲存效能，並確保 SageMaker HyperPod 工作負載的可靠檔案系統操作。

### GPU 分割區儀表板
<a name="hyperpod-observability-addon-gpu-partition-dashboard"></a>

若要在使用多執行個體 GPU (MIG) 組態時監控 GPU 分割區特定的指標，您需要安裝或升級至最新版的 SageMaker HyperPod 可觀測性附加元件。此附加元件提供全方位的監控功能，包括 MIG 特定的指標，例如分割區計數、記憶體用量和每個 GPU 分割區的運算使用率。

如果您已安裝 SageMaker HyperPod 可觀測性，但需要 MIG 指標支援，只需將附加元件更新至最新版本即可。此程序不會中斷，且會維護您現有的監控組態。

SageMaker HyperPod 會自動公開 MIG 特定的指標，包括：
+ `nvidia_mig_instance_count`：每個設定檔的 MIG 執行個體數量
+ `nvidia_mig_memory_usage`：每個 MIG 執行個體的記憶體使用率
+ `nvidia_mig_compute_utilization`：每個 MIG 執行個體的運算使用率

### 叢集日誌儀表板
<a name="hyperpod-observability-addon-cluster-logs-dashboard"></a>

Cluster Logs 儀表板為您的 SageMaker HyperPod 叢集提供 CloudWatch Logs 的集中檢視。儀表板會查詢`/aws/sagemaker/Clusters/{cluster-name}/{cluster-id}`日誌群組，並顯示具有依執行個體 ID、日誌串流名稱、日誌層級 (ERROR、WARN、INFO、DEBUG) 和任意文字搜尋篩選功能的日誌事件。儀表板包含顯示隨時間變化之日誌事件分佈的事件時間軸、總事件計數器、篩選結果的搜尋事件時間軸，以及包含完整日誌訊息、時間戳記和日誌串流中繼資料的詳細日誌面板。此儀表板使用 CloudWatch 做為其資料來源，有助於偵錯叢集問題、監控執行個體運作狀態事件，以及調查訓練任務失敗。

# 探索 Amazon Managed Grafana 中的 SageMaker HyperPod 叢集指標
<a name="hyperpod-observability-addon-exploring-metrics"></a>

將 Amazon Managed Grafana 連線至 Amazon Managed Service for Prometheus 工作區後，您可以使用 Grafana 的查詢編輯器和視覺化工具來探索指標資料。Amazon Managed Grafana 提供多種與 Prometheus 資料互動的方式，包括用於建置 PromQL 表達式的全方位查詢編輯器、用於探索可用指標和標籤的指標瀏覽器，以及用於建立動態儀表板的範本功能。您可以執行範圍查詢以視覺化一段時間內的時間序列資料，以及執行即時查詢以擷取最新的值，同時搭配選項將結果格式化為時間序列圖、資料表或熱度圖。如需設定查詢設定、使用指標瀏覽器和利用範本功能的詳細資訊，請參閱[使用 Prometheus 資料來源](https://docs.aws.amazon.com/grafana/latest/userguide/using-prometheus-datasource.html)。

# 自訂 SageMaker HyperPod 叢集指標儀表板和警示
<a name="hyperpod-observability-addon-customizing"></a>

Amazon Managed Grafana 可讓您建立全面的儀表板，透過面板視覺化您的資料，而這些面板包含連接到您資料來源的查詢。您可以從頭開始建置儀表板、匯入現有的儀表板，或匯出您的建立項目以用於共用和備份目的。Grafana 儀表板透過取代查詢中硬式編碼值的變數來支援動態功能，讓您的視覺化更具彈性和互動性。您也可以使用註釋、可重複使用的程式庫面板、版本歷程記錄管理和自訂連結等功能來增強儀表板，以建立完整的監控和可觀測性解決方案。如需建立、匯入、設定和管理儀表板的逐步指引，請參閱[建置儀表板](https://docs.aws.amazon.com/grafana/latest/userguide/v10-dash-building-dashboards.html)。

# 建立自訂 SageMaker HyperPod 叢集指標
<a name="hyperpod-observability-addon-custom-metrics"></a>

Amazon SageMaker HyperPod (SageMaker HyperPod) 可觀測性附加元件提供數百個開箱即用的運作狀態、效能和效率指標。除了這些指標之外，您可能需要監控應用程式特定的自訂指標，或是預設指標未擷取的業務需求，例如模型特定的效能指標、資料處理統計資料或應用程式特定的測量。若要解決此需求，您可以使用 OpenTelemetry 實作自訂指標收集，方法是將 Python 程式碼片段整合到您的應用程式。

若要建立自訂指標，請先執行下列 Shell 命令，安裝檢測 Python 應用程式以取得可觀測性所需的核心 OpenTelemetry 元件。此安裝可讓在 SageMaker HyperPod 叢集上執行的 Python 應用程式發出自訂遙測資料。該資料由 OpenTelemetry 收集器收集並轉送至可觀測性基礎設施。

```
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
```

下列範例指令碼會設定 OpenTelemetry 指標管道，自動使用 Pod 和節點資訊標記指標，確保叢集內的適當屬性，並每秒將這些指標傳送至 SageMaker HyperPod 內建可觀測性堆疊。指令碼會建立與 SageMaker HyperPod 指標收集器的連線、設定適當的資源屬性以進行識別，並提供一個計量介面，您可以透過此介面建立各種類型的指標 (計數器、儀器或直方圖)，以追蹤應用程式效能的任何層面。自訂指標會與 SageMaker HyperPod 監控儀表板以及系統指標整合。此整合允許透過單一介面取得全面的可觀測性，您可以在其中建立自訂警示、視覺化和報告，以監控工作負載的完整效能設定檔。

```
import os
from opentelemetry import metrics
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.sdk.resources import Resource

# Get hostname/pod name
hostname = os.uname()[1]
node_name = os.getenv('NODE_NAME', 'unknown')

collector_endpoint = "hyperpod-otel-collector.hyperpod-observability:4317"

# Configure the OTLP exporter
exporter = OTLPMetricExporter(
    endpoint=collector_endpoint,
    insecure=True,
    timeout=5000  # 5 seconds timeout
)

reader = PeriodicExportingMetricReader(
    exporter,
    export_interval_millis=1000
)

resource = Resource.create({
    "service.name": "metric-test",
    "pod.name": hostname,
    "node.name": node_name
})

meter_provider = MeterProvider(
    metric_readers=[reader],
    resource=resource
)
metrics.set_meter_provider(meter_provider)

# Create a meter
meter = metrics.get_meter("test-meter")

# Create a counter
counter = meter.create_counter(
    name="test.counter",
    description="A test counter"
)

counter.add(1, {"pod": hostname, "node": node_name})
```

# SageMaker HyperPod 叢集指標
<a name="hyperpod-observability-cluster-metrics"></a>

Amazon SageMaker HyperPod (SageMaker HyperPod) 會將 9 個不同類別的各種指標發佈到您的 Amazon Managed Service for Prometheus 工作區。並非所有指標都預設為啟用，或在 Amazon Managed Grafana 工作區中顯示。下表顯示當您安裝可觀測性附加元件時，預設會啟用哪些指標、哪些類別具有可以取得更精細叢集資訊的額外指標，以及它們出現在 Amazon Managed Grafana 工作區中的位置。


| 指標類別 | 預設為啟用？ | 有其他可用的進階指標嗎？ | 在哪些 Grafana 儀表板下可用？ | 
| --- | --- | --- | --- | 
| 訓練指標 | 是 | 是 | 培訓 | 
| 推論指標 | 是 | 否 | Inference | 
| 任務治理指標 | 否 | 是 | 無。查詢 Amazon Managed Service for Prometheus 工作區以建置您自己的儀表板。 | 
| 擴展指標 | 否 | 是 | 無。查詢 Amazon Managed Service for Prometheus 工作區以建置您自己的儀表板。 | 
| 叢集指標 | 是 | 是 | 叢集 | 
| 執行個體指標 | 是 | 是 | 叢集 | 
| 加速運算指標 | 是 | 是 | 任務、叢集 | 
| 網路指標 | 否 | 是 | 叢集 | 
| 檔案系統 | 是 | 否 | 檔案系統 | 

下表描述可用於監控 SageMaker HyperPod 叢集的指標，依類別組織。

## 限制執行個體群組上的指標可用性
<a name="hyperpod-observability-rig-metrics-availability"></a>

當您的叢集包含受限執行個體群組時，大多數指標類別可在受限節點上使用，但有下列例外和考量。您也可以在您選擇的任何指標上設定提醒。


| 指標類別 | 適用於 RIG 節點？ | 備註 | 
| --- | --- | --- | 
| 訓練指標 | 是 | 收集 Kubeflow 和 Kubernetes Pod 指標。進階訓練 KPI 指標 （來自訓練指標代理程式） 不適用於 RIG 節點。 | 
| 推論指標 | 否 | 受限執行個體群組不支援推論工作負載。 | 
| 任務治理指標 | 否 | Kueue 指標只會從標準節點收集，如果有的話。 | 
| 擴展指標 | 否 | KEDA 指標只會從標準節點收集，如果有的話。 | 
| 叢集指標 | 是 | 可使用 Kube 狀態指標和 API 伺服器指標。Kube 狀態指標優先排程在標準節點上，但可以在僅限 RIG 叢集中的受限節點上執行。 | 
| 執行個體指標 | 是 | Node Exporter 和 cAdvisor 指標會收集在所有節點上，包括受限節點。 | 
| 加速運算指標 | 是 | DCGM Exporter 在已啟用 GPU 的限制節點上執行。啟用進階模式時，Neuron Monitor 會在已啟用 Neuron 的限制節點上執行。 | 
| 網路指標 | 是 | 啟用進階模式時，EFA Exporter 會在啟用 EFA 的限制節點上執行。 | 
| 檔案系統指標 | 是 | 受限執行個體群組支援 FSx for Lustre 叢集使用率指標。 | 

**注意**  
使用 Fluent Bit 的容器日誌集合不會部署在受限節點上。來自受限節點的叢集日誌可透過 SageMaker HyperPod 平台，獨立於可觀測性附加元件。您可以在 Cluster Logs 儀表板中檢視這些日誌。

## 訓練指標
<a name="hyperpod-observability-training-metrics"></a>

使用這些指標來追蹤 SageMaker HyperPod 叢集上執行的訓練任務效能。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| Kubeflow 指標 | [https://github.com/kubeflow/trainer](https://github.com/kubeflow/trainer) | 是 | Kubeflow | 
| Kubernetes Pod 指標 | [https://github.com/kubernetes/kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) | 是 | Kubernetes | 
| training\$1uptime\$1percentage | 超出總時段大小的訓練時間百分比 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1manual\$1recovery\$1count | 在任務上執行的手動重新啟動總數 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1manual\$1downtime\$1ms | 任務由於手動介入而停止的總時間，以毫秒為單位 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1auto\$1recovery\$1count | 自動復原總數 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1auto\$1recovery\$1downtime | 故障復原期間的總基礎設施負荷時間，以毫秒為單位 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1fault\$1count | 訓練期間遇到的故障總數 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1fault\$1type\$1count | 依類型分配故障 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1fault\$1recovery\$1time\$1ms | 每種故障類型的復原時間，以毫秒為單位 | 否 | SageMaker HyperPod 訓練運算子 | 
| training\$1time\$1ms | 實際訓練所花費的總時間，以毫秒為單位 | 否 | SageMaker HyperPod 訓練運算子 | 

## 推論指標
<a name="hyperpod-observability-inference-metrics"></a>

使用這些指標來追蹤 SageMaker HyperPod 叢集上推論任務的效能。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| model\$1invocations\$1total | 模型的調用請求總數 | 是 | SageMaker HyperPod 推論運算子 | 
| model\$1errors\$1total | 模型調用期間的錯誤總數 | 是 | SageMaker HyperPod 推論運算子 | 
| model\$1concurrent\$1requests | 作用中並行模型請求 | 是 | SageMaker HyperPod 推論運算子 | 
| model\$1latency\$1milliseconds | 以毫秒為單位的模型調用延遲 | 是 | SageMaker HyperPod 推論運算子 | 
| model\$1ttfb\$1milliseconds | 第一個位元組延遲的模型時間，以毫秒為單位 | 是 | SageMaker HyperPod 推論運算子 | 
| TGI | 這些指標可以用來監控 TGI、自動擴展部署的效能，並協助識別瓶頸。如需指標的詳細清單，請參閱 [https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md](https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md)。 | 是 | 模型容器 | 
| LMI | 這些指標可以用來監控 LMI 的效能，並協助識別瓶頸。如需指標的詳細清單，請參閱 [https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md](https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md)。 | 是 | 模型容器 | 

## 任務治理指標
<a name="hyperpod-observability-task-governance-metrics"></a>

使用這些指標來監控 SageMaker HyperPod 叢集上的任務治理和資源配置。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| Kueue | 請參閱 [https://kueue.sigs.k8s.io/docs/reference/metrics/](https://kueue.sigs.k8s.io/docs/reference/metrics/)。 | 否 | Kueue | 

## 擴展指標
<a name="hyperpod-observability-scaling-metrics"></a>

使用這些指標來監控 SageMaker HyperPod 叢集上的自動擴展行為和效能。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| KEDA 運算子指標 | 請參閱 [https://keda.sh/docs/2.17/integrations/prometheus/\$1operator](https://keda.sh/docs/2.17/integrations/prometheus/#operator)。 | 否 | Kubernetes Event-driven Autoscaler (KEDA) | 
| KEDA Webhook 指標 | 請參閱 [https://keda.sh/docs/2.17/integrations/prometheus/\$1admission-webhooks](https://keda.sh/docs/2.17/integrations/prometheus/#admission-webhooks)。 | 否 | Kubernetes Event-driven Autoscaler (KEDA) | 
| KEDA Metrics 伺服器指標 | 請參閱 [https://keda.sh/docs/2.17/integrations/prometheus/\$1metrics-server](https://keda.sh/docs/2.17/integrations/prometheus/#metrics-server)。 | 否 | Kubernetes Event-driven Autoscaler (KEDA) | 

## 叢集指標
<a name="hyperpod-observability-cluster-health-metrics"></a>

使用這些指標來監控整體叢集運作狀態和資源配置。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| 叢集運作狀態 | Kubernetes API 伺服器指標。請參閱 [https://kubernetes.io/docs/reference/instrumentation/metrics/](https://kubernetes.io/docs/reference/instrumentation/metrics/)。 | 是 | Kubernetes | 
| Kubestate | 請參閱 [https://github.com/kubernetes/kube-state-metrics/tree/main/docs\$1default-resources](https://github.com/kubernetes/kube-state-metrics/tree/main/docs#default-resources)。 | 有限 | Kubernetes | 
| KubeState 進階 | 請參閱 [https://github.com/kubernetes/kube-state-metrics/tree/main/docs\$1optional-resources](https://github.com/kubernetes/kube-state-metrics/tree/main/docs#optional-resources)。 | 否 | Kubernetes | 

## 執行個體指標
<a name="hyperpod-observability-instance-metrics"></a>

使用這些指標來監控個別執行個體效能和運作狀態。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| 節點指標 | 請參閱 [https://github.com/prometheus/node\$1exporter?tab=readme-ov-file\$1enabled-by-default](https://github.com/prometheus/node_exporter?tab=readme-ov-file#enabled-by-default)。 | 是 | Kubernetes | 
| 容器指標 | Cadvisor 公開的容器指標。請參閱 [https://github.com/google/cadvisor](https://github.com/google/cadvisor)。 | 是 | Kubernetes | 

## 加速運算指標
<a name="hyperpod-observability-accelerated-compute-metrics"></a>

使用這些指標來監控叢集中個別加速運算裝置的效能、運作狀態和使用率。

**注意**  
在叢集上啟用 MIG （多執行個體 GPU) 的 GPU 分割時，DCGM 指標會自動提供分割區層級精細度，以監控個別 MIG 執行個體。每個 MIG 分割區都會以單獨的 GPU 裝置公開，並具有自己的溫度、功率、記憶體使用率和運算活動的指標。這可讓您獨立追蹤每個 GPU 分割區的資源用量和運作狀態，進而精確監控在部分 GPU 資源上執行的工作負載。如需設定 GPU 分割的詳細資訊，請參閱 [在 Amazon SageMaker HyperPod 中使用 GPU 分割區](sagemaker-hyperpod-eks-gpu-partitioning.md)。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| NVIDIA GPU | DCGM 指標。請參閱 [https://github.com/NVIDIA/dcgm-exporter/blob/main/etc/dcp-metrics-included.csv](https://github.com/NVIDIA/dcgm-exporter/blob/main/etc/dcp-metrics-included.csv)。 | 有限 |  NVIDIA Data Center GPU Manager (DCGM)  | 
|  NVIDIA GPU (進階)  | 在下列 CSV 檔案中註銷的 DCGM 指標：[https://github.com/NVIDIA/dcgm-exporter/blob/main/etc/dcp-metrics-included.csv](https://github.com/NVIDIA/dcgm-exporter/blob/main/etc/dcp-metrics-included.csv) | 否 |  NVIDIA Data Center GPU Manager (DCGM)  | 
| AWS Trainium | Neuron 指標。請參閱 [https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html\$1neuron-monitor-nc-counters](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html#neuron-monitor-nc-counters)。 | 否 | AWS Neuron 監視器 | 

## 網路指標
<a name="hyperpod-observability-network-metrics"></a>

使用這些指標來監控叢集中 Elastic Fabric Adapter (EFA) 的效能和運作狀態。


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| EFA | 請參閱 [https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation\$1and\$1observability/3.efa-node-exporter/README.md](https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation_and_observability/3.efa-node-exporter/README.md)。 | 否 | Elastic Fabric Adapter | 

## 檔案系統指標
<a name="hyperpod-observability-file-system-metrics"></a>


| 指標名稱或類型 | Description | 預設為啟用？ | 指標來源 | 
| --- | --- | --- | --- | 
| 檔案系統 | 來自 Amazon CloudWatch 的 Amazon FSx for Lustre 指標：[使用 Amazon CloudWatch 進行監控](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring-cloudwatch.html)。 | 是 | Amazon FSx for Lustre | 

# 預先設定的警示
<a name="hyperpod-observability-addon-alerts"></a>

Amazon SageMaker HyperPod (SageMaker HyperPod) 可觀測性附加元件可為您的叢集和工作負載啟用預設警示，以在系統偵測到叢集效能不佳的常見早期指標時通知您。這些警示是在 Amazon Managed Grafana 內建警示系統中定義。如需如何修改這些預先設定警示或建立新警示的相關資訊，請參閱《Amazon Managed Grafana 使用者指南》**中的 [Grafana 第 10 版中的警示](https://docs.aws.amazon.com/grafana/latest/userguide/v10-alerts.html)。下列 YAML 會顯示預設警示。

```
groups:
- name: sagemaker_hyperpod_alerts
  rules:
  # GPU_TEMP_ABOVE_80C
  - alert: GPUHighTemperature
    expr: DCGM_FI_DEV_GPU_TEMP > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "GPU Temperature Above 80C"
      description: "GPU {{ $labels.gpu }} temperature is {{ $value }}°C."

  # GPU_TEMP_ABOVE_85C  
  - alert: GPUCriticalTemperature  
    expr: DCGM_FI_DEV_GPU_TEMP > 85
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "GPU Temperature Above 85C"
      description: "GPU {{ $labels.gpu }} temperature is {{ $value }}°C."

  # GPU_MEMORY_ERROR
  # Any ECC double-bit errors indicate serious memory issues requiring immediate attention
  - alert: GPUMemoryErrorDetected
    expr: DCGM_FI_DEV_ECC_DBE_VOL_TOTAL > 0 or DCGM_FI_DEV_ECC_DBE_AGG_TOTAL > DCGM_FI_DEV_ECC_DBE_AGG_TOTAL offset 5m
    labels:
      severity: critical
    annotations:
      summary: "GPU ECC Double-Bit Error Detected"
      description: "GPU {{ $labels.gpu }} has detected ECC double-bit errors."

  # GPU_POWER_WARNING
  # Sustained power limit violations can impact performance and stability
  - alert: GPUPowerViolation
    expr: DCGM_FI_DEV_POWER_VIOLATION > 100
    for: 5m
    labels:
      severity: warning  
    annotations:
      summary: "GPU Power Violation"
      description: "GPU {{ $labels.gpu }} has been operating at power limit for extended period."

  # GPU_NVLINK_ERROR
  # NVLink errors above threshold indicate interconnect stability issues
  - alert: NVLinkErrorsDetected
    expr: DCGM_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL > 0 or DCGM_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL > 10
    labels:
      severity: warning
    annotations:
      summary: "NVLink Errors Detected" 
      description: "GPU {{ $labels.gpu }} has detected NVLink errors."

  # GPU_THERMAL_VIOLATION  
  # Immediate alert on thermal violations to prevent hardware damage
  - alert: GPUThermalViolation
    expr: increase(DCGM_FI_DEV_THERMAL_VIOLATION[5m]) > 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "GPU Thermal Violation Detected"
      description: "GPU {{ $labels.gpu }} has thermal violations on node {{ $labels.Hostname }}"

  # GPU_XID_ERROR
  # XID errors indicate driver or hardware level GPU issues requiring investigation
  - alert: GPUXidError
    expr: DCGM_FI_DEV_XID_ERRORS > 0
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: "GPU XID Error Detected"
      description: "GPU {{ $labels.gpu }} experienced XID error {{ $value }} on node {{ $labels.Hostname }}"

  # MIG_CONFIG_FAILURE
  # MIG configuration failures indicate issues with GPU partitioning setup
  - alert: MIGConfigFailure
    expr: kubelet_node_name{nvidia_com_mig_config_state="failed"} > 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "MIG Configuration Failed"
      description: "MIG configuration failed on node {{ $labels.instance }}"

  # DISK_SPACE_WARNING
  # 90% threshold ensures time to respond before complete disk exhaustion
  - alert: NodeDiskSpaceWarning
    expr: (node_filesystem_size_bytes - node_filesystem_free_bytes) / node_filesystem_size_bytes * 100 > 90
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High Disk Usage"
      description: "Node {{ $labels.instance }} disk usage is above 90%"

  # FSX_STORAGE_WARNING
  # 80% FSx utilization allows buffer for burst workloads
  - alert: FsxLustreStorageWarning
    expr: fsx_lustre_storage_used_bytes / fsx_lustre_storage_capacity_bytes * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High FSx Lustre Usage"
      description: "FSx Lustre storage usage is above 80% on file system {{ $labels.filesystem_id }}"
```

# 針對 Amazon SageMaker HyperPod 可觀測性附加元件進行疑難排解
<a name="hyperpod-observability-addon-troubleshooting"></a>

使用以下指引來解決 Amazon SageMaker HyperPod (SageMaker HyperPod) 可觀測性附加元件的常見問題。

## 針對 Amazon Managed Grafana 中缺少的指標進行疑難排解
<a name="troubleshooting-missing-metrics"></a>

如果指標未出現在 Amazon Managed Grafana 儀表板中，請執行下列步驟來識別並解決問題。

### 驗證 Amazon Managed Service for Prometheus-Amazon Managed Grafana 連線
<a name="verify-amp-grafana-connection"></a>

1. 登入 Amazon Managed Grafana 主控台。

1. 在左側窗格中，選擇**所有工作區**。

1. 在**工作區**資料表中，選擇您的工作區。

1. 在工作區的詳細資訊頁面中，選擇**資料來源**索引標籤。

1. 驗證 Amazon Managed Service for Prometheus 資料來源是否存在。

1. 檢查連線設定：
   + 確認端點 URL 正確。
   + 驗證是否已正確設定 IAM 驗證。
   + 選擇 **Test connection** (測試連線)。驗證狀態是否為**資料來源運作中**。

### 驗證 Amazon EKS 附加元件狀態
<a name="verify-eks-addon-status"></a>

1. 在 [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters) 開啟 Amazon EKS 主控台。

1. 選取您的叢集。

1. 選擇**附加元件**索引標籤。

1. 驗證 SageMaker HyperPod 可觀測性附加元件是否已列出，且其狀態是否為 **ACTIVE**。

1. 如果狀態不是 **ACTIVE**，請參閱[針對附加元件安裝失敗進行疑難排解](#troubleshooting-addon-installation-failures)。

### 驗證 Pod 身分識別關聯
<a name="verify-pod-identity-association"></a>

1. 在 [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters) 開啟 Amazon EKS 主控台。

1. 選取您的叢集。

1. 在叢集詳細資訊窗格上，選擇**存取**索引標籤。

1. 在 **Pod 身分識別關聯**資料表中，選擇具有下列屬性值的關聯：
   + **命名空間**：`hyperpod-observability`
   + **服務帳戶**：`hyperpod-observability-operator-otel-collector`
   + **附加元件**：`amazon-sagemaker-hyperpod-observability`

1. 確定連接至此關聯的 IAM 角色具有下列許可。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PrometheusAccess",
               "Effect": "Allow",
               "Action": "aps:RemoteWrite",
               "Resource": "arn:aws:aps:us-east-1:111122223333:workspace/workspace-ID"
           },
           {
               "Sid": "CloudwatchLogsAccess",
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams",
                   "logs:PutLogEvents",
                   "logs:GetLogEvents",
                   "logs:FilterLogEvents",
                   "logs:GetLogRecord",
                   "logs:StartQuery",
                   "logs:StopQuery",
                   "logs:GetQueryResults"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/Clusters/*",
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/Clusters/*:log-stream:*"
               ]
           }
       ]
   }
   ```

------

1. 確定連接至此關聯的 IAM 角色具有下列信任政策。驗證來源 ARN 和來源帳戶是否正確。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
               "Effect": "Allow",
               "Principal": {
                   "Service": "pods.eks.amazonaws.com"
               },
               "Action": [
                   "sts:AssumeRole",
                   "sts:TagSession"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:cluster/cluster-name",
                       "aws:SourceAccount": "111122223333"
                   }
               }
           }
       ]
   }
   ```

------

### 檢查 Amazon Managed Service for Prometheus 限流
<a name="check-amp-throttling"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/servicequotas/](https://console.aws.amazon.com/servicequotas/) 開啟 Service Quotas 主控台。

1. 在**受管配額**方塊中，搜尋並選取 Amazon Managed Service for Prometheus。

1. 選擇**每個工作區的作用中系列**配額。

1. 在**資源層級配額**索引標籤中，選取您的 Amazon Managed Service for Prometheus 工作區。

1. 確保使用率低於您目前的配額。

1. 如果您已達到配額限制，請選擇左側的選項按鈕來選取您的工作區，然後選擇**在資源層級請求增加**。

### 確認已啟用 KV 快取和智慧型路由
<a name="verify-caching-routing"></a>

如果`KVCache Metrics`儀表板遺失，則未啟用功能，或未於 中提及連接埠`modelMetrics`。如需如何啟用此功能的詳細資訊，請參閱 中的步驟 1 和 3[設定 KV 快取和智慧型路由以提升效能](sagemaker-hyperpod-model-deployment-deploy-ftm.md#sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route)。

如果`Intelligent Router Metrics`儀表板遺失，請啟用 功能使其顯示。如需如何啟用此功能的詳細資訊，請參閱 [設定 KV 快取和智慧型路由以提升效能](sagemaker-hyperpod-model-deployment-deploy-ftm.md#sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route)。

## 針對附加元件安裝失敗進行疑難排解
<a name="troubleshooting-addon-installation-failures"></a>

如果可觀測性附加元件無法安裝，請使用下列步驟來診斷並解決問題。

### 檢查運作狀態探查狀態
<a name="check-health-probe-status"></a>

1. 在 [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters) 開啟 Amazon EKS 主控台。

1. 選取您的叢集。

1. 選擇**附加元件**索引標籤。

1. 選擇失敗的附加元件。

1. 檢閱**運作狀態問題**區段。

1. 如果運作狀態問題與憑證或 Pod 身分識別有關，請參閱[驗證 Pod 身分識別關聯](#verify-pod-identity-association)。同時確保 Pod 身分識別代理程式附加元件正在叢集中執行。

1. 檢查管理員日誌中是否有錯誤。如需說明，請參閱[檢閱管理員日誌](#review-manager-logs)。

1. 請聯絡 AWS Support 以取得問題詳細資訊。

### 檢閱管理員日誌
<a name="review-manager-logs"></a>

1. 取得附加元件管理員 Pod：

   ```
   kubectl logs -n hyperpod-observability -l control-plane=hyperpod-observability-controller-manager
   ```

1. 如有緊急問題，請聯絡 支援。

## 檢閱所有可觀測性 Pod
<a name="review-all-observability-pods"></a>

SageMaker HyperPod 可觀測性附加元件建立的所有 Pod 都位於 `hyperpod-observability` 命名空間中。若要取得這些 Pod 的狀態，請執行以下命令。

```
kubectl get pods -n hyperpod-observability
```

尋找狀態為 `pending` 或 `crashloopbackoff` 的 Pod。執行下列命令以取得這些待定或失敗 Pod 的日誌。

```
kubectl logs -n hyperpod-observability pod-name
```

如果您在日誌中找不到錯誤，請執行下列命令來描述 Pod 並尋找錯誤。

```
kubectl describe -n hyperpod-observability pod pod-name
```

若要取得更多內容，請執行下列兩個命令來描述這些 Pod 的部署和常駐程式集。

```
kubectl describe -n hyperpod-observability deployment deployment-name
```

```
kubectl describe -n hyperpod-observability daemonset daemonset-name
```

## 針對卡在待定狀態的 Pod 進行疑難排解
<a name="pods-stuck-in-pending"></a>

如果您看到有 Pod 卡在 `pending` 狀態，請確定節點夠大，足以容納所有 Pod。若要驗證是否如此，請執行下列步驟。

1. 在以下網址開啟 Amazon EKS 主控台：[https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters)。

1. 選擇您的叢集。

1. 選擇叢集的**運算**索引標籤。

1. 選擇執行個體類型最小的節點。

1. 在容量配置區段中，尋找可用的 Pod。

1. 如果沒有可用的 Pod，則您需要較大的執行個體類型。

如有緊急問題，請聯絡 AWS 支援。

## 對受限執行個體群組的可觀測性進行故障診斷
<a name="troubleshooting-rig-observability"></a>

使用以下指引來解決具有受限執行個體群組之叢集的特定問題。

### 在受限節點上未啟動的可觀測性 Pod
<a name="troubleshooting-rig-pods-not-starting"></a>

如果可觀測性 Pod 未在受限節點上啟動，請檢查 Pod 狀態和事件：

```
kubectl get pods -n hyperpod-observability -o wide
kubectl describe pod pod-name -n hyperpod-observability
```

常見原因包括：
+ **映像提取失敗：**如果受限節點上尚未允許列出可觀測性容器映像，Pod 事件可能會顯示映像提取錯誤。確保您執行的是最新版本的可觀測性附加元件。如果升級後問題仍存在，請聯絡 支援。
+ **提示容錯：**確認 Pod 規格包含受限節點所需的容錯。啟用 RIG 支援時，從 版本開始的附加元件`v1.0.5-eksbuild.1`會自動新增此容錯。如果您使用的是舊版，請升級到最新版本。

### 檢視受限節點上 Pod 的日誌
<a name="troubleshooting-rig-viewing-logs"></a>

`kubectl logs` 命令不適用於在受限節點上執行的 Pod。這是預期的限制，因為日誌串流所需的通訊路徑不適用於受限節點。

若要檢視受限節點的日誌，請使用 **Amazon Managed Grafana 中的叢集日誌**儀表板，直接查詢 CloudWatch Logs。您可以依執行個體 ID、日誌串流、日誌層級和任意文字搜尋來篩選，以尋找相關的日誌項目。

### 具有標準和受限節點的叢集中的 DNS 解析失敗
<a name="troubleshooting-rig-dns-resolution"></a>

在混合叢集 （同時具有標準和限制執行個體群組的叢集） 中，當嘗試連接 Amazon Managed Service for Prometheus 或 CloudWatch 等 AWS 服務端點時，標準節點上的 Pod 可能會遇到 DNS 解析逾時。

**原因：**`kube-dns`服務具有來自標準 CoreDNS Pod 和 RIG CoreDNS Pod 的端點。由於網路隔離，標準節點 Pod 無法連線到 RIG CoreDNS 端點。當`kube-proxy`負載平衡從標準節點 Pod 到 RIG CoreDNS 端點的 DNS 請求時，請求會逾時。

**解決方案：**在 `kube-dns`服務`internalTrafficPolicy: Local`上設定 ，讓 Pod 僅到達其本機節點上的 CoreDNS：

```
kubectl patch svc kube-dns -n kube-system -p '{"spec":{"internalTrafficPolicy":"Local"}}'
```

套用此修補程式後，重新啟動受影響的可觀測性 Pod：

```
kubectl delete pods -n hyperpod-observability -l app.kubernetes.io/name=hyperpod-node-collector
```

### 來自限制節點的指標未到達 Amazon Managed Service for Prometheus
<a name="troubleshooting-rig-metrics-not-reaching-amp"></a>

如果來自受限節點的指標未出現在您的 Amazon Managed Service for Prometheus 工作區中：

1. **驗證執行角色許可。**確定受限制執行個體群組的執行角色具有 Prometheus 工作區的`aps:RemoteWrite`許可。如需詳細資訊，請參閱[受限執行個體群組的其他先決條件](hyperpod-observability-addon-setup.md#hyperpod-observability-addon-rig-prerequisites)。

1. **檢查節點收集器 Pod 狀態。**執行下列命令，並確認節點收集器 Pod 在受限節點上執行：

   ```
   kubectl get pods -n hyperpod-observability | grep node-collector
   ```

1. **檢查中央收集器部署。**在具有受限節點的叢集中，附加元件會為每個網路邊界部署一個中央收集器。確認每個界限都有中央收集器：

   ```
   kubectl get deployments -n hyperpod-observability | grep central-collector
   ```

1. **檢查 Pod 事件是否有錯誤。**在收集器 Pod `kubectl describe`上使用 來尋找錯誤事件：

   ```
   kubectl describe pod collector-pod-name -n hyperpod-observability
   ```

如果驗證上述內容後問題仍存在，請聯絡 支援。

### Pod 身分驗證不適用於受限的執行個體群組節點
<a name="troubleshooting-rig-pod-identity"></a>

[驗證 Pod 身分識別關聯](#verify-pod-identity-association) 疑難排解步驟僅適用於標準節點。在受限節點上，附加元件會使用叢集執行個體群組執行角色進行 AWS 身分驗證，而非 Amazon EKS Pod Identity。如果受限制節點缺少指標，請驗證執行角色許可，而不是 Pod Identity 關聯。

### Fluent Bit 未在受限節點上執行
<a name="troubleshooting-rig-fluent-bit"></a>

這是預期的行為。Fluent Bit 刻意不部署在受限節點上。來自受限節點的日誌會透過 SageMaker HyperPod 平台發佈至 CloudWatch，獨立於可觀測性附加元件。使用 Amazon Managed Grafana 中的**叢集日誌**儀表板來檢視這些日誌。

# 可觀測性與 Amazon CloudWatch
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci"></a>

使用 [Amazon CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) 來收集、彙總和摘要說明指標和日誌，這些指標和日誌來自與 HyperPod 叢集相關聯之 EKS 叢集上的容器化應用程式和微服務。

Amazon CloudWatch Insights 會收集 CPU、記憶體、磁碟和網路等運算資源的指標。Container Insights 還提供診斷資訊，例如容器重新啟動故障，協助您快速隔離和解決這些故障。您也可以為 Container Insights 收集的指標設定 CloudWatch 警示。

若要尋找指標的完整清單，請參閱《Amazon EKS 使用者指南》**中的 [Amazon EKS 和 Kubernetes Container Insights 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-EKS.html)。

## 安裝 CloudWatch Container Insights
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-setup"></a>

叢集管理員使用者必須遵循《CloudWatch 使用者指南》**中的[使用 Amazon CloudWatch 可觀測性 EKS 附加元件或 Helm Chart 安裝 CloudWatch 代理程式](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html)中的指示，設定 CloudWatch Container Insights。如需 Amazon EKS 附加元件的詳細資訊，另請參閱《Amazon EKS 使用者指南》**中的[安裝 Amazon CloudWatch 可觀測性 EKS 附加元件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-addon.html)。

安裝完成後，請驗證 CloudWatch 可觀測性附加元件是否顯示在 EKS 叢集附加元件索引標籤中。可能需要大約幾分鐘的時間，直到儀表板載入為止。

**注意**  
SageMaker HyperPod 需要 CloudWatch Insight v2.0.1-eksbuild.1 或更新版本。

![\[CloudWatch Observability service card showing status, version, and IAM role information.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/hyperpod-eks-CIaddon.png)


# 存取 CloudWatch Container Insights 儀表板
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-access-dashboard"></a>

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 選擇 **Insights**，然後選擇 **Container Insights**。

1. 選取透過您正在使用的 HyperPod 叢集設定的 EKS 叢集。

1. 檢視 Pod/叢集層級指標。

![\[Performance monitoring dashboard for EKS 叢集 showing node status, resource utilization, and pod metrics.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/hyperpod-eks-CIdashboard.png)


## 存取 CloudWatch Container Insights 日誌
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-access-log"></a>

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 選擇 **Logs** (日誌)，然後選擇 **Log groups** (日誌群組)。

當您將 HyperPod 叢集與 Amazon CloudWatch Container Insights 整合時，您可以採取下列格式存取相關日誌群組：`/aws/containerinsights /<eks-cluster-name>/*`。在此日誌群組內，您可以尋找和探索各種類型的日誌，例如效能日誌、主機日誌、應用程式日誌和資料平面日誌。