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

从里程碑 77 开始,Container-Optimized OS 包含 节点问题检测器 。您可以使用此功能来监控 COS 实例的系统运行状况。节点问题检测器监控实例健康状况并报告与健康状况相关的 上传到 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 VM_NAME \
    --image=IMAGE \
    --image-project=cos-cloud \
    --metadata=google-monitoring-enabled=true

替换以下内容:

  • VM_NAME: 新虚拟机的名称
  • IMAGE: 特定版本的公开 Container-Optimized OS 映像。例如 --image=cos-113-18244-85-29

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

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

VM_NAME 替换为虚拟机名称。

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

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

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

使用用户定义的访客政策

Container-Optimized OS 包含 OS Config 代理,该代理可使用操作系统实用程序来维护虚拟机的状态 。如需详细了解客机政策,请参阅启用 OS Config 代理创建客机政策。以下访客政策会在所有实例上启用 Node Problem Detector 代理。

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 或使用以下按钮:

    转至 Resources

  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