对合成监控和拨测进行问题排查

本文档介绍了如何查找日志数据以及如何 对合成监控和拨测失败进行问题排查:

查找日志

本部分介绍了如何查找 合成监控和拨测:

  1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面。

    前往 Logs Explorer

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

  2. 执行以下任意操作:

    • 要查找与您的合成监控工具或拨测相关的所有日志, 查询。您可以使用资源菜单,也可以 输入查询内容。

      对于拨测,在资源菜单中,选择 Uptime Check 网址,或者在查询中输入以下查询 编辑器,然后点击运行查询

      resource.type="uptime_url"
      

      对于合成监控工具,请在资源菜单中选择 Cloud Run 修订版本,或者在查询中输入以下查询 编辑器,然后点击运行查询

      resource.type="cloud_run_revision"
      
    • 查找包含所收到的响应相关信息的日志 在合成监控或拨测执行期间,执行 以下:

      • 如需使用合成监控工具或拨测的 ID 进行查询,请执行以下操作: 在查询编辑器中输入 ID 时,请使用以下格式, 然后点击运行查询

        labels.check_id="my-check-id"
        
      • 查询包含请求响应数据的日志 合成监控和拨测,请输入 在查询编辑器中输入以下查询,然后点击运行查询

        "UptimeCheckResult"
        

        上一个查询与包含该字符串的所有日志条目匹配 "UptimeCheckResult".

      这些日志包括以下内容:

      • 合成监控工具或拨测的 ID,存储在 labels.check_id 字段中的值。

      • 对于合成监控工具,请输入 Cloud Function 的名称 存储在 resource.labels.service_name 字段中。

      • 收集跟踪记录数据时,关联跟踪记录的 ID、 存储在 trace 字段中。

    • 验证您的服务是否收到了请求 请将以下查询复制到 然后,点击运行查询

      "GoogleStackdriverMonitoring-UptimeChecks"
      

      protoPayload.ip 字段包含 拨测服务器有关如何列出所有 IP 请参阅列出 IP 地址

排查通知问题

本部分介绍了配置服务时可能遇到的一些错误。 提醒政策,并提供用于解决相关问题的信息。

您收到了一条通知,希望对失败情况进行调试

  1. 如需确定失败的开始时间,请执行以下操作之一:

    • 对于拨测,如需确定失败的时间 查看正常运行时间详情页面:

      1. 在 Google Cloud 控制台中,前往  拨测页面:

        前往拨测

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

      2. 查找并选择拨测。

        已通过的检查图表会显示检查的历史记录。 要确定拨测首次失败的时间,您可能需要 修改图表的时间范围。时间范围选择器是 (位于正常运行时间详情页面的工具栏中)。

    • 对于合成监控工具,要确定失败的时间, 查看正常运行时间详情页面:

      1. 在 Google Cloud 控制台中,前往  合成监控页面:

        转到合成监控

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

      2. 查找并选择合成监控工具。
  2. 如需了解如何查找关联的日志数据,请参阅 查找日志部分。

系统不会通知您拨测失败

您配置了拨测,并且正在查看以下服务的正常运行时间详情页面: 检查。您注意到已通过的检查图表显示,至少有一项 检查失败。但是,您并未收到任何通知。

默认情况下,提醒政策会配置为创建一个突发事件并向应用发送 当至少两个区域中的检查人员未能收到响应时发送通知 进行拨测这些故障必须同时发生。

您可以修改提醒政策的条件,以便收到通知 当单个区域未能收到响应时触发。不过,我们建议您 来使用默认配置,这样可以减少 您可能会因暂时性故障而收到的数据

如需查看或修改提醒政策,请执行以下操作:

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

    进入提醒

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

  2. 点击 Policies 窗格中的 See all policies
  3. 找到您想查看或修改的政策,然后点击 政策的名称。

    您可以在政策详情页面查看和修改相关政策。

排查公共拨测问题

本部分介绍了使用 并提供用于解决这些问题的信息。

您的公开拨测失败

您配置了公开拨测,但在以下情况下收到错误消息: 执行验证步骤。

以下是导致正常运行时间检查失败的原因:

  • 连接错误 - 拒绝 (Connection Error - Refused):如果您使用的是默认的 HTTP 连接类型,请检查您是否安装了响应 HTTP 请求的网络服务器。如果您尚未安装网络服务器,则新实例可能会发生连接错误;请参阅 Compute Engine 快速入门。 如果您使用的是 HTTPS 连接类型,则可能必须执行其他配置步骤。如需了解防火墙问题,请参阅 列出拨测服务器 IP 地址
  • Name or service not found:主机名可能不正确。
  • 403 Forbidden:服务向正常运行时间检查工具返回错误代码。例如,在 Amazon Linux 中,默认的 Apache 网络服务器配置会返回此代码;但在其他一些 Linux 版本中,该网络服务器配置会返回代码 200 (Success)。请参阅 Amazon Linux 的 LAMP 教程或您网络服务器的文档。
  • 404 Not found:路径可能不正确。
  • 408 Request timeout 或无响应:端口号可能不正确、服务可能未运行、服务可能无法访问或者超时值可能太小。检查您的防火墙 允许来自正常运行时间服务器的流量;请参阅 列出拨测服务器 IP 地址。 超时限制是响应验证选项的一部分。

为帮助您排查失败的公共拨测问题,您可以 拨测发送 检查期间的 ICMP ping。这些 ping 可帮助您区分 例如网络连接问题和 应用超时如需了解详情,请参阅 使用 ICMP ping

排查专用拨测问题

本部分介绍您在使用非公开拨测时可能遇到的一些错误,并提供了解决这些错误的相关信息。

拨测创建失败

您的 Google Cloud 项目设置可能会阻止修改已分配的角色 拨测用于 管理与 Service Directory 服务的交互。 在这种情况下,拨测创建失败。

本部分介绍如何向服务账号授予角色 要求:

Google Cloud 控制台

使用 Google Cloud 控制台创建专用拨测时, Google Cloud 控制台会发出命令 为服务账号分配 Service Directory 角色。

如需了解如何向服务账号授予角色, 请参阅为服务账号授权

API:确定项目范围

首次为某个集群创建专用拨测时, Service Directory 服务和专用资源 运行单个 Google Cloud 项目时 请求可能会成功或失败结果取决于您是否在项目中停用了为服务账号自动授予角色功能:

  • 如果您的项目允许为服务账号自动授予角色,则首次创建拨测会成功。系统会为您创建服务账号并授予必要的角色。

  • 如果您的项目不允许向服务账号授予自动角色授予,则首次正常运行时间检查创建会失败。系统会创建服务账号,但不会授予任何角色。

如果创建拨测失败,请执行以下操作:

  1. 向服务账号授权
  2. 请等待几分钟让系统传播授权。
  3. 尝试再次创建非公开拨测。

API:受监控的项目

首次创建以 Service Directory 服务,或者 不同 Google Cloud 项目中的私有资源, 请求失败,并导致系统创建一个 Monitoring 服务账号。

您向服务账号授权的方式取决于 您正在使用的 Google Cloud 项目及其关系。 您可能最多会涉及四个项目:

  • 您在其中定义了专用拨测的项目。
  • 您在其中配置 Service Directory 服务。
  • 您配置 VPC 网络的项目。
  • 虚拟机或负载平衡器等网络资源所在的项目 配置。此项目在服务账号授权中没有角色 此处讨论的。

如果首次创建拨测失败,请执行以下操作:

  1. 向服务账号授权
  2. 请等待几分钟让系统传播授权。
  3. 尝试再次创建非公开拨测。

访问遭拒

您的拨测会失败并显示 VPC_ACCESS_DENIED 结果。此结果意味着网络配置或服务账号授权的某些方面不正确。

检查服务账号授权是否使用范围 项目或受监控项目,如 拨测创建失败

如需详细了解如何访问专用网络,请参阅配置网络项目

专用拨测产生的异常结果

您的 Service Directory 服务配置如下: 您的服务配置包含多个端点 当您关停其中一个虚拟机时,拨测仍然显示成功。

如果您的服务配置包含多个端点 随机选择。如果与所选端点关联的虚拟机正在运行, 即使其中一个虚拟机发生了故障,拨测也会成功。

默认标头

您的正常运行时间检查返回错误或意外结果。如果您替换了默认标头值,则可能会发生这种情况。

在向目标端点发送针对非公开拨测的请求时,该请求会包括以下标头和值:

标题
HTTP_USER_AGENT GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
HTTP_CONNECTION keep-alive
HTTP_HOST Service Directory 端点的 IP
HTTP_ACCEPT_ENCODING gzipdeflatebr
CONTENT_LENGTH 根据正常运行时间发布数据计算得出

如果您尝试替换这些值,则可能会发生以下情况:

  • 拨测会报告错误
  • 替换值会被丢弃,并替换为表中的值

不显示任何数据

在拨测信息中心 拨测位于与 Service Directory 服务。

确保包含拨测的 Google Cloud 项目 会监控包含 Service Directory 服务。

如需详细了解如何列出受监控项目以及如何添加其他 请参阅 为多个项目配置指标范围

合成监控工具问题排查

本部分提供的信息可以帮助您 合成监控工具

启用 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 Function 的名称没有 包含下划线。如果存在下划线,请移除下划线 然后重新部署 Cloud Function。

  • 打开合成监控工具的合成监控工具详情页面。

    如果您看到以下消息,请删除合成监控工具。

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

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

  • 打开函数的 Cloud 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 Function 可能内存不足。解决方法: 请修改 Cloud Function 函数 设置为至少 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."
      }
    ]
  }
}

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

无法修改损坏链接检查工具的配置

您使用 Google Cloud 控制台创建了一个损坏的链接检查工具, 以更改被测试的 HTML 元素,或者您想要修改 URI 超时、重试、等待选择器和各链接选项。 但是,当您修改损坏链接检查工具时,Google Cloud 控制台不会 显示配置字段。

如需解决此故障,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往  合成监控页面:

    转到合成监控

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

  2. 找到您要修改的合成监控工具。 点击 更多选项,然后选择修改
  3. 点击修改函数
  4. 修改 index.js 文件中的 options 对象,然后 点击应用函数

    有关此对象的字段和语法的信息,请参阅 broken-links-ok/index.js.

  5. 点击保存

Google Cloud 控制台显示,屏幕截图保存失败

您创建了一个损坏的链接检查工具,并将其配置为保存屏幕截图。 不过,Google Cloud 控制台会显示以下警告之一 消息以及更多详细信息:

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

如需解决这些故障,请尝试以下操作:

  • 如果看到 InvalidStorageLocation 消息,请验证是否存在 存储分区的存储 Cloud Storage 存储桶的 options.screenshot_options.storage_location.

  • 查看与您的 Cloud Function 相关的日志。 如需了解详情,请参阅查找日志

  • 确认相应服务中使用的服务账号 Cloud Function 拥有 Identity and Access Management 角色 对 Cloud Storage 存储分区的访问权限和写入数据。