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 个离群 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": <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: {}