当您创建区域级代管式实例组 (MIG) 或增加其目标规模时,Compute Engine 会评估实时资源可用性,以在不同可用区和机器类型之间分配新的计算实例。在此过程中,Compute Engine 会在 Cloud Logging 中记录实例分布日志条目。
本文档介绍了如何查看和解读这些实例分布日志。此外,还介绍了如何使用这些日志来调查待处理的分配并配置提醒。
如需查看正在运行的实例的实际分布情况,请参阅监控 MIG 中的实例分布。
关于实例分发日志
实例分布日志提供 MIG 计划的计算实例分配的一次性快照。在这些日志中,已分配实例表示 MIG 已找到容量,并计划在该机器类型和该可用区中创建计算实例。分配的大小并不意味着计算实例已成功创建。
由于日志提供的是快照,因此当 MIG 稍后创建其余计算实例时,Compute Engine 不会更新这些日志。通过该日志条目,您可以查看以下详细信息:
机器类型分布:MIG 为每种机器类型分配的计算实例数量。此信息仅适用于使用实例灵活性的区域级 MIG。
可用区级分布:MIG 在每个可用区中分配的计算实例数量。
等待容量的实例:MIG 无法立即为其分配容量且正在积极寻找容量的实例数量。
限制
实例分布日志仅适用于区域级 MIG。
对于使用
EVEN目标分布形状且不进行自动扩缩的区域级 MIG,日志条目仅包含oldSize、newSize、deltaSize和targetShape字段,不包含任何实例分布详情。仅当您创建 MIG 或增加其目标大小时,Compute Engine 才会记录实例分布详细信息。当目标大小减小时,或者在实例修复、重新创建和更新操作期间,Compute Engine 不会记录这些详细信息。
查看特定 MIG 的实例分布日志
如需查看特定 MIG 的实例分布日志,请使用以下选项之一:
控制台
您可以直接从实例组详情页面查看特定 MIG 的日志。
在 Google Cloud 控制台中,前往实例群组页面。
点击要查看的 MIG 的名称。
点击监控标签页。
在左侧窗格中,选择日志。
在日志结果过滤条件中,输入
instanceDistribution,然后按 Enter 键。如需查看实例分布数据,请展开日志条目,然后展开
protoPayload.metadata.details。
gcloud
如需查看特定 MIG 的实例分布日志,请使用 gcloud logging read 命令:
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \ protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND \ resource.labels.instance_group_manager_name=\"MIG_NAME\""
替换以下内容:
PROJECT_ID:您的项目的 ID。MIG_NAME:MIG 的名称。
REST
如需查看特定 MIG 的实例分布日志,请向 entries.list 方法发出 POST 请求。
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND resource.labels.instance_group_manager_name=\"MIG_NAME\""
}
替换以下内容:
PROJECT_ID:您的项目的 ID。MIG_NAME:MIG 的名称。
如需详细了解日志中的每个字段,请参阅实例分布日志条目。
查看项目中的所有实例分布日志
如需查看项目中的所有实例分布日志,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
输入查询。下面列出了一些示例:
如需查看项目中的所有实例分布日志,请执行以下操作:
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="compute.instanceGroupManagers.instanceDistribution"
如需查看实例分布日志(其中部分调整大小操作仍在等待容量),请运行以下命令:
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="compute.instanceGroupManagers.instanceDistribution" protoPayload.metadata.details.data.activeSeekDeltaSize > 0
将
PROJECT_ID替换为您的项目 ID。点击运行查询。
在结果中,展开一个日志条目。
- 如需查看摘要和数据,请展开
protoPayload.metadata.details。 - 如需查看每行的摘要,请点击
message,然后选择向摘要行添加字段。
- 如需查看摘要和数据,请展开
gcloud
如需查看实例分布日志,请使用 gcloud logging read 命令。
- 如需查看项目中的所有实例分布日志,请执行以下操作:
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \ protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\""
- 如需查看项目中过去一天的所有日志,请指定
--freshness=1d标志,如下所示:
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \
protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\"" \
--freshness=1d
- 如需查看实例分布日志(其中部分调整大小操作仍在等待容量),请运行以下命令:
gcloud logging read "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND \
protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND \
protoPayload.metadata.details.data.activeSeekDeltaSize > 0"
将 PROJECT_ID 替换为您的项目 ID。
REST
如需查看实例分布日志,请向 entries.list 方法发出 POST 请求。
- 如需查看项目中的所有实例分布日志,请执行以下操作:
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\""
}
- 如需查看项目中过去一天的所有日志,请向过滤条件添加
timestamp条件:
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND timestamp >= \"YYYY-MM-DDThh:mm:ssZ\""
}
- 如需查看实例分布日志(其中部分调整大小操作仍在等待容量),请运行以下命令:
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "logName=\"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event\" AND protoPayload.methodName=\"compute.instanceGroupManagers.instanceDistribution\" AND protoPayload.metadata.details.data.activeSeekDeltaSize > 0"
}
替换以下内容:
PROJECT_ID:您的项目的 ID。YYYY-MM-DDThh:mm:ssZ:开始时间的 RFC 3339 时间戳,例如2024-10-22T00:00:00Z。
如需详细了解日志中的每个字段,请参阅实例分布日志条目。
实例分布日志条目
以下是日志条目示例 (protoPayload.metadata.details)。由于此事件是一次性快照,因此在稍后创建其余实例时,日志条目不会更新。通过日志条目,您可以查看以下详细信息:
details.data:显示有关实例分布的结构化详细信息。details.message:显示实例分布的摘要。
在此示例中,具有实例灵活性的区域级 MIG 正在从 0 伸缩到 100。MIG 会立即在两个排名的实例选择中分配 100 个新实例中的 80 个(rank2-c2 选择中的 20 c2-standard-4 个实例和 rank3-n2d 选择中的 60 n2d-standard-4 个实例)。该条目还显示,us-central1-b 和 us-central1-c 中各分配了 40 个计算实例。对于其余 20 个实例 (activeSeekDeltaSize),MIG 会继续在所有已配置的实例选择和可用区中寻找容量。对于没有实例灵活性的区域级 MIG,日志条目会省略 instanceSelections 字段,仅显示可用区级分布。
"metadata": {
"details": {
"data": {
"oldSize": 0,
"newSize": 100,
"deltaSize": 100,
"targetShape": "BALANCED",
"activeSeekDeltaSize": 20,
"instanceSelections": {
"rank1-n2": {
"rank": 1,
"machineSelections": [
{
"machineType": "n2-standard-4",
"allocatedSize": 0
}
]
},
"rank2-c2": {
"rank": 2,
"machineSelections": [
{
"machineType": "c2-standard-4",
"allocatedSize": 20
}
]
},
"rank3-n2d": {
"rank": 3,
"machineSelections": [
{
"machineType": "n2d-standard-4",
"allocatedSize": 60
}
]
}
},
"zonalDistribution": {
"us-central1-a": {
"allocatedSize": 0
},
"us-central1-b": {
"allocatedSize": 40
},
"us-central1-c": {
"allocatedSize": 40
}
}
},
"message": "Increasing MIG target size from 0 to 100 instances (+100).
Allocated 80 of 100 new instances. Allocated instances across instance
selections: rank2-c2 (rank 2; c2-standard-4: 20); rank3-n2d (rank 3;
n2d-standard-4: 60). Allocated instances across zones based on target
distribution shape BALANCED: us-central1-a: 0, us-central1-b: 40,
us-central1-c: 40. MIG continues to allocate the remaining 20 new instances
across all instance selections and zones. The final distribution across zones
and machine types may differ as instances are created. View the group's
instances for the current distribution."
}
}
下表介绍了日志条目中的每个字段。
| 字段 | 说明 |
|---|---|
details.data.oldSize |
调整大小操作之前区域级 MIG 的目标大小。 |
details.data.newSize |
区域级 MIG 的请求目标大小。 |
details.data.deltaSize |
目标大小的变化 (newSize - oldSize)。
|
details.data.targetShape |
区域级 MIG 的目标分布形状。 |
details.data.activeSeekDeltaSize |
MIG 仍在配置的实例选择和可用区中寻找容量的新实例数量。当此字段的值为 0 时,系统会省略此字段。
|
details.data.instanceSelections |
在分配期间评估的已配置实例选择。 此字段仅适用于使用实例灵活性的 MIG。每个键都是实例选择的名称,其值包含以下字段:
|
details.data.zonalDistribution |
已配置的可用区及其分配的实例分布。每个键都是一个可用区名称,其值包含在该可用区中分配的计算实例数量 (allocatedSize)。
|
details.message |
描述实例分布的摘要消息,包括分配的数量和寻求容量的详细信息。 |
解读实例分布日志
实例分布日志提供了 MIG 的计算实例创建计划的快照。由于日志表明 MIG 会在计算实例成功创建之前分配这些实例,因此您应将日志数据与计算实例状态和出错提示结合使用,以了解 MIG 的实际行为。
请使用下表来解读常见日志输出,并确定是否需要采取行动:
| 日志输出 | 说明 | 建议采取的操作 |
|---|---|---|
activeSeekDeltaSize 大于 0 |
MIG 无法找到足够的容量来立即满足整个规模调整请求。MIG 会继续尝试在所有配置的选项中创建剩余实例。 | 检查 MIG 的实例错误,了解实例创建失败的原因。请考虑添加其他机器家族的机器类型、添加可用区或检查配额。 |
偏好级别较高(排名数字较小)的选择具有 0 的 allocatedSize |
在决策时,MIG 检查了您最偏好的机器类型,但未找到足够的容量。MIG 改用了偏好级别较低(排名数字较高)的选择。Compute Engine 不会记录跳过的选择的实例错误。 | 如果 MIG 经常跳过您的首选选项,请考虑向首选选项添加更多机器类型,或接受偏好级别较低的选项。 |
已配置区域的 allocatedSize 为 0 |
MIG 未在此可用区中分配任何新实例。 | 如果您的目标形状为 ANY 或 ANY_SINGLE_ZONE,则这种不均匀分布是正常的。否则,请查看实例模板的配额、预留和可用区支持。 |
message 摘要中缺少机器类型 |
MIG 未使用该机器类型进行分配。 | 检查结构化 details.data 代码块。摘要消息会忽略获得 0 个新实例的选择和机器类型,但结构化数据会列出所有评估的选项。 |
检查待处理的实例分配
如果您的 MIG 仍在等待容量 (activeSeekDeltaSize > 0),您可以检查以下内容,了解待处理分配背后的原因:
检查实例创建错误。如需查看 MIG 分配容量后实例创建是否失败,或者计算实例是否仍在等待容量,请检查实例错误。如需了解详情,请参阅列出实例错误。
检查实例状态。如需查看每个实例的状态和当前操作,请列出 MIG 中的实例并检查其
instanceStatus字段。如需了解详情,请参阅检查代管式实例的状态。检查您的配置。如果您在 MIG 中配置了实例灵活性政策,请查看政策中机器家族的区域配额。此外,请验证您选择的可用区是否支持请求的机器类型。如需了解详情,请参阅查看和管理配额以及可用区域和可用区。
创建基于日志的提醒政策
如需在 MIG 规模调整操作等待容量时收到通知,您可以在 Logs Explorer 中创建基于日志的提醒政策。例如,当 activeSeekDeltaSize 大于 0 时,您可以触发提醒。
如需创建此提醒,请执行以下操作:
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
输入以下查询:
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="compute.instanceGroupManagers.instanceDistribution" protoPayload.metadata.details.data.activeSeekDeltaSize > 0
将
PROJECT_ID替换为您的项目 ID。点击运行查询以验证查询。
按照 Cloud Logging 文档的创建基于日志的提醒政策部分中的说明创建提醒政策。