查看自动扩缩程序日志

启用自动扩缩功能后,自动扩缩程序会根据您指定的选项制定扩缩决策。每一项扩缩决策都会由 Cloud Logging 记录。为了更好地了解自动扩缩程序所制定的扩缩决策,您可以在日志查看器中查看这些日志。

您可以使用日志查看器查看与以下内容相关的事件:

  • 实例组大小更改。如果自动扩缩程序调整了实例组的大小,则自动扩缩程序日志会描述本次调整。
  • 自动扩缩程序状态更改。例如,如果自动扩缩程序原本按预期工作,但后来遇到问题,则自动扩缩程序日志会描述状态的更改。常见的返回状态消息部分描述了其中的一些常见状态消息。

准备工作

查看自动扩缩程序日志

要查看自动扩缩程序日志,请使用 Google Cloud Consolegcloud 命令行工具或 Cloud Logging API。

控制台

  1. 转到“日志查看器”页面。

    转到“日志查看器”页面

  2. 点开资源下拉菜单,选择 GCE 自动调节程序
  3. 然后,展开所有日志下拉菜单。选择自动扩缩程序以查看自动扩缩日志。

gcloud

使用 gcloud 工具运行 Beta 版 logging read 命令,以查找所有与自动扩缩相关的日志(包括活动日志审核日志)。例如:

gcloud beta logging read "resource.type=gce_autoscaler" --limit 10 \
        --format json
    

如需将条目限制为只与自动扩缩程序的调整大小操作相关的日志,请指定 logName 参数并按字段 jsonPayload.newSize 进行过滤。请将 logName 设置为以下内容:

`projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler`
    

例如:

gcloud beta logging read 'logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler" AND jsonPayload.newSize:*' \
        --limit 10 --format json
    

如需查看自动扩缩程序的状态更改,请使用 logName 参数并按字段 jsonPayload.new_status 进行过滤。请将 logName 设置为以下内容:

`projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler`
    

例如:

gcloud beta logging read 'logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler" AND jsonPayload.new_status:*' \
        --limit 10 --format json
    

API

Logging V2 API 发出请求。请求正文必须包含搜索日志时要使用的 filter 参数以及要查看其日志的 project。例如,如需请求获取调整大小操作列表,请使用以下请求:

POST https://logging.googleapis.com/v2/entries:list

    {
      "filter": "logName=\"projects\/[PROJECT_ID]\/logs\/compute.googleapis.com%2Fautoscaler\" AND jsonPayload.new_size:*",
      "pageSize": 10,
      "resourceNames": [
        "projects\/[PROJECT_ID]"
      ]
    }
    

如需请求获取状态更改列表,请使用以下请求:

POST https://logging.googleapis.com/v2/entries:list

    {
      "filter": "logName=\"projects\/[PROJECT_ID]\/logs\/compute.googleapis.com%2Fautoscaler\" AND jsonPayload.new_status:*",
      "pageSize": 10,
      "resourceNames": [
        "projects\/[PROJECT_ID]"
      ]
    }
    

调整大小日志

与调整大小操作相关的日志描述有关实例组的先前大小和新大小的信息。这些日志条目可通过 JSON 载荷中存在的以下字段来识别:

jsonPayload.new_size
    jsonPayload.old_size
    

例如,在以下条目中,日志描述了从大小为 8 的较早实例组更改为大小为 10 的新实例组。

{
    "insertId": "1l68z7sg4jw7kzo",
    "jsonPayload": {
      "autoscaler_name": "example-autoscaler",
      "instance_group_name": "example-igm",
      "new_size": 10,
      "old_size": 8,
      "project_id": "myproject",
      "zone_name": "europe-west1-b"
    },
    "logName": "projects/myproject/logs/compute.googleapis.com%2Fautoscaler",
    "receiveTimestamp": "2017-10-24T16:12:08.294439822Z",
    "resource": {
      "labels": {
        "autoscaler_id": "1234567890123456789",
        "location": "europe-west1-b",
        "project_id": "myproject"
      },
      "type": "gce_autoscaler"
    },
    "severity": "INFO",
    "timestamp": "2017-10-24T16:12:07.715125478Z"
    

}

以下是日志中每个字段的说明:

属性
insertId 日志条目的唯一标识符。
jsonPayload 日志条目载荷,采用以 JSON 对象表示的结构。
new_size 该实例组被自动扩缩到的新大小。如果该实例组被纵向扩容,则新大小将大于旧大小。如果该实例组被缩减规模,则新大小将小于旧大小。
old_size 该实例组在更改之前的旧大小。
instance_group_name 此日志条目适用的托管实例组的名称。
project_id 实例组所属的项目 ID。此字段应始终为当前项目的 ID。
autoscaler_name 负责此操作的自动调节程序的名称。
zone_name 自动调节程序和实例组的地区。
resource 自动扩缩程序的相关详细信息。
type 资源的类型。对于自动扩缩程序,此字段始终为 gce_autoscaler
labels 自动扩缩程序的相关元数据。
location 自动调节程序的地区。
autoscaler_id 服务器生成的数字型自动扩缩程序 ID。
project_id 自动扩缩程序所属的项目 ID
timestamp 日志条目所述事件的发生时间。这是采用 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式的时间戳,精确到纳秒。
severity 此日志的严重程度。对于自动扩缩程序日志,此字段始终为 "INFO"
logName 此日志条目所属日志的资源名称。对于自动扩缩程序的调整大小日志,此字段始终为 projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler
receiveTimestamp Cloud Logging 接收此日志条目的时间。这是采用 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式的时间戳,精确到纳秒。

状态更改日志

当自动扩缩程序的状态发生更改时,Compute Engine 会创建一个日志条目,用于捕获该状态更改。这些日志条目可通过 JSON 载荷中存在的以下字段来识别:

jsonPayload.old_status
    jsonPayload.new_status
    

例如,以下条目描述了从 OK 到新状态的状态更改:

The autoscaler is configured to scale based on a load balancing signal but
    the instance group has not received any utilization data from the load
    balancer or the utilization is constantly 0. Check that the load balancing
    configuration is working
    

您可以使用这些状态消息找出自动扩缩程序未按预期运行的原因,或调试您之前注意到的旧问题。在本例中,您可能需要注意新的状态消息,并检查负载平衡配置是否已正确设置。

{
    "insertId": "ivho6kg4icqfio",
    "jsonPayload": {
      "autoscaler_name": "example-autoscaler",
      "instance_group_name": "example-igm",
      "new_status": {
        "details": "The autoscaler is configured to scale based on a load
            balancing signal but the instance group has not received any
            utilization data from the load balancer or the utilization is
            constantly 0. Check that the load balancing configuration is working."
      },
      "old_status": {
        "details": "OK"
      },
      "project_id": "myproject",
      "zone_name": "us-east1-b"
    },
    "logName": "projects/myproject/logs/compute.googleapis.com%2Fautoscaler",
    "receiveTimestamp": "2017-10-24T15:11:58.076196762Z",
    "resource": {
      "labels": {
        "autoscaler_id": "1234567890123456789",
        "location": "us-east1-b",
        "project_id": "myproject"
      },
      "type": "gce_autoscaler"
    },
    "severity": "INFO",
    "timestamp": "2017-10-24T15:11:57.619997893Z"
    

}

以下是日志中每个字段的说明:

属性
insertId 日志条目的唯一标识符。
jsonPayload 日志条目载荷,采用以 JSON 对象表示的结构。
new_status 新的自动扩缩程序状态。了解一些常见的返回状态消息
old_status 更改之前的旧自动扩缩程序状态。
instance_group_name 此日志条目适用的托管实例组的名称。
project_id 实例组所属的项目 ID
autoscaler_name 负责此操作的自动扩缩程序的名称。
zone_name 自动调节程序和实例组的地区。
resource 自动扩缩程序的相关详细信息。
type 资源的类型。对于自动扩缩程序,此字段始终为 gce_autoscaler
labels 自动扩缩程序的相关元数据。
location 自动调节程序的地区。
autoscaler_id 服务器生成的数字型自动扩缩程序 ID。
project_id 自动扩缩程序所属的项目 ID。此字段始终为当前项目。
timestamp 日志条目所述事件的发生时间。这是采用 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式的时间戳,精确到纳秒。
severity 此日志的严重程度。对于自动扩缩程序日志,此字段始终为 "INFO"
logName 此日志条目所属日志的资源名称。对于状态更改日志,此字段始终为 projects/[PROJECT_ID]/logs/compute.googleapis.com%2Fautoscaler
receiveTimestamp Cloud Logging 接收此日志条目的时间。这是采用 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式的时间戳,精确到纳秒。

后续步骤