Cloud TPU 监控和日志信息中心

Cloud TPU 监控和调试信息中心代码库包含监控和调试 TPU 虚拟机上运行的工作流所需的所有基础架构和逻辑。它需要使用 Terraform,这是一种开源工具,可使用配置文件定义和管理 Google Cloud基础架构。

监控信息中心

监控信息中心会显示以下 Cloud TPU 指标:

  • TPU 工作器上的 CPU 利用率:cpu/utilization
  • 按 TPU 虚拟机的内存用量:memory/usage
  • Pod 通过网络接收的网络字节数:network/received_bytes_count
  • Pod 通过网络发送的网络字节数:network/sent_bytes_count
  • TPU 芯片的 TensorCore 空闲时长:tpu/tensorcore/idle_duration

Cloud Monitoring 会自动生成指标数据。如需查看监控信息中心,请前往 Google Cloud 控制台,依次选择 MonitoringDashboards。在信息中心列表中,选择 GCE - TPU 监控信息中心。Cloud TPU 监控信息中心由多个窗格组成,每个窗格都会显示指标数据。对于每个 Cloud TPU 指标,信息中心会在单独的窗格中显示当前指标值、平均值和最大值。借助“平均值”和“最大值”窗格,您可以找出离群的 TPU 虚拟机以进行进一步调查。

您还可以使用 Cloud Monitoring Google Cloud 控制台中的 Metrics Explorer 查看 TPU 指标。如需了解详情,请参阅监控 Cloud TPU 虚拟机

Logging 信息中心

日志记录信息中心会显示两个部分:

  1. 日志指标:显示为每个 TPU VM 工作器收集的堆栈轨迹条目数。
  2. “日志”面板:显示所有堆栈轨迹条目,其中包含严重级别、时间戳和条目的摘要列。您可以按字符串或 TPU 工作器标签(例如 node_idworker_id)过滤此日志面板。例如,添加过滤条件 resource.labels.node_id:"testing" 会显示为 ID 设为“testing”的 TPU VM 工作器收集的所有轨迹条目。

Cloud Logging 会收集由服务、第三方服务、机器学习框架和您的代码生成的日志条目。 Google Cloud 您可以安装 cloud-tpu-diagnostics PyPi 软件包,以便在发生故障或异常或工作负载无响应时写入 Python 堆栈轨迹。如需了解详情,请参阅调试 Cloud TPU 虚拟机

如需查看日志信息中心,请前往 Google Cloud 控制台,依次选择 MonitoringDashboards。在信息中心列表中,选择 GCE - TPU Logging Dashboard

配置指标和日志记录信息中心

请按照以下说明配置指标和日志记录信息中心。

克隆信息中心代码库

您可以直接从 Cloud TPU 监控和调试 GitHub 代码库或命令行克隆代码库:

git clone https://github.com/google/cloud-tpu-monitoring-debugging.git

安装 Terraform

  1. 在本地机器上安装 Terraform
  2. 运行 terraform init 以添加必要的插件并创建 .terraform 目录。
  3. 运行 terraform init –upgrade 以安装所有可用更新。

配置监控和日志记录权限

您必须拥有 Monitoring Admin、Monitoring Dashboard Configuration Editor 和 Logging Admin 角色,才能将监控资源部署到您的 Google Cloud 项目。如需详细了解 Monitoring 角色,请参阅向用户授予对 Cloud Monitoring 的访问权限

创建 Cloud Storage 存储桶

创建一个 Cloud Storage 存储桶以存储 Terraform 状态文件。您也可以使用现有的 Cloud Storage 存储桶。使用 Cloud Storage 存储桶可确保多个用户可以同时运行 Terraform 并访问相同的基础架构。

  1. 在 Cloud Shell 中,创建 Cloud Storage 存储桶:

    gcloud storage buckets create gs://${GCS_BUCKET_NAME}
    
  2. 启用对象版本控制,以保留部署历史记录。启用“对象版本控制”会增加存储费用,您可以将“对象生命周期管理”配置为删除旧的状态版本,以缓解存储费用增加问题。

    gcloud storage buckets update gs://${GCS_BUCKET_NAME} --versioning
    

初始化 Terraform

在代码库的 gcp_resources/gce 目录中运行 terraform init。该命令会提示您输入用于存储 Terraform 状态文件的 Cloud Storage 存储桶的名称。

部署监控和日志记录信息中心

gcp_resources/gce 目录中运行 terraform apply,以在 Google Cloud 项目中部署监控和日志记录信息中心。该命令会提示您为以下变量提供值:

  • var.monitoring_dashboard_config
  • var.project_name
  • var.stack_trace_bucket_config

如果您只想部署监控信息中心,请在 gcp_resources/gce/dashboard/monitoring_dashboard 目录中运行 terraform initterraform apply。同样,在 gcp_resources/gce/dashboard/logging_dashboard 目录中运行以下命令,以仅部署日志记录信息中心。

配置示例

运行 terraform apply 时,Terraform 会提示您输入一些配置变量值。本部分提供了一些可供您使用的配置示例。每个示例都显示了 terraform apply 命令显示的输出,以及每个配置变量的建议值(以粗体字显示)。输入内容必须采用 JSON 格式,并用大括号(“{}”)括起来。

示例 1

此示例指定了 Google Cloud 项目名称,并使用默认值来填充其余配置。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;the number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

示例 2

此示例将信息中心配置为显示 5 个离群 TPU 虚拟机。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"outlier_count":5}

示例 3

此配置会创建一个信息中心,其中会显示 10 个离群 TPU 虚拟机,并使用“test”作为信息中心生成的节点名称的前缀:

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &ltnumber of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test"}

示例 4

此配置会创建一个信息中心,其中显示了 5 个离群虚拟机,并使用“test”作为信息中心生成的节点名称的前缀。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test", "outlier_count":5}

示例 5

以下示例配置了一个 Cloud Storage 存储桶来存储堆栈轨迹。堆栈轨迹的默认保留政策为 30 天。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket"}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

示例 6

此示例配置了一个保留期限为 20 天的 Cloud Storage 存储桶。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket", "retention_days":20}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}