Monitorizar o estado de funcionamento do sistema com o Node Problem Detector

A partir da versão 77, o SO otimizado para contentores inclui o agente Node Problem Detector. Pode usar esta funcionalidade para monitorizar o estado de funcionamento do sistema das instâncias do COS. O Node Problem Detector monitoriza o estado da instância e comunica métricas relacionadas com o estado ao Cloud Monitoring, incluindo métricas de capacidade e de erro que pode, em seguida, visualizar com os painéis de controlo do Google Cloud Observability. As métricas recolhidas a partir da configuração predefinida são gratuitas. A Google vai usar métricas agregadas para compreender os problemas dos nós e melhorar a fiabilidade do SO otimizado para contentores.

O agente está pré-configurado com o conjunto de métricas a exportar. De momento, a personalização das métricas comunicadas para o agente incorporado não é suportada. O Node Problem Detector é um software de código aberto. Pode rever o respetivo código-fonte e configurações nos respetivos repositórios de origem.

Ativar a monitorização do estado

O agente Node Problem Detector está desativado por predefinição no momento do arranque. Pode ativar esta funcionalidade através de:

Usar um script de arranque

Pode ativar o Node Problem Detector através de um script de arranque.

Usar o cloud-init

O exemplo cloud-init explica as noções básicas da configuração de uma instância do SO otimizado para contentores. Pode usar cloud-init para ativar a monitorização do estado com o seguinte cloud-config exemplo:

#cloud-config

runcmd:
- systemctl start node-problem-detector

Usar metadados

No SO otimizado para contentores Milestone 88 e posterior, o Node Problem Detector também pode ser ativado definindo o valor de google-monitoring-enabled como true na secção de metadados personalizados.

Para ativar a monitorização ao criar uma instância:

gcloud compute instances create VM_NAME \
    --image=IMAGE \
    --image-project=cos-cloud \
    --metadata=google-monitoring-enabled=true

Substitua o seguinte:

  • VM_NAME: nome da nova VM
  • IMAGE: uma versão específica de uma imagem pública do SO otimizado para contentores. Por exemplo, --image=cos-113-18244-85-29.

Para ativar a monitorização numa instância existente:

gcloud compute instances add-metadata VM_NAME \
    --metadata=google-monitoring-enabled=true

Substitua VM_NAME pelo nome da VM.

A partir do marco 97, a monitorização pode ser ativada nos metadados do projeto:

gcloud compute project-info add-metadata \
    --metadata google-monitoring-enabled=true

Após a execução, o serviço node-problem-detector é ativado.

Usar políticas de convidados definidas pelo utilizador

O SO otimizado para contentores inclui o agente de configuração do SO, que usa utilitários do sistema do SO para manter o estado da VM especificado na política de convidado. Para ver detalhes sobre as políticas de convidados, consulte os artigos Ative o agente de configuração do SO e Crie uma política de convidados. A seguinte política de hóspedes ativa o agente Node problem detector em todas as instâncias.

recipes:
- name: recipe-enable-npd
  desiredState: INSTALLED
  installSteps:
  - scriptRun:
      interpreter: SHELL
      script: |-
        #!/bin/bash
        systemctl start node-problem-detector

Ver as métricas recolhidas

O Node Problem Detector comunica uma lista de métricas em relação a um recurso monitorizado da instância do Compute Engine. As métricas estão documentadas na lista de métricas de monitorização, com o prefixo compute.googleapis.com/guest/. Pode ver as métricas recolhidas através do Explorador de métricas de monitorização:

  1. Na Google Cloud consola, aceda a Monitorização ou use o seguinte botão:

    Aceder a Monitorização

  2. No painel de navegação Monitorização, clique em Explorador de métricas.

  3. Para o tipo de recurso, selecione Instância de VM do Compute Engine.

  4. Selecione uma métrica, por exemplo, "Número de problemas".

  5. Deve ver gráficos e estatísticas no lado direito. Para ver o resultado de uma instância específica do SO otimizado para contentores, defina o filtro como "instance_id=[INSTANCE_ID]", substituindo [INSTANCE_ID] pelo ID da instância pretendida.

Desativar a monitorização do estado

Para desativar o serviço que já foi ativado através do cloud-config ou através do script de arranque, remova o passo systemctl start node-problem-detector e, em seguida, reinicie a instância do Container-Optimized OS. Se estiver ativada por metadados, certifique-se de que a chave google-monitoring-enabled está definida como false.