

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EKS에 의해 오케스트레이션된 Amazon SageMaker HyperPod 클러스터에 대한 관찰성
<a name="sagemaker-hyperpod-eks-cluster-observability"></a>

Amazon SageMaker HyperPod(SageMaker HyperPod) 클러스터 리소스 및 소프트웨어 구성 요소에 대한 포괄적인 관찰성을 달성하려면 클러스터를 [Amazon CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html), [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html) 및 [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html)와 통합합니다. 이러한 도구는 클러스터 상태, 성능 지표 및 리소스 사용률에 대한 가시성을 제공합니다.

Amazon Managed Service for Prometheus와의 통합을 통해 HyperPod 클러스터 리소스와 관련된 지표를 내보낼 수 있으므로 성능, 사용률 및 상태에 대한 인사이트를 얻을 수 있습니다. Amazon Managed Grafana와의 통합을 통해 클러스터의 동작을 모니터링하고 분석하기 위한 직관적인 인터페이스를 제공하는 다양한 Grafana 대시보드를 통해 이러한 지표를 시각화할 수 있습니다. 이러한 서비스를 활용하면 HyperPod 클러스터를 중앙 집중식으로 통합하여 분산 훈련 워크로드의 사전 모니터링, 문제 해결 및 최적화를 촉진할 수 있습니다.

**참고**  
CloudWatch, Amazon Managed Service for Prometheus 및 Amazon Managed Grafana는 운영 지표(예: 시스템 상태, 훈련 작업 성능)에 초점을 맞추고 있지만 SageMaker HyperPod 사용량 보고서는 [태스크 거버넌스](sagemaker-hyperpod-eks-operate-console-ui-governance.md)를 보완하여 재무 및 리소스 책임 인사이트를 제공합니다. 이러한 보고서는 다음을 추적합니다.  
네임스페이스/팀 전반의 컴퓨팅 사용률(GPU/CPU/Neuron Core 시간)
할당된 리소스와 차입한 리소스의 비용 어트리뷰션
감사 및 최적화에 대한 과거 추세(최대 180일)
사용량 보고서 설정 및 생성에 대한 자세한 내용은 [Reporting Compute Usage in HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html)를 참조하세요.

**작은 정보**  
실제 예시와 솔루션을 찾으려면 [Amazon EKS Support in SageMaker HyperPod workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e)의 [Observability](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e/en-US/06-observability) 섹션도 참조하세요.

다음 주제로 이동하여 SageMaker HyperPod 클러스터 관찰 가능성을 설정합니다.

**Topics**
+ [

# Amazon EKS에 의해 오케스트레이션된 SageMaker HyperPod 클러스터의 훈련 작업에 대한 관찰성
](sagemaker-hyperpod-eks-cluster-observability-model.md)
+ [

# 클러스터 및 작업 관찰성
](sagemaker-hyperpod-eks-cluster-observability-cluster.md)

# Amazon EKS에 의해 오케스트레이션된 SageMaker HyperPod 클러스터의 훈련 작업에 대한 관찰성
<a name="sagemaker-hyperpod-eks-cluster-observability-model"></a>

Amazon EKS로 오케스트레이션된 SageMaker HyperPod 클러스터는 [Amazon SageMaker Studio의 MLflow 애플리케이션](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html)과 통합할 수 있습니다. 클러스터 관리자는 MLflow 서버를 설정하고 이를 SageMaker HyperPod 클러스터와 연결합니다. 데이터 과학자는 모델에 대한 인사이트를 얻을 수 있습니다.

** AWS CLI를 사용하여 MLflow 서버를 설정하려면**

클러스터 관리자는 MLflow 추적 서버를 생성해야 합니다.

1. CLI를 사용하여 추적 서버 생성의 지침에 따라 SageMaker AI MLflow 추적 서버를 생성합니다. [AWS](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-cli.html#mlflow-create-tracking-server-cli-infra-setup) 

1. [https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html) 권한이 SageMaker HyperPod의 IAM 실행 역할에 있는지 확인합니다.

1. `eks-pod-identity-agent` 추가 기능이 EKS 클러스터에 아직 설치되지 않은 경우 EKS 클러스터에 추가 기능을 설치합니다.

   ```
   aws eks create-addon \
       --cluster-name <eks_cluster_name> \
       --addon-name eks-pod-identity-agent \
       --addon-version vx.y.z-eksbuild.1
   ```

1. 포드가 MLflow API를 직접적으로 호출할 새 역할에 대한 `trust-relationship.json` 파일을 생성합니다.

   ```
   cat >trust-relationship.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
               "Effect": "Allow",
               "Principal": {
                   "Service": "pods.eks.amazonaws.com"
   
               },
               "Action": [
                   "sts:AssumeRole",
                   "sts:TagSession"
               ]
           }
       ]
   }
   EOF
   ```

   다음 코드를 실행하여 역할을 생성하고 신뢰 관계를 연결합니다.

   ```
   aws iam create-role --role-name hyperpod-mlflow-role \
       --assume-role-policy-document file://trust-relationship.json \
       --description "allow pods to emit mlflow metrics and put data in s3"
   ```

1. 포드에 모든 `sagemaker-mlflow` 작업을 직접적으로 호출하고 S3에 모델 아티팩트를 넣을 수 있는 액세스 권한을 부여하는 다음 정책을 생성합니다. 추적 서버 내에 S3 권한이 이미 있지만 모델 아티팩트가 너무 큰 경우 MLflow 코드에서 s3를 직접 호출하여 아티팩트를 업로드합니다.

   ```
   cat >hyperpod-mlflow-policy.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker-mlflow:AccessUI",
                   "sagemaker-mlflow:CreateExperiment",
                   "sagemaker-mlflow:SearchExperiments",
                   "sagemaker-mlflow:GetExperiment",
                   "sagemaker-mlflow:GetExperimentByName",
                   "sagemaker-mlflow:DeleteExperiment",
                   "sagemaker-mlflow:RestoreExperiment",
                   "sagemaker-mlflow:UpdateExperiment",
                   "sagemaker-mlflow:CreateRun",
                   "sagemaker-mlflow:DeleteRun",
                   "sagemaker-mlflow:RestoreRun",
                   "sagemaker-mlflow:GetRun",
                   "sagemaker-mlflow:LogMetric",
                   "sagemaker-mlflow:LogBatch",
                   "sagemaker-mlflow:LogModel",
                   "sagemaker-mlflow:LogInputs",
                   "sagemaker-mlflow:SetExperimentTag",
                   "sagemaker-mlflow:SetTag",
                   "sagemaker-mlflow:DeleteTag",
                   "sagemaker-mlflow:LogParam",
                   "sagemaker-mlflow:GetMetricHistory",
                   "sagemaker-mlflow:SearchRuns",
                   "sagemaker-mlflow:ListArtifacts",
                   "sagemaker-mlflow:UpdateRun",
                   "sagemaker-mlflow:CreateRegisteredModel",
                   "sagemaker-mlflow:GetRegisteredModel",
                   "sagemaker-mlflow:RenameRegisteredModel",
                   "sagemaker-mlflow:UpdateRegisteredModel",
                   "sagemaker-mlflow:DeleteRegisteredModel",
                   "sagemaker-mlflow:GetLatestModelVersions",
                   "sagemaker-mlflow:CreateModelVersion",
                   "sagemaker-mlflow:GetModelVersion",
                   "sagemaker-mlflow:UpdateModelVersion",
                   "sagemaker-mlflow:DeleteModelVersion",
                   "sagemaker-mlflow:SearchModelVersions",
                   "sagemaker-mlflow:GetDownloadURIForModelVersionArtifacts",
                   "sagemaker-mlflow:TransitionModelVersionStage",
                   "sagemaker-mlflow:SearchRegisteredModels",
                   "sagemaker-mlflow:SetRegisteredModelTag",
                   "sagemaker-mlflow:DeleteRegisteredModelTag",
                   "sagemaker-mlflow:DeleteModelVersionTag",
                   "sagemaker-mlflow:DeleteRegisteredModelAlias",
                   "sagemaker-mlflow:SetRegisteredModelAlias",
                   "sagemaker-mlflow:GetModelVersionByAlias"
               ],
               "Resource": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-tracking-server/<ml tracking server name>"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::<mlflow-s3-bucket_name>"
           }
       ]
   }
   EOF
   ```
**참고**  
ARN은 [Set up MLflow infrastructure](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-cli.html#mlflow-create-tracking-server-cli-infra-setup)의 지침에 따라 생성한 서버 중에 MLflow 서버로 설정된 S3 버킷과 MLflow 서버의 ARN입니다.

1. 이전 단계에서 저장한 정책 문서를 사용하여 `mlflow-metrics-emit-policy` 정책을 `hyperpod-mlflow-role`에 연결합니다.

   ```
   aws iam put-role-policy \
     --role-name hyperpod-mlflow-role \
     --policy-name mlflow-metrics-emit-policy \
     --policy-document file://hyperpod-mlflow-policy.json
   ```

1. 포드가 MLflow 서버에 액세스할 수 있도록 Kubernetes 서비스 계정을 생성합니다.

   ```
   cat >mlflow-service-account.yaml <<EOF
   apiVersion: v1
   kind: ServiceAccount
   metadata:
     name: mlflow-service-account
     namespace: kubeflow
   EOF
   ```

   다음 명령을 실행하여 EKS 클러스터에 적용합니다.

   ```
   kubectl apply -f mlflow-service-account.yaml
   ```

1. Pod Identity 연결을 생성합니다.

   ```
   aws eks create-pod-identity-association \
       --cluster-name EKS_CLUSTER_NAME \
       --role-arn arn:aws:iam::111122223333:role/hyperpod-mlflow-role \
       --namespace kubeflow \
       --service-account mlflow-service-account
   ```

**훈련 작업에서 MLflow 서버로 지표를 수집하는 방법**

데이터 과학자는 MLflow 서버에 지표를 내보내기 위해 훈련 스크립트와 Docker 이미지를 설정해야 합니다.

1. 훈련 스크립트의 시작 부분에 다음 줄을 추가합니다.

   ```
   import mlflow
   
   # Set the Tracking Server URI using the ARN of the Tracking Server you created
   mlflow.set_tracking_uri(os.environ['MLFLOW_TRACKING_ARN'])
   # Enable autologging in MLflow
   mlflow.autolog()
   ```

1. 훈련 스크립트를 사용하여 Docker 이미지를 구축하고 Amazon ECR로 푸시합니다. ECR 컨테이너의 ARN을 가져옵니다. Docker 이미지 구축 및 푸시에 대한 자세한 내용은 *ECR 사용 설명서*의 [Pushing a Docker image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)를 참조하세요.
**작은 정보**  
Docker 파일에 mlflow 및 sagemaker-mlflow 패키지의 설치를 추가해야 합니다. 패키지 설치, 요구 사항 및 호환되는 패키지 버전에 대한 자세한 내용은 [Install MLflow and the SageMaker AI MLflow plugin](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-track-experiments.html#mlflow-track-experiments-install-plugin)을 참조하세요.

1. 훈련 작업 포드에 서비스 계정을 추가하여 `hyperpod-mlflow-role`에 대한 액세스 권한을 부여합니다. 이렇게 하면 포드가 MLflow API를 직접적으로 호출할 수 있습니다. 다음 SageMaker HyperPod CLI 작업 제출 템플릿을 실행합니다. 파일 이름 `mlflow-test.yaml`로 생성합니다.

   ```
   defaults:
    - override hydra/job_logging: stdout
   
   hydra:
    run:
     dir: .
    output_subdir: null
   
   training_cfg:
    entry_script: ./train.py
    script_args: []
    run:
     name: test-job-with-mlflow # Current run name
     nodes: 2 # Number of nodes to use for current training
     # ntasks_per_node: 1 # Number of devices to use per node
   cluster:
    cluster_type: k8s # currently k8s only
    instance_type: ml.c5.2xlarge
    cluster_config:
     # name of service account associated with the namespace
     service_account_name: mlflow-service-account
     # persistent volume, usually used to mount FSx
     persistent_volume_claims: null
     namespace: kubeflow
     # required node affinity to select nodes with SageMaker HyperPod
     # labels and passed health check if burn-in enabled
     label_selector:
         required:
             sagemaker.amazonaws.com/node-health-status:
                 - Schedulable
         preferred:
             sagemaker.amazonaws.com/deep-health-check-status:
                 - Passed
         weights:
             - 100
     pullPolicy: IfNotPresent # policy to pull container, can be Always, IfNotPresent and Never
     restartPolicy: OnFailure # restart policy
   
   base_results_dir: ./result # Location to store the results, checkpoints and logs.
   container: 111122223333.dkr.ecr.us-west-2.amazonaws.com/tag # container to use
   
   env_vars:
    NCCL_DEBUG: INFO # Logging level for NCCL. Set to "INFO" for debug information
    MLFLOW_TRACKING_ARN: arn:aws:sagemaker:us-west-2:11112223333:mlflow-tracking-server/tracking-server-name
   ```

1. 다음과 같이 YAML 파일을 사용하여 작업을 시작합니다.

   ```
   hyperpod start-job --config-file /path/to/mlflow-test.yaml
   ```

1. MLflow 추적 서버에 대해 미리 서명된 URL을 생성합니다. 브라우저에서 링크를 열고 훈련 작업 추적을 시작할 수 있습니다.

   ```
   aws sagemaker create-presigned-mlflow-tracking-server-url \                          
       --tracking-server-name "tracking-server-name" \
       --session-expiration-duration-in-seconds 1800 \
       --expires-in-seconds 300 \
       --region region
   ```

# 클러스터 및 작업 관찰성
<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 사용 설명서*의 [Getting started with IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)를 참조하세요. Amazon Managed Grafana를 사용할 수 있는 AWS 리전 목록은 *Amazon Managed Grafana 사용 설명서*의 [Supported Regions](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html#AMG-supported-Regions)을 참조하세요.
+ IAM Identity Center에서 사용자를 한 명 이상 생성합니다.
+ [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 Management Console)](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 관찰성 추가 기능이 클러스터에서 이미 실행 중인 다른 포드와 함께 생성하는 모든 포드를 수용할 수 있도록 합니다.
+ 역할에 다음 정책 및 권한을 추가합니다.
  + [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 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"
        }
    ]
}
```

*us-east-1*, *account\$1id* 및 *workspace-ID*를 사용자 AWS 리전, 계정 ID 및 Amazon Managed Service for Prometheus 워크스페이스 ID로 바꿉니다.

위의 사전 조건을 충족했는지 확인한 후 관찰성 추가 기능을 설치할 수 있습니다.

**관찰성 추가 기능을 빠르게 설치하는 방법**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

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. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 클러스터의 세부 정보 페이지로 이동합니다.

1. **대시보드** 탭에서 **HyperPod 관찰성** 섹션을 찾아 **Grafana에서 대시보드 열기**를 선택합니다.

## Amazon Managed Grafana 작업 영역에 새 사용자 추가
<a name="hyperpod-observability-addon-adding-users"></a>

Amazon Managed Grafana 작업 영역에 사용자를 추가하는 방법에 대한 자세한 내용은 *Amazon Managed Grafana 사용 설명서*의 [Use AWS IAM Identity Center with your Amazon Managed Grafana workspace](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는 PromQL 표현식을 구축하기 위한 포괄적인 쿼리 편집기, 사용 가능한 지표 및 레이블을 검색하기 위한 지표 브라우저, 동적 대시보드를 생성하기 위한 템플릿 기능을 포함하여 Prometheus 데이터와 상호 작용하는 다양한 방법을 제공합니다. 범위 쿼리를 수행하여 기간별 시계열 데이터를 시각화하고 인스턴트 쿼리를 수행하여 최신 값을 검색할 수 있으며, 결과 형식을 시계열 그래프, 테이블 또는 히트맵으로 지정하는 옵션을 사용할 수 있습니다. 쿼리 설정 구성, 지표 브라우저 사용 및 템플릿 지정 기능 활용에 대한 자세한 내용은 [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 대시보드는 쿼리에서 하드 코딩된 값을 대체하는 변수를 통해 동적 기능을 지원하므로 시각화를 보다 유연하고 대화형으로 만들 수 있습니다. 주석, 재사용성을 위한 라이브러리 패널, 버전 기록 관리, 사용자 지정 링크와 같은 기능으로 대시보드를 개선하여 완벽한 모니터링 및 관찰성 솔루션을 만들 수도 있습니다. 대시보드 생성, 가져오기, 구성 및 관리에 대한 단계별 지침은 [Building dashboards](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)는 아홉 가지 개별 범주의 다양한 지표를 Amazon Managed Service for Prometheus 작업 영역에 게시합니다. 모든 지표가 기본적으로 활성화되거나 Amazon Managed Grafana 작업 영역에 표시되는 것은 아닙니다. 다음 표에는 관찰성 추가 기능을 설치할 때 기본적으로 활성화되는 지표, 더 세분화된 클러스터 정보를 위해 활성화할 수 있는 추가 지표가 있는 범주, Amazon Managed Grafana 작업 영역에서 표시되는 위치가 나와 있습니다.


| 지표 범주 | 기본 활성화 여부 | 추가 고급 지표 사용 가능 여부 | 지표가 표시되는 Grafana 대시보드 | 
| --- | --- | --- | --- | 
| 훈련 지표 | 예 | 예 | 학습 | 
| 추론 지표 | 예 | 아니요 | Inference | 
| 태스크 거버넌스 지표 | 아니요 | 예 | 없음. Amazon Managed Service for Prometheus 작업 영역을 쿼리하여 자체 대시보드를 구축합니다. | 
| 규모 조정 지표 | 아니요 | 예 | 없음. Amazon Managed Service for Prometheus 작업 영역을 쿼리하여 자체 대시보드를 구축합니다. | 
| 클러스터 지표 | 예 | 예 | Cluster | 
| 인스턴스 지표 | 예 | 예 | Cluster | 
| 가속 컴퓨팅 지표 | 예 | 예 | 작업, 클러스터 | 
| 네트워크 지표 | 아니요 | 예 | Cluster | 
| 파일 시스템 | 예 | 아니요 | 파일 시스템 | 

다음 표에서는 SageMaker HyperPod 클러스터를 모니터링하는 데 사용할 수 있는 지표를 설명하며, 지표가 범주별로 정리되어 있습니다.

## 제한된 인스턴스 그룹의 지표 가용성
<a name="hyperpod-observability-rig-metrics-availability"></a>

클러스터에 제한된 인스턴스 그룹이 포함된 경우 대부분의 지표 범주는 다음과 같은 예외 및 고려 사항을 제외하고 제한된 노드에서 사용할 수 있습니다. 선택한 지표에 대한 알림을 설정할 수도 있습니다.


| 지표 범주 | RIG 노드에서 사용할 수 있습니까? | 참고 | 
| --- | --- | --- | 
| 훈련 지표 | 예 | Kubeflow 및 Kubernetes 포드 지표가 수집됩니다. 고급 훈련 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 플랫폼을 통해 사용할 수 있습니다. 클러스터 로그 대시보드에서 이러한 로그를 볼 수 있습니다.

## 훈련 지표
<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 Event-driven Autoscaler(KEDA) | 
| KEDA 웹후크 지표 | [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>

이러한 지표를 사용하여 전체 클러스터 상태 및 리소스 할당을 모니터링합니다.


| 지표 이름 또는 유형 | 설명 | 기본 활성화 여부 | 지표 소스 | 
| --- | --- | --- | --- | 
| 클러스터 상태 | 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 파티션 사용](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(고급)  | 다음 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 훈련 | 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 Monitor | 

## 네트워크 지표
<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 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 사용 설명서*의 [Alerts in Grafana version 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 인증이 올바르게 구성되었는지 확인합니다.
   + **연결 테스트**를 선택합니다. 상태가 **데이터 소스가 작동 중**인지 확인합니다.

### 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 Management Console 하고 [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 Identity와 관련된 경우 [Pod Identity 연결 확인](#verify-pod-identity-association) 섹션을 참조하세요. 또한 Pod Identity 에이전트 추가 기능이 클러스터에서 실행 중인지 확인합니다.

1. 관리자 로그에 오류가 있는지 확인합니다. 지침은 [관리자 로그 검토](#review-manager-logs) 섹션을 참조하세요.

1. 문제 세부 정보는 AWS Support에 문의하세요.

### 관리자 로그 검토
<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
```

컨텍스트를 더 가져오려면 다음 두 명령을 실행하여 이러한 포드의 배포 및 대몬 세트를 설명합니다.

```
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 Support에 문의하세요.

## 제한된 인스턴스 그룹의 관찰성 문제 해결
<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. **중앙 수집기 배포를 확인합니다.** 노드가 제한된 클러스터에서 추가 기능은 네트워크 경계당 하나의 중앙 수집기를 배포합니다. 각 경계에 대해 중앙 수집기가 존재하는지 확인합니다.

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

1. **포드 이벤트에 오류가 있는지 확인합니다.** 수집기 포드`kubectl describe`에서를 사용하여 오류 이벤트를 찾습니다.

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

위의 내용을 확인한 후에도 문제가 지속되면에 문의하십시오 지원.

### 제한된 인스턴스 그룹 노드에는 포드 자격 증명 확인이 적용되지 않습니다.
<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 추가 기능 또는 헬름 차트를 사용하여 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)를 참조하세요.

설치가 완료되면 EKS 클러스터 추가 기능 탭에 CloudWatch Observability 추가 기능이 표시되는지 확인합니다. 대시보드가 로드될 때까지 몇 분 정도 걸릴 수 있습니다.

**참고**  
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/ko_kr/sagemaker/latest/dg/images/hyperpod-eks-CIaddon.png)


# CloudWatch 컨테이너 인사이트 대시보드 액세스
<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. **인사이트**를 선택한 다음 **컨테이너 인사이트**를 선택합니다.

1. 사용 중인 HyperPod 클러스터가 설정된 EKS 클러스터를 선택합니다.

1. 포드/클러스터 수준 지표를 봅니다.

![\[Performance monitoring dashboard for EKS 클러스터 showing node status, resource utilization, and pod metrics.\]](http://docs.aws.amazon.com/ko_kr/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. **로그**를 선택한 후 **로그 그룹**을 선택합니다.

HyperPod 클러스터가 Amazon CloudWatch Container Insights와 통합되면 `/aws/containerinsights /<eks-cluster-name>/*` 형식으로 관련 로그 그룹에 액세스할 수 있습니다. 이 로그 그룹 내에서 성능 로그, 호스트 로그, 애플리케이션 로그 및 데이터 플레인 로그와 같은 다양한 유형의 로그를 찾고 탐색할 수 있습니다.