使用 Node Problem Detector 监控系统运行状况

从 Milestone 77 开始,Container-Optimized OS 包含 Node Problem Detector 代理。您可以使用此功能来监控 COS 实例的系统运行状况。Node Problem Detector 监控实例运行状况,并向 Cloud Monitoring 报告与运行状况相关的指标,包括容量和错误指标,然后您可以通过 Google Cloud Observability 信息中心直观呈现这些指标。从默认配置收集的指标是免费的。Google 将使用汇总指标来了解节点问题并提高 Container-Optimized OS 的可靠性。

代理已预先配置了一组要导出的指标。目前不支持为内置代理自定义报告指标。Node Problem Detector 是一种开源软件。您可以在各自的源代码库中查看其源代码配置

启用运行状况监控

默认情况下,Node Problem Detector 代理在启动时处于停用状态。您可以使用以下代码启用此功能:

使用启动脚本

您可以使用启动脚本来启用节点问题检测器。

使用 cloud-init

cloud-init 示例介绍了配置 Container-Optimized OS 实例的基础知识。您可以使用 cloud-init 通过以下 cloud-config 示例启用运行状况监控功能:

#cloud-config

runcmd:
- systemctl start node-problem-detector

使用元数据

在 Container-Optimized OS 里程碑 88 及更高版本中,您还可以在自定义元数据部分中将 google-monitoring-enabled 的值设置为 true,从而启用节点问题检测器。

如需在创建实例时启用监控功能,请运行以下命令:

gcloud compute instances create instance-name \
    --image-family cos-stable \
    --image-project cos-cloud \
    --metadata google-monitoring-enabled=true

如需在现有实例中启用监控功能,请运行以下命令:

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

里程碑 97 开始,可以在项目元数据中启用监控:

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

执行后,将启用 node-problem-detector 服务。

使用用户定义的访客政策

Container-Optimized OS 包含 OS Config 代理,该代理使用操作系统系统实用程序来维护客机政策中指定的虚拟机的状态。如需详细了解访客政策,请参阅启用 OS Config 代理创建访客政策。以下客机政策会在所有实例上启用节点问题检测器代理。

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

查看收集的指标

Node Problem Detector 会报告针对 Compute Engine 实例受监控的资源的指标列表。这些指标记录在 Monitoring 指标列表中,其前缀为 compute.googleapis.com/guest/。您可以使用 Monitoring Metrics Explorer 查看收集的指标:

  1. 在 Google Cloud 控制台中,转到 Monitoring 或使用以下按钮:

    进入 Monitoring

  2. 在 Monitoring 导航窗格中,点击 Metrics Explorer

  3. 对于资源类型,选择 Compute Engine 虚拟机实例

  4. 选择一个指标,例如“Problem Count”。

  5. 您应该在右侧看到图表和统计信息。如需查看特定 Container-Optimized OS 实例的结果,请将过滤条件设置为 "instance_id=[INSTANCE_ID]",并将 [INSTANCE_ID] 替换为所需实例的 ID。

停用运行状况监控

如需停用已通过 cloud-config启动脚本启用的服务,请移除 systemctl start node-problem-detector 步骤,然后重新启动 Container-Optimized OS 实例。如果服务是通过使用元数据启用的,请确保将 google-monitoring-enabled 键设置为 false