학습 클러스터는 노드에서 자동화된 상태 점검 을 실행하고 점검이 실패하면 개입합니다. 예를 들어 치명적인 XID 오류를 식별하면 노드를 드레이닝하고 영향을 받는 Slurm 작업을 다시 대기열에 추가하고 노드를 다시 만들 수 있습니다. 이러한 각 개입은 프로젝트의 로그에 복원력 이벤트 로 기록됩니다.
이 페이지에서는 컴퓨팅 노드의 Slurm 상태 옆에 이러한 복원력 이벤트를 차트로 표시하는 커스텀 Cloud Monitoring 대시보드를 빌드하는 방법을 보여줍니다. 이렇게 하면 서비스에서 수행한 복구 작업과 클러스터 상태 간의 상관관계를 확인할 수 있습니다. 대시보드에는 다음 두 가지 차트가 있습니다.
- Slurm 노드 상태: 시간 경과에 따른 각 Slurm 상태의 노드 수입니다.
hypercomputecluster.googleapis.com/slurm/node_state측정항목에서 가져온 것입니다. - 복원력 이벤트: 다음 섹션에서 만드는 로그 기반 측정항목에서 가져온 이벤트 유형별로 분류된 복원력 이벤트 수입니다.
시작하기 전에
Google Cloud CLI를 설치하고 초기화한 후 학습 클러스터가 포함된 프로젝트를 설정합니다.
gcloud auth login gcloud config set project PROJECT_ID
PROJECT_ID를 프로젝트의 ID로 바꿉니다.
필요한 역할
로그 기반 측정항목과 대시보드를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
로그 기반 측정항목 만들기:
로그 구성 작성자 (
roles/logging.configWriter) -
대시보드 만들기:
모니터링 대시보드 구성 편집자 (
roles/monitoring.dashboardEditor)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이렇게 사전 정의된 역할에는 로그 기반 측정항목과 대시보드를 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
로그 기반 측정항목과 대시보드를 만들려면 다음 권한이 필요합니다.
-
로그 기반 측정항목 만들기:
logging.logMetrics.create -
대시보드 만들기:
monitoring.dashboards.create
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
로그 기반 측정항목 만들기
복원력 이벤트는 프로젝트의 로그에 기록되며 각 이벤트에는 RESILIENCE_EVENT_TYPE_ 접두사가 붙은 event_type 라벨이 있습니다. 로그 탐색기에서 원시 이벤트를 보려면 다음 쿼리를 사용하세요.
labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"
Cloud Monitoring은 로그 항목을 직접 차트로 표시할 수 없으므로 먼저 이 쿼리를 로그 기반 측정항목으로 전환합니다.
다음 구성을
resilience_metric.yaml이라는 파일에 저장합니다.name: training_cluster_resilience_events description: "Resilience events on training cluster nodes (VM instances)." filter: 'resource.type="gce_instance" AND labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"' metricDescriptor: metricKind: DELTA valueType: INT64 unit: "1" labels: - key: cluster_id valueType: STRING description: "The ID of the training cluster." - key: event_type valueType: STRING description: "The type of resilience event." - key: slurm_job_name valueType: STRING description: "The name of the Slurm job that triggered the resilience event, if applicable." - key: slurm_job_id valueType: STRING description: "The ID of the Slurm job that triggered the resilience event, if applicable." - key: slurm_job_partition valueType: STRING description: "The partition that the resilience event acts on." labelExtractors: cluster_id: "EXTRACT(labels.cluster_id)" event_type: "EXTRACT(labels.event_type)" slurm_job_name: "EXTRACT(labels.slurm_job_name)" slurm_job_id: "EXTRACT(labels.slurm_job_id)" slurm_job_partition: "EXTRACT(labels.slurm_job_partition)"labelExtractors필드는 각 로그 항목의 라벨을 측정항목에 복사하므로 이벤트 유형, 클러스터 또는 Slurm 작업별로 차트를 분류할 수 있습니다.측정항목을 만듭니다.
gcloud logging metrics create training_cluster_resilience_events \ --config-from-file=resilience_metric.yaml측정항목이 있는지 확인합니다.
gcloud logging metrics describe training_cluster_resilience_events콘솔의 Cloud de Confiance ** 로그 기반 측정항목** 페이지에서 측정항목을 확인할 수도 있습니다.
대시보드 만들기
다음 구성을
resilience_dashboard.json이라는 파일에 저장합니다.{ "displayName": "Training Clusters Resilience Dashboard", "mosaicLayout": { "columns": 48, "tiles": [ { "height": 16, "width": 24, "widget": { "title": "Slurm node states", "xyChart": { "chartOptions": { "mode": "COLOR" }, "dataSets": [ { "minAlignmentPeriod": "60s", "plotType": "LINE", "targetAxis": "Y1", "timeSeriesQuery": { "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_SUM", "groupByFields": [ "metric.label.\"state\"" ], "perSeriesAligner": "ALIGN_MEAN" }, "filter": "metric.type=\"hypercomputecluster.googleapis.com/slurm/node_state\" resource.type=\"gce_instance\"" } } } ], "yAxis": { "scale": "LINEAR" } } } }, { "yPos": 16, "height": 16, "width": 24, "widget": { "title": "Resilience events", "xyChart": { "chartOptions": { "mode": "COLOR" }, "dataSets": [ { "minAlignmentPeriod": "60s", "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_COUNT", "groupByFields": [ "metric.label.\"event_type\"" ], "perSeriesAligner": "ALIGN_COUNT" }, "filter": "metric.type=\"logging.googleapis.com/user/training_cluster_resilience_events\" resource.type=\"gce_instance\"" } } } ], "yAxis": { "scale": "LINEAR" } } } } ] } }이전 섹션에서 로그 기반 측정항목에 다른 이름을 지정한 경우
logging.googleapis.com/user/필터를 일치하도록 변경합니다.대시보드를 만듭니다.
gcloud monitoring dashboards create \ --config-from-file=resilience_dashboard.jsonCloud de Confiance 콘솔에서 대시보드 페이지로 이동한 후 내 대시보드에서 학습 클러스터 복원력 대시보드를 엽니다. 대시보드가 표시되는 데 약 1분이 걸릴 수 있습니다.
문제 해결
다음 섹션에서는 측정항목과 대시보드를 만든 후 발생할 가능성이 가장 높은 문제를 설명합니다.
'복원력 이벤트' 차트가 비어 있음
로그 기반 측정항목은 백필되지 않습니다. 측정항목을 만든 후 도착하는 로그 항목만 계산합니다. 로그 기반 측정항목 개요 에서 설명한 대로 측정항목은 이미 Cloud Logging에 있는 로그 항목의 데이터로 소급하여 채워지지 않습니다.
측정항목을 만든 후 복원력 이벤트가 발생했지만 차트가 여전히 비어 있는 경우 로그 탐색기에 이벤트가 있는지 확인하려면 로그 기반 측정항목 만들기의 쿼리를 실행합니다.
'Slurm 노드 상태' 차트에 일부 클러스터가 없음
hypercomputecluster.googleapis.com/slurm/node_state 측정항목은 최근 버전의 클러스터 소프트웨어를 실행하는 클러스터에서만 보고됩니다. 차트에
클러스터가 누락된 경우
클러스터를 업데이트한 후
차트를 다시 확인합니다.
'Slurm 노드 상태' 차트에 로그인 노드가 표시되지 않음
이는 정상적인 동작입니다. 로그인 노드에는 idle 또는 mixed와 같은 Slurm 상태가 없으므로 slurm/node_state 측정항목을 보고하지 않습니다.
'복원력 이벤트' 차트에서 이벤트가 과도하게 계산됨
Cloud Logging은 각 로그 항목을 한 번 이상 처리하므로 일시적인 내부 오류로 인해 항목이 두 번 이상 계산될 수 있습니다. 자세한 내용은 다음 로그 기반 측정항목 문제 해결을 참조하세요.
로그 항목 자체가 정보 소스입니다. 특정 기간의 정확한 수를 얻으려면 차트에서 읽는 대신 로그 탐색기에서 이벤트를 쿼리합니다.