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 信息中心
日志记录信息中心会显示两个部分:
- 日志指标:显示为每个 TPU 虚拟机工作器收集的堆栈轨迹条目的数量。
- 日志面板:显示所有堆栈轨迹条目,以及关于严重性、时间戳和条目摘要的列。您可以按字符串或 TPU 工作器标签(如
node_id
、worker_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
- 在本地机器上安装 Terraform。
- 运行
terraform init
以添加必要的插件并创建.terraform
目录。 - 运行
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 并访问同一基础架构。
在 Cloud Shell 中,创建 Cloud Storage 存储桶:
gsutil mb gs://${GCS_BUCKET_NAME}
启用对象版本控制以保留部署的历史记录。启用对象版本控制会增加存储费用,您可以将对象生命周期管理配置为删除旧状态版本,以缓解存储费用增加问题。
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 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
此示例将 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": <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: {}