Cloud TPU 监控和日志记录信息中心

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

Monitoring 信息中心

Monitoring 信息中心会显示以下 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 会自动生成指标数据。如需查看 Monitoring 信息中心,请转到 Google Cloud 控制台,选择 Monitoring,然后选择信息中心。在信息中心列表中选择 GCE - TPU 监控信息中心。Cloud TPU 监控信息中心由多个窗格组成,每个窗格都显示指标数据。对于每个 Cloud TPU 指标,信息中心会在不同的窗格中显示当前指标值、平均值和最大值。通过平均窗格和最大窗格,您可以识别离群 TPU 虚拟机,以便进一步调查。

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

Logging 信息中心

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

  1. 日志指标:显示为每个 TPU 虚拟机工作器收集的堆栈轨迹条目的数量。
  2. 日志面板:显示所有堆栈轨迹条目,以及关于严重性、时间戳和条目摘要的列。您可以按字符串或 TPU 工作器标签(如 node_idworker_id)过滤此日志面板。例如,如果添加过滤条件 resource.labels.node_id:"testing",系统会显示为 ID 设置为“testing”的 TPU 虚拟机工作器收集的所有跟踪记录条目。

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

如需查看日志记录信息中心,请转到 Google Cloud 控制台,依次选择 Monitoring信息中心。在信息中心列表中选择 GCE - TPU 日志记录信息中心

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

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

克隆信息中心代码库

您可以直接从 Cloud TPU Monitoring and Debugging GitHub 代码库克隆该代码库,也可以从命令行克隆该代码库:

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

安装 Terraform

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

配置监控和日志记录权限

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

创建 Cloud Storage 存储桶

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

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

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

    gsutil versioning set on gs://${GCS_BUCKET_NAME}
    

初始化 Terraform

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

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

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

此示例将 Cloud Storage 存储桶配置为保留期限为 20 天。

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: {}