

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# クラスターとタスクのオブザーバビリティ
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster"></a>

SageMaker HyperPod クラスターをモニタリングするには、次の 2 つのオプションがあります。

**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 アイデンティティセンター (IAM Identity Center) を有効にします。手順については、「**AWS IAM アイデンティティセンター ユーザーガイド」の「[IAM アイデンティティセンターの開始方法](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 アイデンティティセンターで少なくとも 1 人のユーザーが作成済み。
+ [Amazon EKS Pod Identity Agent](https://docs.aws.amazon.com/eks/latest/userguide/workloads-add-ons-available-eks.html#add-ons-pod-id) アドオンが Amazon EKS クラスターにインストールされていることを確認します。Amazon EKS Pod Identity Agent アドオンを使用すると、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 クラスターに少なくとも 1 つのノードがあることを確認します。この場合、最小の Amazon EC2 インスタンスタイプは `4xlarge` です。この最小ノードサイズ要件により、ノードは SageMaker HyperPod オブザーバビリティアドオンが作成するすべてのポッドと、クラスターで既に実行されている他のポッドに対応できます。
+ ロールに次のポリシーとアクセス許可を追加します。
  + [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)
  + Amazon Managed Grafana および Amazon Elastic Kubernetes Service アドオンアクセスに必要な IAM ロールを設定するための追加のアクセス許可:

------
#### [ 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 アイデンティティセンターユーザーを管理するために必要な追加のアクセス許可:

------
#### [ 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"
        }
    ]
}
```

*us-east-1*、*account\$1id*、*space-ID* を AWS リージョン、 アカウント ID、Amazon Managed Service for Prometheus ワークスペース 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 マネージド 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 ユーザーガイド*」の「[Amazon Managed Grafana ワークスペースで AWS IAM アイデンティティセンターを使用する](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 ワークスペースに相互接続された 6 つのダッシュボードを提供します。各ダッシュボードは、データサイエンティスト、機械学習エンジニア、管理者など、さまざまなユーザー向けに、クラスター内のさまざまなリソースやタスクに関する詳細なインサイトを提供します。

### タスクダッシュボード
<a name="hyperpod-observability-addon-task-dashboard"></a>

タスクダッシュボードは、SageMaker HyperPod タスクのリソース使用率メトリクスを包括的にモニタリングおよび可視化します。メインパネルには、親タスクごとにリソース使用率をグループ化した詳細なテーブルが表示され、ポッド全体にわたる CPU、GPU、メモリ使用率が表示されます。インタラクティブ時系列グラフは、選択したポッドの CPU 使用率、システムメモリ消費量、GPU 使用率、GPU メモリ使用率を追跡するため、経時的なパフォーマンスの傾向をモニタリングできます。ダッシュボードは、クラスター名、名前空間、タスクタイプ、特定のポッドなどの変数による強力なフィルタリング機能を提供しているため、特定のワークロードに簡単にドリルダウンできます。このモニタリングソリューションは、リソースの割り当てを最適化し、SageMaker HyperPod で機械学習ワークロードのパフォーマンスを維持するために不可欠です。

### トレーニングダッシュボード
<a name="hyperpod-observability-addon-training-dashboard"></a>

トレーニングダッシュボードは、トレーニングタスクの状態、信頼性、障害管理メトリクスを包括的にモニタリングします。ダッシュボードは、タスク作成数、成功率、稼働時間の割合などの主要なパフォーマンス指標と、自動再起動イベントと手動再起動イベントの両方の詳細な追跡機能を提供します。タイプ別および修復レイテンシー別にインシデントを分類する円グラフとヒートマップを通じて障害パターンを詳細に可視化できるため、繰り返し発生する問題を特定し、タスクの信頼性を最適化できます。インターフェイスには、システム復旧時間や障害検出レイテンシーなどの重要なメトリクスのリアルタイムモニタリングが含まれているため、トレーニングワークロードの高可用性を維持するために不可欠なツールです。さらに、ダッシュボードの 24 時間追跡ウィンドウは、トレーニングタスクのパフォーマンスの傾向とパターンを分析するための履歴コンテキストを提供し、潜在的な問題が本番環境のワークロードに影響を与える前にチームはプロアクティブに対処できるようになります。

### 推論ダッシュボード
<a name="hyperpod-observability-addon-inference-dashboard"></a>

推論ダッシュボードは、複数のディメンションにわたるモデルデプロイのパフォーマンスとヘルスメトリクスを包括的にモニタリングします。アクティブなデプロイの詳細な概要、リクエスト率、成功率、レイテンシーメトリクスのリアルタイムモニタリングにより、モデル提供のパフォーマンスを追跡し、潜在的なボトルネックを特定できます。ダッシュボードには、最初のトークンまでの時間 (TTFT) やトークンスループットなど、一般的な推論メトリクスと言語モデルのトークン固有のメトリクスの両方に特化したパネルが含まれており、大規模言語モデルのデプロイのモニタリングに特に役立ちます。さらに、ポッドとノードの割り当ての追跡を通じてインフラストラクチャに関するインサイトを提供し、推論ワークロードの高可用性とパフォーマンスを維持するのに役立つ詳細なエラー分析機能を提供します。

### クラスターダッシュボード
<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 Observability アドオンの最新バージョンをインストールまたはアップグレードする必要があります。このアドオンは、パーティション数、メモリ使用量、GPU パーティションあたりのコンピューティング使用率などの MIG 固有のメトリクスを含む包括的なモニタリング機能を提供します。

SageMaker HyperPod Observability が既にインストールされているが、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>

クラスターログダッシュボードには、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) オブザーバビリティアドオンは、すぐに使用できる、数百のヘルス、パフォーマンス、効率メトリクスを提供します。これらのメトリクスに加えて、モデル固有のパフォーマンス指標、データ処理統計、アプリケーション固有の測定値など、デフォルトのメトリクスではキャプチャされないアプリケーションやビジネスニーズに固有のカスタムメトリクスをモニタリングする必要がある場合があります。このニーズに対応するために、Python コードスニペットをアプリケーションに統合することで、OpenTelemetry を使用してカスタムメトリクスコレクションを実装できます。

カスタムメトリクスを作成するには、まず次のシェルコマンドを実行して、オブザーバビリティのために Python アプリケーションの計測に必要なコア OpenTelemetry コンポーネントをインストールします。このインストールにより、SageMaker HyperPod クラスターで実行される Python アプリケーションがカスタムテレメトリデータを出力できるようになります。このデータは OpenTelemetry コレクターが収集し、オブザーバビリティインフラストラクチャに転送されます。

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

次のスクリプト例では、メトリクスにポッドとノードの情報を自動的にタグ付けし、クラスター内の適切な属性を確保して、これらのメトリクスを毎秒 SageMaker HyperPod 組み込みオブザーバビリティスタックに送信する、OpenTelemetry メトリクスパイプラインを設定します。このスクリプトは、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 ダッシュボードで利用できるか | 
| --- | --- | --- | --- | 
| トレーニングメトリクス | はい  | はい | トレーニング | 
| 推論メトリクス | はい | なし | 推論 | 
| タスクガバナンスメトリクス | いいえ | はい | なし。Amazon Managed Service for Prometheus ワークスペースをクエリして、独自のダッシュボードを構築します。 | 
| スケーリングメトリクス | いいえ | はい | なし。Amazon Managed Service for Prometheus ワークスペースをクエリして、独自のダッシュボードを構築します。 | 
| クラスターメトリクス | はい  | はい | クラスター | 
| インスタンスメトリクス | はい  | はい | クラスター | 
| 高速コンピューティングメトリクス | はい  | はい | タスク、クラスター | 
| ネットワークメトリクス | いいえ | はい | クラスター | 
| ファイルシステム | はい | なし | ファイルシステム | 

次の表では、SageMaker HyperPod クラスターのモニタリングに使用できるメトリクスをカテゴリ別にまとめています。

## 制限付きインスタンスグループのメトリクスの可用性
<a name="hyperpod-observability-rig-metrics-availability"></a>

クラスターに制限付きインスタンスグループが含まれている場合、以下の例外と考慮事項を除いて、ほとんどのメトリクスカテゴリは制限付きノードで使用できます。選択した任意のメトリクスにアラートを設定することもできます。


| メトリクスカテゴリ | RIG ノードで使用できますか? | 注意事項 | 
| --- | --- | --- | 
| トレーニングメトリクス | はい | Kubeflow および Kubernetes ポッドメトリクスが収集されます。高度なトレーニング KPI メトリクス (トレーニングメトリクスエージェントから) は、RIG ノードからは使用できません。 | 
| 推論メトリクス | いいえ | 推論ワークロードは、制限付きインスタンスグループではサポートされていません。 | 
| タスクガバナンスメトリクス | いいえ | キューメトリクスは、標準ノードからのみ収集されます。 | 
| スケーリングメトリクス | いいえ | KEDA メトリクスは、標準ノードからのみ収集されます。 | 
| クラスターメトリクス | はい | Kube ステートメトリクスと API サーバーメトリクスを使用できます。Kube ステートメトリクスは標準ノードで優先的にスケジュールされますが、RIG 専用クラスターの制限付きノードで実行できます。 | 
| インスタンスメトリクス | はい | Node Exporter および cAdvisor メトリクスは、制限付きノードを含むすべてのノードで収集されます。 | 
| 高速コンピューティングメトリクス | はい | DCGM Exporter は GPU 対応の制限付きノードで実行されます。Neuron Monitor は、アドバンストモードが有効になっている場合、Neuron が有効な制限付きノードで実行されます。 | 
| ネットワークメトリクス | はい | アドバンストモードが有効になっている場合、EFA Exporter は EFA 対応の制限付きノードで実行されます。 | 
| ファイルシステムのメトリクス | はい | FSx for Lustre クラスター使用率メトリクスは、制限付きインスタンスグループでサポートされています。 | 

**注記**  
Fluent Bit を使用したコンテナログの収集は、制限されたノードにはデプロイされません。制限されたノードからのクラスターログは、オブザーバビリティアドオンとは無関係に SageMaker HyperPod プラットフォームから入手できます。これらのログは、クラスターログダッシュボードで表示できます。

## トレーニングメトリクス
<a name="hyperpod-observability-training-metrics"></a>

これらのメトリクスを使用して、SageMaker HyperPod クラスターで実行されたトレーニングタスクのパフォーマンスを追跡します。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| Kubeflow メトリクス | [https://github.com/kubeflow/trainer](https://github.com/kubeflow/trainer) | はい | Kubeflow | 
| Kubernetes ポッドメトリクス | [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 クラスターの推論タスクのパフォーマンスを追跡します。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| 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 クラスターのタスクガバナンスとリソース割り当てをモニタリングします。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| 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 クラスターの自動スケーリングの動作とパフォーマンスをモニタリングします。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| KEDA オペレーターメトリクス | [https://keda.sh/docs/2.17/integrations/prometheus/\$1operator](https://keda.sh/docs/2.17/integrations/prometheus/#operator) を参照してください。 | いいえ | Kubernetes イベント駆動型オートスケーラー (KEDA) | 
| KEDA Webhook メトリクス | [https://keda.sh/docs/2.17/integrations/prometheus/\$1admission-webhooks](https://keda.sh/docs/2.17/integrations/prometheus/#admission-webhooks) を参照してください。 | いいえ | Kubernetes イベント駆動型オートスケーラー (KEDA) | 
| KEDA メトリクスサーバーのメトリクス | [https://keda.sh/docs/2.17/integrations/prometheus/\$1metrics-server](https://keda.sh/docs/2.17/integrations/prometheus/#metrics-server) を参照してください。 | いいえ | Kubernetes イベント駆動型オートスケーラー (KEDA) | 

## クラスターメトリクス
<a name="hyperpod-observability-cluster-health-metrics"></a>

これらのメトリクスを使用して、クラスター全体のヘルスとリソース割り当てをモニタリングします。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| クラスターヘルス | 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 Advanced | [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>

これらのメトリクスを使用して、個々のインスタンスのパフォーマンスとヘルスをモニタリングします。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| ノードのメトリクス | [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 パーティションの使用 HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| 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 (advanced)  | 次の 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) のパフォーマンスとヘルスをモニタリングします。


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| 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>


| メトリクス名またはタイプ | 説明 | デフォルトで有効 | メトリクスソース | 
| --- | --- | --- | --- | 
| ファイルシステム | Amazon FSx for Lustre CloudWatch メトリクスを使用する方法:[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. **[WorkSpaces]** テーブルで、ワークスペースを選択します。

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 オブザーバビリティアドオンが表示され、そのステータスが **[アクティブ]** であることを検証します。

1. ステータスが **[アクティブ]** でない場合は、「」を参照してください[アドオンのインストール失敗のトラブルシューティング](#troubleshooting-addon-installation-failures)。

### Pod Identity の関連付けを検証する
<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 Identity の関連付け]** テーブルで、次のプロパティ値を持つ関連付けを選択します。
   + **名前空間**: `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://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. ヘルスの問題が認証情報またはポッド ID に関連している場合は、「[Pod Identity の関連付けを検証する](#verify-pod-identity-association)」を参照してください。また、ポッド ID エージェントのアドオンがクラスターで実行されていることを確認します。

1. マネージャーログにエラーがないか確認します。手順については、「[マネージャーログを確認する](#review-manager-logs)」を参照してください。

1. 問題の詳細については、 AWS サポートにお問い合わせください。

### マネージャーログを確認する
<a name="review-manager-logs"></a>

1. アドオンマネージャーポッドを取得します。

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

1. 緊急の問題については、 サポートにお問い合わせください。

## すべてのオブザーバビリティポッドを確認する
<a name="review-all-observability-pods"></a>

SageMaker HyperPod オブザーバビリティアドオンが作成するすべてのポッドは、`hyperpod-observability` 名前空間にあります。次のコマンドを実行して、デプロイのステータスを取得します。

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

ステータスが `pending` または `crashloopbackoff` のポッドを探します。次のコマンドを実行して、保留中または失敗したポッドのログを取得します。

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

ログにエラーが見つからない場合は、次のコマンドを実行してポッドを説明し、エラーを探します。

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

さらにコンテキストを取得するには、次の 2 つのコマンドを実行して、これらのポッドのデプロイとデーモンセットについて説明します。

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

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

## 保留中のステータスのままになっているポッドのトラブルシューティング
<a name="pods-stuck-in-pending"></a>

`pending` ステータスのままになっているポッドがある場合は、ノードがすべてのポッドに収まるサイズであることを確認します。検証するには、次の手順を実行します。

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. 使用可能なポッドがない場合は、よりサイズの大きいインスタンスタイプが必要です。

緊急の問題については、 AWS サポートにお問い合わせください。

## 制限付きインスタンスグループのオブザーバビリティのトラブルシューティング
<a name="troubleshooting-rig-observability"></a>

制限されたインスタンスグループを持つクラスターに固有の問題を解決するには、次のガイダンスを使用します。

### 制限付きノードで起動しないオブザーバビリティポッド
<a name="troubleshooting-rig-pods-not-starting"></a>

オブザーバビリティポッドが制限付きノードで起動しない場合は、ポッドのステータスとイベントを確認します。

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

一般的な原因には、以下が含まれます。
+ **イメージプルの失敗:** オブザーバビリティコンテナイメージが制限付きノードにまだ許可リストに登録されていない場合、ポッドイベントにイメージプルエラーが表示されることがあります。オブザーバビリティアドオンの最新バージョンが実行されていることを確認します。アップグレード後も問題が解決しない場合は、 にお問い合わせください サポート。
+ **テイント許容値:** ポッド仕様に、制限されたノードに必要な許容値が含まれていることを確認します。バージョン 以降のアドオンでは、RIG サポートが有効になっている場合、この許容値`v1.0.5-eksbuild.1`が自動的に追加されます。古いバージョンを使用している場合は、最新バージョンにアップグレードしてください。

### 制限付きノードでのポッドのログの表示
<a name="troubleshooting-rig-viewing-logs"></a>

`kubectl logs` コマンドは、制限されたノードで実行されているポッドでは機能しません。これは、ログストリーミングに必要な通信パスが制限付きノードで使用できないため、予想される制限です。

制限されたノードからのログを表示するには、CloudWatch **Logs に直接クエリを実行する Amazon Managed Grafana のクラスター**ログダッシュボードを使用します。インスタンス ID、ログストリーム、ログレベル、およびフリーテキスト検索でフィルタリングして、関連するログエントリを検索できます。

### 標準ノードと制限付きノードの両方を持つクラスターでの DNS 解決の失敗
<a name="troubleshooting-rig-dns-resolution"></a>

ハイブリッドクラスター (標準インスタンスグループと制限付きインスタンスグループの両方を持つクラスター) では、Amazon Managed Service for Prometheus や CloudWatch などの AWS サービスエンドポイントに到達しようとすると、標準ノードのポッドで DNS 解決タイムアウトが発生することがあります。

**原因:** `kube-dns`サービスには、標準の CoreDNS ポッドと RIG CoreDNS ポッドの両方からのエンドポイントがあります。ネットワーク分離のため、標準ノードポッドは RIG CoreDNS エンドポイントに到達できません。が標準ノードポッドから RIG CoreDNS エンドポイントへの DNS リクエストを`kube-proxy`ロードバランシングすると、リクエストはタイムアウトします。

**解決策:** ポッドがローカルノード`internalTrafficPolicy: Local`の CoreDNS にのみ到達するように、 `kube-dns`サービスで を設定します。

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

このパッチを適用したら、影響を受けるオブザーバビリティポッドを再起動します。

```
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. **ノードコレクターポッドのステータスを確認します。**次のコマンドを実行し、ノードコレクターポッドが制限付きノードで実行されていることを確認します。

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

1. **中央コレクターのデプロイを確認します。**ノードが制限されているクラスターでは、アドオンはネットワーク境界ごとに 1 つの中央コレクターをデプロイします。各境界に中央コレクターが存在することを確認します。

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

1. **ポッドイベントにエラーがないか確認します。**コレクターポッド`kubectl describe`で を使用してエラーイベントを検索します。

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

上記の検証後も問題が解決しない場合は、 にお問い合わせください サポート。

### Pod Identity 検証は制限されたインスタンスグループノードには適用されません
<a name="troubleshooting-rig-pod-identity"></a>

[Pod Identity の関連付けを検証する](#verify-pod-identity-association) トラブルシューティング手順は、標準ノードにのみ適用されます。制限されたノードでは、アドオンは Amazon EKS Pod Identity の代わりにクラスターインスタンスグループ実行ロールを AWS 認証に使用します。制限されたノードにメトリクスがない場合は、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 Observability EKS アドオンまたは Helm チャートを使用して CloudWatch エージェントをインストールする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html)」の手順に従って CloudWatch Container Insights を設定する必要があります。Amazon EKS アドオンの詳細については、「*Amazon EKS ユーザーガイド*」の「[Amazon CloudWatch Observability EKS アドオンのインストール](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-addon.html)」も参照してください。

インストールが完了したら、CloudWatch Observability アドオンが [Amazon 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/ja_jp/sagemaker/latest/dg/images/hyperpod-eks-CIaddon.png)


# CloudWatch コンテナインサイトダッシュボードにアクセスする
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-access-dashboard"></a>

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. **[Insights]** を選択し、**[Container Insights]** を選択します。

1. 使用している HyperPod クラスターでセットアップされている EKS クラスターを選択します。

1. ポッド/クラスターレベルのメトリクスを表示します。

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


## CloudWatch コンテナインサイトログにアクセスする
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-access-log"></a>

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. [**Logs**] を選択し、**ロググループ**を選択します。

HyperPod クラスターを Amazon CloudWatch Container Insights と統合すると、関連するロググループに `/aws/containerinsights /<eks-cluster-name>/*` の形式でアクセスできます。このロググループ内では、パフォーマンスログ、ホストログ、アプリケーションログ、データプレーンログなど、さまざまなタイプのログを検索および調査できます。