GCP Cloud Scheduler 为 HTTP 目标类型抛出错误

Bil*_*nno 3 google-cloud-platform google-cloud-scheduler

我创建了一个 GCP Cloud Scheduler 作业,每 15 分钟运行一次。它应该从我的 Node js 应用程序调用 API。在控制台中,作业定义如下所示:

Description: A job
Frequency: */15 * * * *
Timezone: Central Standard Time
Target: HTTP
URL: https://<company url>/api/email-reminder/
HTTP method: GET
Auth header: Add OIDC token
Service account: xxxxxxxxxxx-compute@developr.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)

当它运行时,它会在日志中返回以下内容:


httpRequest: {
 }
 insertId: "15wxxxxxxge1lv"  

jsonPayload: {
  @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
  jobName: "projects/<project name>/locations/us-central1/jobs/xxxxxxxxx-scheduler-emailreminders-1"   
  status: "UNKNOWN"   
  targetType: "HTTP"   
  url: "https://<company url>/api/email-reminder/"   
 }
 logName: "projects/<project name>/logs/cloudscheduler.googleapis.com%2Fexecutions"  
 receiveTimestamp: "2019-11-14T04:45:50.280446452Z"  

resource: {

labels: {…}   
  type: "cloud_scheduler_job"   
 }
 severity: "ERROR"  
 timestamp: "2019-11-14T04:45:50.280446452Z"  
}
Run Code Online (Sandbox Code Playgroud)

如何找到有关错误的更多信息?

小智 6

超时调度程序作业进程的默认值是 180 秒,您可以通过 gcloud 命令更改

gcloud scheduler jobs update http my-super-job --attempt-deadline 540s
Run Code Online (Sandbox Code Playgroud)

您也可以使用此命令查看作业的完整信息...

gcloud scheduler jobs list
gcloud scheduler jobs describe my-super-job
Run Code Online (Sandbox Code Playgroud)


Ste*_*der 1

我最近在使用 Cloud Scheduler for HTTPS 目标时遇到了类似的问题。每隔一段时间,调度程序就会失败,我得到的只是像你这样的日志消息。

在日志查看器中查看,日志的关键部分在日志头中:

"status":"RESOURCE_EXHAUSTED",
"@type":"type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"
Run Code Online (Sandbox Code Playgroud)

并在日志数据中:

httpRequest: {
  status: 429   
}
jsonPayload: {
  @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
  jobName: "projects/joburlhere"   
  status: "RESOURCE_EXHAUSTED"   
  targetType: "HTTP"   
  url: "https://urlgoeshere"   
}
severity: "ERROR" 
Run Code Online (Sandbox Code Playgroud)

“资源耗尽”是429错误代码的描述。

这里有一段代码的描述:

https://cloud.google.com/apis/design/errors

429 RESOURCE_EXHAUSTED 超出资源配额或达到速率限制。客户端应查找 google.rpc.QuotaFailure 错误详细信息以获取更多信息。

鉴于我每小时运行一次此作业,并且接收器是一个非常适度的云功能,我不会做任何导致资源耗尽的事情。所以我认为这是谷歌云基础设施反复出现的暂时性问题。我猜测云函数对于该特定请求不可用,并且因为我使用默认设置设置了云函数,所以调度程序没有重试。

此外,可以配置调度程序作业以在失败时重试。此功能未显示在 Web 控制台中,但您可以使用gcloud命令控制它。

默认设置是不重试。

--max-retry-attempts旗帜。

https://cloud.google.com/sdk/gcloud/reference/scheduler/jobs/update/http

pubsub 作业也有类似的控件

https://cloud.google.com/sdk/gcloud/reference/scheduler/jobs/update/pubsub