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 控制台,依次选择 Monitoring 和 Dashboards。在信息中心列表中,选择 GCE - TPU 监控信息中心。Cloud TPU 监控信息中心由多个窗格组成,每个窗格都会显示指标数据。对于每个 Cloud TPU 指标,信息中心会在单独的窗格中显示当前指标值、平均值和最大值。借助“平均值”和“最大值”窗格,您可以找出离群的 TPU 虚拟机以进行进一步调查。
您还可以使用 Cloud Monitoring Google Cloud 控制台中的 Metrics Explorer 查看 TPU 指标。如需了解详情,请参阅监控 Cloud TPU 虚拟机。
Logging 信息中心
日志记录信息中心会显示两个部分:
- 日志指标:显示为每个 TPU VM 工作器收集的堆栈轨迹条目数。
- “日志”面板:显示所有堆栈轨迹条目,其中包含严重级别、时间戳和条目的摘要列。您可以按字符串或 TPU 工作器标签(例如
node_id
、worker_id
)过滤此日志面板。例如,添加过滤条件resource.labels.node_id:"testing"
会显示为 ID 设为“testing”的 TPU VM 工作器收集的所有轨迹条目。
Cloud Logging 会收集 Google Cloud 服务、第三方服务、机器学习框架和您的代码生成的日志条目。您可以安装 cloud-tpu-diagnostics
PyPi 软件包,以便在发生故障或异常或工作负载无响应时写入 Python 堆栈轨迹。如需了解详情,请参阅调试 Cloud TPU 虚拟机。
如需查看日志信息中心,请前往 Google Cloud 控制台,依次选择 Monitoring 和 Dashboards。在信息中心列表中,选择 GCE - TPU Logging Dashboard。
配置指标和日志记录信息中心
请按照以下说明配置指标和日志记录信息中心。
克隆信息中心代码库
您可以直接从 Cloud TPU 监控和调试 GitHub 代码库或通过命令行克隆该代码库:
git clone https://github.com/google/cloud-tpu-monitoring-debugging.git
安装 Terraform
- 在本地机器上安装 Terraform。
- 运行
terraform init
以添加必要的插件并创建.terraform
目录。 - 运行
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 并访问相同的基础架构。
在 Cloud Shell 中,创建 Cloud Storage 存储桶:
gcloud storage buckets create gs://${GCS_BUCKET_NAME}
启用对象版本控制,以保留部署历史记录。启用“对象版本控制”会增加存储费用,您可以将“对象生命周期管理”配置为删除旧的状态版本,以缓解存储费用增加问题。
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 init
和 terraform 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": <number of days to retain stack traces, default to 30 days if not set>
}
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": <the number of outliers to show on dashboard, default to 10 if not set>
}
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": <number of days to retain stack traces, default to 30 days if not set>
}
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: {"outlier_count":5}
示例 3
此配置会创建一个信息中心,其中显示了 10 个使用“test”作为信息中心生成的节点名称前缀的离群 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": <number of days to retain stack traces, default to 30 days if not set>
}
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"}
示例 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": <number of days to retain stack traces, default to 30 days if not set>
}
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": <number of days to retain stack traces, default to 30 days if not set>
}
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": <number of days to retain stack traces, default to 30 days if not set>
}
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: {}