訓練叢集會對節點執行自動健康狀態檢查,並在檢查失敗時介入處理。舉例來說,如果偵測到致命的 XID 錯誤,可能會排空節點、重新排隊受影響的 Slurm 工作,並重新建立節點。這些干預措施都會以復原事件的形式,寫入專案記錄。
本頁說明如何建構自訂 Cloud Monitoring 資訊主頁,在運算節點的 Slurm 狀態旁繪製這些復原事件的圖表,方便您查看服務採取的復原動作,以及這些動作與叢集狀態的關聯。這個資訊主頁包含兩種圖表:
- 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) -
建立資訊主頁:
Monitoring 資訊主頁設定編輯器 (
roles/monitoring.dashboardEditor)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備建立記錄指標和資訊主頁所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要建立記錄指標和資訊主頁,您必須具備下列權限:
-
建立記錄指標:
logging.logMetrics.create -
建立資訊主頁:
monitoring.dashboards.create
建立記錄指標
復原事件會記錄在專案的記錄中,每個事件都帶有以 RESILIENCE_EVENT_TYPE_ 為前置字元的 event_type 標籤。如要在 Logs Explorer 中查看原始事件,請使用下列查詢:
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.json在 Cloud de Confiance 控制台中,前往 「資訊主頁」頁面,然後在 「我的資訊主頁」下方開啟「訓練叢集復原資訊主頁」。資訊主頁可能需要約一分鐘才會顯示。
疑難排解
下列各節說明建立指標和資訊主頁後,最有可能遇到的問題。
「韌性事件」圖表為空白
系統不會回填記錄指標。系統只會計算之後收到的記錄項目。如記錄指標總覽所述,系統不會將已在 Cloud Logging 中的記錄項目資料填入指標。
如果自您建立指標後發生過復原事件,但圖表仍為空白,請在「記錄檔總管」中執行「建立記錄指標」中的查詢,確認事件是否在其中。
「Slurm 節點狀態」圖表缺少部分叢集
只有執行最新叢集軟體版本的叢集,才會回報 hypercomputecluster.googleapis.com/slurm/node_state 指標。如果圖表中缺少叢集,請更新叢集,然後再次檢查圖表。
「Slurm 節點狀態」圖表不會顯示登入節點
這是可預期的情況,登入節點沒有 Slurm 狀態 (例如 idle 或 mixed),因此不會回報 slurm/node_state 指標。
「韌性事件」圖表會多算事件
Cloud Logging 至少會處理每個記錄項目一次,因此暫時性的內部錯誤可能會導致項目重複計算。詳情請參閱「排解記錄指標問題」。
記錄項目本身就是準確來源。如要取得特定時間範圍的確切計數,請在 Logs Explorer 中查詢事件,而非從圖表讀取。