创建合成监控器

本文档介绍了如何创建合成监控工具来测试服务、应用、网页和 API 的可用性、一致性和性能。您为应用提供测试。合成监视器会执行该脚本,并记录测试结果和延迟时间等其他数据。如需在测试失败时收到通知,您可以配置提醒政策来监控测试结果。

合成监控工具简介

合成监控工具会定期执行部署在 Cloud Run 上的单用途 第 2 代 Cloud Run 函数。创建合成监视器时,您需要定义 Cloud Run 函数(必须使用 Node.js 编写)和执行频率。例如,您可以使用 Puppeteer 配置 Cloud Run 函数以与网页互动。您还可以使用 Axios 模块配置 Cloud Run 函数以与 API 交互。您可能还需要测试 VPC 网络中的资源

如需创建 Cloud Run 函数,您可以使用内嵌编辑器,也可以上传 ZIP 文件。如果您选择使用内嵌编辑器,则可以先使用提供的框架。创建合成监控器后,Cloud Monitoring 会使用调度系统来安排定期执行 Cloud Run 函数。虽然您可以指定 Cloud Run 函数所在的区域,但触发执行的命令可以来自可用性检查服务器支持的任何区域。如需了解详情,请参阅列出拨测服务器 IP 地址

您可以创建提醒政策,以便在出现测试失败时收到通知:

  • 使用 Google Cloud 控制台创建合成监控器时,默认行为是创建提醒政策。您提供通知渠道。默认提醒政策配置为在连续两次或更多次测试失败时通知您。

  • 使用 Cloud Monitoring API 创建合成监控器时,您必须创建提醒政策,以监控 Cloud Run 函数所运行的 Cloud Run 资源的 uptime_check/check_passed 指标类型。

执行频率注意事项

您可以配置 Cloud Run 函数的执行频率。如需确定执行频率,请考虑服务的服务等级目标 (SLO)。为了发现潜在的 SLO 违规行为,您需要经常执行测试。不过,服务的 SLO 并非唯一要考虑的因素。您还需要考虑执行率如何转化为服务负载和费用。每次执行都会给您的服务增加负载,因此,您执行 Cloud Run 函数的频率越高,应用到服务的负载就越大。请注意,拨测的默认执行间隔为 1 分钟。

执行频率还决定了在测试失败时您能多快收到通知。在测试连续失败两次后,Monitoring 会创建一个突发事件并发送通知。例如,如果您的执行频率为 5 分钟,则可能需要 10 分钟才能出现两次失败的测试。在第二次测试失败后,您会收到通知。

Cloud Run 函数示例代码

如需查看模板和示例,请参阅合成监控工具示例。 您可以将这些示例作为 Cloud Run 函数的起点。如果您是经验丰富的开发者,不妨考虑使用 Gemini 为合成监控工具生成代码,从而缩短开发时间。使用 Gemini 生成代码功能目前处于公开预览阶段。

通用模板可在使用 Google Cloud 控制台创建合成监视器时选择,该模板配置为收集出站 HTTP 请求的轨迹和日志数据。该解决方案利用 OpenTelemetry auto-instrumentation-node 模块和 winston 日志记录器。由于依赖于开源产品,轨迹和日志数据的结构可能会发生变化。因此,收集的轨迹和日志数据应仅用于调试目的。

您可以实现自己的方法来收集出站 HTTP 请求的轨迹和日志数据。如需查看自定义方法示例,请参阅类 SyntheticAutoInstrumentation

Cloud Run 函数配置

配置 Cloud Run 函数时,您必须指定运行时、构建、连接和安全设置,或者接受默认设置:

  • 分配的内存的默认值可能不够用。我们建议您将此字段设置为至少 2 GB。

  • Cloud Run 函数的入站数据传输设置的默认值为“允许所有流量”。您可以使用此设置,也可以使用限制性更高的设置。

    当您允许所有流量时,Cloud Run functions 函数在网络级执行的第一阶段验证始终会通过。第二阶段的验证会确定调用方是否已获授权执行 Cloud Run 函数。授权取决于调用方的 Identity and Access Management (IAM) 角色。默认情况下,Cloud Monitoring 会被授予执行您的 Cloud Run 函数的权限。如需了解如何查看或修改入站数据传输设置,请参阅入站流量设置

Cloud Run 函数限制

  • Cloud Run 函数的名称不得包含下划线。

  • 只有使用通用模板时,您才能收集出站 HTTP 请求的轨迹和日志数据。

  • 仅支持 HTTP 函数。如果您使用 Google Cloud 控制台创建合成监控器,则系统会为您提供一个用于查询网址的默认函数。默认函数的源代码(可修改)位于 generic-synthetic-nodejs Git 代码库中。

    如需了解 HTTP 函数,请参阅编写 HTTP 函数

  • 如果您使用该 API,则部署命令必须指定 Cloud Run 函数是第 2 代函数。如果您使用的是 Google Cloud 控制台,则系统会为您处理部署。如需了解详情,请参阅部署 Cloud Run 函数

  • 运行时环境仅限于 Node.js。如需了解详情,请参阅节点。支持以下 Node.js 版本:12、14、16、18 和 20。

合成监控工具收集的数据

本部分介绍了为合成监控器收集的数据。如需了解如何查看执行结果,请参阅探索合成监控工具结果

执行历史记录

系统会为每个合成监控工具收集执行结果历史记录。这些数据包括:

  • 用于记录一段时间内执行成功或失败情况的时序。

  • 用于记录代码执行时长的时序。系统不会记录函数的执行时间。延迟时间数据会作为 Cloud Run 函数所运行的 Cloud Run 资源的 uptime_check/request_latency 时序写入。合成监控器详情页面上提供了此类数据的图表。

  • 包含有关合成监控器执行的信息的日志,例如测试和失败详情。可用的日志取决于您的 Cloud Run 函数。例如,如果您使用 Mocha 模板,则日志中会包含有关测试是通过还是失败以及测试时长的信息。堆栈轨迹(如果包含)会列出失败的代码行、错误类型和错误消息。

  • 传出 HTTP 请求的轨迹和日志(可选)。如需了解如何收集此类数据,请参阅请求延迟时间

Cloud Run 函数指标和日志

Cloud Run 函数的指标和日志。这些数据由 Cloud Run 函数收集,其中包含有关函数每秒执行次数、执行时间和内存用量的信息。

请求延迟时间

Cloud Trace 会自动收集和存储合成监视器发出的 HTTP 请求的延迟时间数据。

如需收集合成监控器发出的出站 HTTP 请求的轨迹、日志和延迟时间数据,您必须使用通用模板。如需了解详情,请参阅合成监视器的示例

准备工作

  1. 如需获得使用 Google Cloud 控制台查看和修改合成监视器所需的权限,请让管理员向您授予项目的以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

  2. Enable the Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API APIs.

    Enable the APIs

  3. 验证您的 Google Cloud 项目是否包含默认的 Compute Engine 服务账号。此服务账号会在您启用 Compute Engine API 时创建,并且名称类似于 12345-compute@developer.gserviceaccount.com

    在 Google Cloud 控制台中,前往服务账号页面:

    前往服务账号

    如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

    如果默认的 Compute Engine 服务账号不存在,请点击创建服务账号,然后完成对话框。

  4. 确保默认的 Compute Engine 服务账号或您创建的服务账号已被授予“编辑者”(roles/editor) 角色。

    如需查看授予服务账号的角色,请执行以下操作:

    1. 在 Google Cloud 控制台中,进入 IAM 页面:

      前往 IAM

      如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

    2. 选择包括 Google 提供的角色授权
    3. 如果您的合成监控器使用的服务账号未列出,或者未被授予包含 Cloud Trace Agent (roles/cloudtrace.agent) 角色权限的角色,请向您的服务账号授予此角色。
  5. 配置您要用于接收通知的通知渠道。我们建议您创建多种类型的通知渠道。如需了解详情,请参阅创建和管理通知渠道以及使用 API 创建和管理通知渠道

创建合成监控器

控制台

使用 Google Cloud 控制台创建合成监控器时,系统会部署一个新的 Cloud Run 函数(第 2 代),并创建该 Cloud Run 函数的监控器。您无法创建用于监控现有 Cloud Run 函数的合成监控器。

  1. 确保您已启用所需的 API,您的项目包含默认 Compute Engine 服务账号,并且此账号已被授予“Editor”(roles/editor)角色。如需了解详情,请参阅开始前须知
  2. 在 Google Cloud 控制台中,前往  Synthetic Monitoring 页面:

    前往合成监控

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  3. 选择创建合成监控工具
  4. 为您的 Cloud Run 函数选择模板:

    • 自定义合成监视器:如果您想收集出站 HTTP 请求的日志数据或轨迹数据,请使用此模板。

    • Mocha 合成监控器:在编写 Mocha 测试套件时,请使用此模板。

    • 链接损坏检查工具:使用此模板可测试 URI 以及在该 URI 上找到的可配置数量的链接。如需了解此检查器的字段,请参阅创建断开链接检查器

  5. 为监视器输入名称。

  6. 可选:更新响应超时检查频率,并添加用户定义的标签。

  7. 执行下列其中一项操作:

  8. 在 Cloud Run 函数对话框中,执行以下操作:

    1. 输入显示名称,然后选择一个区域。名称在区域内必须是唯一的。

    2. 运行时、构建、连接和安全设置部分中,执行以下操作:

      • 查看默认设置,并根据需要进行更新。

      • 运行时服务账号字段中,选择一个服务账号。

    3. 修改生成的代码,或为 Cloud Run 函数编写或上传代码:

      • 如需修改生成的代码、输入您自己的代码或加载默认示例函数,请选择内嵌编辑器。示例函数(取决于您之前选择的模板)会向特定网址发送请求。您可以修改默认函数。

      • 如需从本地系统加载 ZIP 文件,请选择 ZIP 上传

        如果您从本地系统上传 ZIP 文件,则还必须为该 ZIP 文件指定 Cloud Storage 存储桶。如果您没有合适的 Cloud Storage 存储桶,请创建一个。

      • 如需从 Cloud Storage 加载 ZIP 文件,请选择 ZIP from Cloud Storage(来自 Cloud Storage 的 ZIP 文件),选择存储桶,然后选择要加载的 ZIP 文件。

        您还可以使用 Google Cloud 控制台中的 Cloud Run functions 页面创建 Cloud Run 函数。如需创建用于监控该 Cloud Run 函数副本的合成监控器,请前往源代码标签页,然后点击下载 ZIP 文件。然后,您可以上传 ZIP 文件。

    4. 点击应用函数

  9. 配置提醒政策

    1. 可选:在发送通知之前更新提醒政策名称和失败时长。

    2. 添加通知渠道。

  10. 点击创建

    您定义的 Cloud Run 函数会构建并部署为第 2 代,系统会创建合成监控工具。

gcloud

使用 Google Cloud CLI 或 Cloud Monitoring API 创建合成监控器时,您需要将函数名称传递给 API 调用。因此,您只能创建用于监控现有 Cloud Run 函数的合成监控器。

  1. 确保您已启用所需的 API,您的项目包含默认 Compute Engine 服务账号,并且此账号已被授予“Editor”(roles/editor)角色。如需了解详情,请参阅开始前须知
  2. 编写和部署第 2 代 Cloud Run 函数。

    例如,如需在 Google Cloud/synthetics-sdk-nodejs 代码库中部署 synthetics-sdk-nodejs 示例,请执行以下操作:

    1. 克隆代码库并前往源代码所在的位置:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. 使用 gcloud functions deploy 命令部署 Cloud Run 函数:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      gcloud functions deploy 命令中,执行以下操作:

      • 确保 FUNCTION_NAME 字段的值在其部署区域内是唯一的。

      • 添加 --gen2 标志并设置部署区域。

      • --entry-point 字段设置如下:

        • Mocha:SyntheticMochaSuite
        • 非摩卡:SyntheticFunction
      • --runtime 字段设置为 nodejs18

      • 添加 --trigger-http 标志。

      • 如果您不想使用默认设置(允许所有流量),请设置 --ingress-settings 字段。

      Cloud Run functions 会构建并部署您的 Cloud Run 函数。Google Cloud CLI 命令的结果包含有关函数的信息,包括其完全限定名称:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      如需详细了解如何部署函数,请参阅部署 Cloud Run 函数

    如需列出 Google Cloud 项目中的 Cloud Run 函数,请使用 gcloud functions list 命令:

    gcloud functions list
    

    此调用的响应是列表条目,每个条目列出一个 Cloud Run 函数:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    如需查找特定 Cloud Run 函数的完全限定名称,请运行 gcloud monitoring uptime describe 命令。

  3. 如需创建合成监控器,请运行 gcloud monitoring uptime create 命令:

    gcloud monitoring uptime create DISPLAY_NAME --synthetic-target=TARGET
    

    在运行上一个命令之前,请执行以下操作:

    • DISPLAY_NAME 替换为您的合成监视器的名称。
    • TARGET 替换为您的 Cloud Run 函数的完全限定名称。
  4. 创建提醒政策

    由于提醒政策配置较为复杂,我们建议您前往 Google Cloud 控制台中的合成监控器页面,使用其中的选项创建提醒政策。采用这种方法时,系统会为您填充大多数提醒政策字段。如需使用 Google Cloud 控制台创建提醒政策,请点击合成监控器页面中的创建政策

    如果您打算使用 Google Cloud CLI 或 Cloud Monitoring API,请按如下方式配置条件的过滤条件:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    该条件会监控合成监控器写入的 uptime_check/check_passed 时序。请务必将 CHECK_ID 替换为合成监视器的标识符,该标识符包含在 create 命令的响应数据中。

    如需了解如何创建提醒政策,请参阅使用 API 创建提醒政策

API

使用 Google Cloud CLI 或 Cloud Monitoring API 创建合成监控器时,您需要将函数名称传递给 API 调用。因此,您只能创建用于监控现有 Cloud Run 函数的合成监控器。

  1. 确保您已启用所需的 API,您的项目包含默认 Compute Engine 服务账号,并且此账号已被授予“Editor”(roles/editor)角色。如需了解详情,请参阅开始前须知
  2. 编写和部署第 2 代 Cloud Run 函数。

    例如,如需在 Google Cloud/synthetics-sdk-nodejs 代码库中部署 synthetics-sdk-nodejs 示例,请执行以下操作:

    1. 克隆代码库并前往源代码所在的位置:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. 使用 gcloud functions deploy 命令部署 Cloud Run 函数:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      gcloud functions deploy 命令中,执行以下操作:

      • 确保 FUNCTION_NAME 字段的值在其部署区域内是唯一的。

      • 添加 --gen2 标志并设置部署区域。

      • --entry-point 字段设置如下:

        • Mocha:SyntheticMochaSuite
        • 非摩卡:SyntheticFunction
      • --runtime 字段设置为 nodejs18

      • 添加 --trigger-http 标志。

      • 如果您不想使用默认设置(允许所有流量),请设置 --ingress-settings 字段。

      Cloud Run functions 会构建并部署您的 Cloud Run 函数。Google Cloud CLI 命令的结果包含有关函数的信息,包括其完全限定名称:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      如需详细了解如何部署函数,请参阅部署 Cloud Run 函数

    如需列出 Google Cloud 项目中的 Cloud Run 函数,请使用 gcloud functions list 命令:

    gcloud functions list
    

    此调用的响应是列表条目,每个条目列出一个 Cloud Run 函数:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    如需查找特定 Cloud Run 函数的完全限定名称,请运行 gcloud monitoring uptime describe 命令。

  3. 如需创建合成监视器,请执行以下操作:

    1. 点击 projects.uptimeCheckConfigs.create 以打开该方法的 API 参考文档页面。
    2. 点击试用以打开 API Explorer。
    3. 设置以下字段,然后运行该命令。

      • 父级字段:projects/PROJECT_ID
      • 在请求正文中,指定以下内容:

        • displayName:设置为合成监视器的显示名称。
        • syntheticMonitor:设置为 Cloud Run 函数的完全限定名称。

      成功后,API 调用的响应如下所示:

      {
      "name": "projects/myproject/uptimeCheckConfigs/17272586127463315332",
      "displayName": "MyMonitor",
      ...
      "syntheticMonitor": {
       "cloudFunctionV2": {
          "name": "projects/myproject/locations/us-west2/functions/function-1",
          "cloudRunRevision": {
          "type": "cloud_run_revision",
          "labels": {
             "project_id": "myproject",
             "configuration_name": "",
             "location": "us-west2",
             "revision_name": "",
             "service_name": "function-1"
          }
          }
       }
      }
      }
      
  4. 创建提醒政策

    由于提醒政策配置较为复杂,我们建议您前往 Google Cloud 控制台中的合成监控器页面,使用其中的选项创建提醒政策。采用这种方法时,系统会为您填充大多数提醒政策字段。如需使用 Google Cloud 控制台创建提醒政策,请点击合成监控器页面中的创建政策

    如果您打算使用 Google Cloud CLI 或 Cloud Monitoring API,请按如下方式配置条件的过滤条件:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    该条件会监控合成监控器写入的 uptime_check/check_passed 时序。请务必将 CHECK_ID 替换为合成监视器的标识符,该标识符包含在 create 命令的响应数据中。

    如需了解如何创建提醒政策,请参阅使用 API 创建提醒政策

Terraform

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。 如需了解详情,请参阅 Terraform 提供程序参考文档

如需创建合成监控工具和用于监控该检查的提醒政策,请执行以下操作:

  1. 确保您已启用所需的 API,您的项目包含默认 Compute Engine 服务账号,并且此账号已被授予“Editor”(roles/editor)角色。如需了解详情,请参阅开始前须知

  2. 修改 Terraform 配置文件并添加 google_storage_bucket 资源,然后应用更改。

    以下代码在 US 位置定义了 Cloud Storage 存储桶:

    resource "google_storage_bucket" "gcf_source" {
       name = "gcf-v2-source-9948673986912-us"
       location = "US"
       uniform_bucket_level_access = true
    }
    
  3. 修改 Terraform 配置文件并添加 google_storage_bucket_object 资源,然后应用更改。

    该资源指定存储桶中的对象名称,以及 ZIP 文件在本地系统上的位置。例如,当您应用以下代码时,系统会将名为 example-function.zip 的文件添加到您的存储桶中:

    resource "google_storage_bucket_object" "object" {
       name = "example-function.zip"
       bucket = google_storage_bucket.gcf_source.name
       source = "generic-synthetic-node.js.zip"
    }
    
  4. 修改 Terraform 配置文件并添加 google_cloudfunctions2_function 资源,然后应用更改。

    确保您的 google_cloudfunctions2_function 资源指定了 Node.js 运行时以及合成监视器使用的入口点。例如,当您应用以下代码时,系统会部署一个名为 sm-central1 的函数:

    resource "google_cloudfunctions2_function" "central1" {
       name = "sm-central1"
       location = "us-central1"
    
       build_config {
          runtime = "nodejs20"
          entry_point = "SyntheticFunction"
          source {
                storage_source {
                   bucket = google_storage_bucket.gcf_source.name
                   object = google_storage_bucket_object.object.name
                }
          }
       }
    
       service_config {
          max_instance_count = 1
          available_memory = "256Mi"
          timeout_seconds  = 60
       }
    }
    
  5. 如需创建合成监控器,请修改 Terraform 配置文件并添加 google_monitoring_uptime_check_config 资源,然后应用更改。

    对于此资源,请指定 synthetic_monitor 块:

    resource "google_monitoring_uptime_check_config" "synthetic" {
       display_name = "sm-central1"
       timeout = "30s"
    
       synthetic_monitor {
          cloud_function_v2 {
                name = google_cloudfunctions2_function.central1.id
          }
       }
    }
    
  6. 可选:创建通知渠道和提醒政策。

    以下步骤使用 Google Cloud 控制台创建通知渠道和提醒政策。这种方法可确保提醒政策仅监控合成监控工具生成的数据。

    1. 如需创建通知渠道,请执行以下操作:

      1. 在 Google Cloud 控制台中,转到 提醒页面:

        进入提醒

        如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

      2. 选择管理通知渠道
      3. 前往您要添加的渠道类型,点击添加,然后完成对话框。
    2. 如需创建提醒政策,请执行以下操作:

      1. 在 Google Cloud 控制台中,前往  Synthetic Monitoring 页面:

        前往合成监控

        如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

      2. 找到您的合成监控器,选择 More,然后选择 Add alert policy
      3. 在对话框中,前往通知和名称部分,展开通知渠道,然后进行选择。
      4. 为提醒政策命名,然后点击创建政策

价格

一般来说,Cloud Monitoring 系统指标是免费的,而来自外部系统、代理或应用的指标则需要付费。可计费指标按注入的字节数或样本数计费。

如需详细了解 Cloud Monitoring 的价格,请参阅以下文档:

排查合成监控工具问题

本部分提供了可帮助您排查合成监视器问题的信息。

启用 API 后的错误消息

您打开合成监控工具的创建流程,系统提示您至少启用一个 API。启用这些 API 后,系统会显示类似如下的消息:

An error occurred during fetching available regions: Cloud Functions API has
not been used in project PROJECT_ID before or it is disabled.

错误消息建议您验证 API 是否已启用,然后建议您等待并重试相应操作。

如需验证该 API 是否已启用,请前往项目的 API 和服务页面:

转到“API 和服务”

验证 API 已启用后,您可以继续执行创建流程。在 API 启用通过后端传播后,该条件会自动解析。

传出 HTTP 请求未被跟踪

您可以配置合成监视器,以收集输出 HTTP 请求的轨迹数据。您的轨迹数据仅显示一个 span,类似于以下屏幕截图:

Cloud Trace 仅显示一条轨迹。

如需解决此问题,请确保您的服务账号已被授予 Cloud Trace Agent (roles/cloudtrace.agent) 角色。Editor (roles/editor) 角色也足以解决此问题。

如需查看授予服务账号的角色,请执行以下操作:

  1. 在 Google Cloud 控制台中,进入 IAM 页面:

    前往 IAM

    如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

  2. 选择包括 Google 提供的角色授权
  3. 如果您的合成监控器使用的服务账号未列出,或者未被授予包含 Cloud Trace Agent (roles/cloudtrace.agent) 角色权限的角色,请向您的服务账号授予此角色。

    如果您不知道服务账号的名称,请在导航菜单中选择服务账号

“处理中”状态

合成监控页面列出了状态为 In progress 的合成监控工具。状态为 In progress 表示合成监控器是最近创建的,没有任何数据可显示,或者函数部署失败。

如需确定函数是否部署失败,请尝试以下操作:

  • 确保您的 Cloud Run 函数的名称不包含下划线。如果存在下划线,请移除下划线并重新部署 Cloud Run 函数。

  • 打开合成监控工具的合成监控工具详细信息页面。

    如果您看到以下消息,请删除合成监视器。

    Cloud Function not found for this Synthetic monitor. Please confirm it exists or delete this monitor.
    

    该错误消息表示该函数已被删除,因此合成监控工具无法执行该函数。

  • 打开相应函数的 Cloud Run functions 页面。如需从合成监控器详情页面打开此页面,请点击代码,然后点击函数名称。

    如果您看到类似以下内容的消息,则表示函数部署失败。

    This function has failed to deploy and will not work correctly. Please edit and redeploy
    

    如需解决此失败问题,请检查函数代码,并更正导致函数无法构建或部署的错误。

创建合成监视器时,函数可能需要几分钟才能部署和执行。

警告状态

合成监控列出了状态为 Warning 的合成监控工具。状态为 Warning 表示执行结果不一致。这可能表示测试存在设计问题,也可能表示被测对象的行为不一致。

失败状态

合成监控工具列出了状态为 Failing 的合成监控工具。如需详细了解失败原因,请查看最新的执行历史记录。

  • 如果显示错误消息 Request failed with status code 429,则表示 HTTP 请求的目标拒绝了该命令。如需解决此失败问题,您必须更改合成监视器的目标。

    端点 https://www.google.com 会拒绝合成监控器发出的请求。

  • 如果失败返回的执行时间为 0ms,则表示 Cloud Run 函数可能已耗尽内存。如需解决此失败问题,请修改您的 Cloud Run 函数,然后将内存增加到至少 2 GiB,并将 CPU 字段设置为 1

合成监控工具的删除失败

您使用 Cloud Monitoring API 删除合成监控器,但 API 调用失败,并返回类似于以下内容的响应:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: Cannot delete check 1228258045726183344. One or more alerting policies is using it.Delete the alerting policy with id projects/myproject/alertPolicies/16594654141392976482 and any other policies using this uptime check and try again."
      }
    ]
  }
}

如需解决失败问题,请删除用于监控合成监控工具结果的提醒政策,然后删除合成监控工具。

后续步骤