Os clusters de treinamento executam verificações de integridade automatizadas nos nós e intervêm quando uma verificação falha. Por exemplo, ao identificar um erro fatal de XID, ele pode consumir o nó, enfileirar novamente o job do Slurm afetado e recriar o nó. Cada uma dessas intervenções é gravada nos registros do projeto como um evento de resiliência.
Nesta página, mostramos como criar um painel personalizado do Cloud Monitoring que representa esses eventos de resiliência ao lado do estado do Slurm dos nós de computação. Assim, você pode conferir quais ações de recuperação o serviço realizou e como elas se correlacionam com o estado do cluster. O painel tem dois gráficos:
- Estados do nó do Slurm: o número de nós em cada estado do Slurm ao longo do tempo,
extraído da métrica
hypercomputecluster.googleapis.com/slurm/node_state. - Eventos de resiliência: uma contagem de eventos de resiliência, divididos por tipo de evento, extraídos de uma métrica com base em registros criada na próxima seção.
Antes de começar
Instale e inicialize a Google Cloud CLI e defina o projeto que contém os clusters de treinamento:
gcloud auth login gcloud config set project PROJECT_ID
Substitua PROJECT_ID pelo ID do seu projeto.
Funções exigidas
Para receber as permissões necessárias para criar a métrica com base em registros e o painel, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Criar a métrica com base em registros:
Gravador de configuração de registros (
roles/logging.configWriter) -
Criar o painel:
editor de configuração do painel do Monitoring (
roles/monitoring.dashboardEditor)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para criar a métrica com base em registros e o painel. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar a métrica com base em registros e o painel:
-
Criar a métrica com base em registros:
logging.logMetrics.create -
Criar o painel:
monitoring.dashboards.create
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Criar a métrica com base em registros
Os eventos de resiliência são registrados nos registros do projeto, em que cada evento tem um rótulo event_type com o prefixo RESILIENCE_EVENT_TYPE_. Para conferir os eventos brutos na Análise de registros, use a seguinte consulta:
labels.event_type=~"RESILIENCE_EVENT_TYPE_.*"
O Cloud Monitoring não pode representar entradas de registro diretamente. Portanto, primeiro transforme essa consulta em uma métrica com base em registros.
Salve a configuração a seguir em um arquivo chamado
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)"O campo
labelExtractorscopia os rótulos de cada entrada de registro para a métrica, o que permite dividir o gráfico por tipo de evento, cluster ou job do Slurm.Crie a métrica:
gcloud logging metrics create training_cluster_resilience_events \ --config-from-file=resilience_metric.yamlVerifique se a métrica existe:
gcloud logging metrics describe training_cluster_resilience_eventsTambém é possível confirmar a métrica no Cloud de Confiance console na página Métricas com base em registros.
Criar o painel
Salve a configuração a seguir em um arquivo chamado
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" } } } } ] } }Se você deu um nome diferente à métrica com base em registros na seção anterior, mude o filtro
logging.googleapis.com/user/para corresponder.Crie o painel:
gcloud monitoring dashboards create \ --config-from-file=resilience_dashboard.jsonNo Cloud de Confiance console, acesse a página Painéis e, em Meus painéis, abra Painel de resiliência de clusters de treinamento. Pode levar cerca de um minuto para o painel aparecer.
Solução de problemas
As seções a seguir descrevem os problemas mais prováveis de ocorrer após a criação da métrica e do painel.
O gráfico "Eventos de resiliência" está vazio
Uma métrica com base em registros não é preenchida retroativamente. Ela só conta as entradas de registro que chegam depois que você cria a métrica. Como explica a visão geral das métricas com base em registros, uma métrica não é preenchida retroativamente com dados de entradas de registro que já estão no Cloud Logging.
Se eventos de resiliência ocorreram desde que você criou a métrica e o gráfico ainda está vazio, confirme se os eventos estão presentes na Análise de registros executando a consulta em Criar a métrica com base em registros.
O gráfico "Estados do nó do Slurm" não mostra alguns clusters
A métrica hypercomputecluster.googleapis.com/slurm/node_state é informada apenas por clusters que executam uma versão recente do software de cluster. Se um
cluster estiver ausente do gráfico,
atualize-o
e verifique o gráfico novamente.
O gráfico "Estados do nó do Slurm" não mostra nós de login
Isso já é esperado. Os nós de login não têm um estado do Slurm, como idle ou mixed, portanto, não informam a métrica slurm/node_state.
O gráfico "Eventos de resiliência" conta eventos em excesso
O Cloud Logging processa cada entrada de registro pelo menos uma vez. Portanto, um erro interno temporário pode fazer com que uma entrada seja contada mais de uma vez. Para mais informações, consulte Resolver problemas de métricas com base em registros.
As entradas de registro são a fonte da verdade. Para receber uma contagem exata de um período, consulte os eventos na Análise de registros em vez de lê-los no gráfico.