4

我创建了一个 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

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


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"  
}

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

4

3 回答 3

8

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

gcloud scheduler jobs update http my-super-job --attempt-deadline 540s

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

gcloud scheduler jobs list
gcloud scheduler jobs describe my-super-job
于 2020-08-26T17:01:50.203 回答
0

这是因为您指定的 http 端点未在默认尝试期限内返回响应。 参考链接

于 2020-01-31T16:59:34.883 回答
0

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

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

"status":"RESOURCE_EXHAUSTED",
"@type":"type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"

并在日志数据中:

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" 

“资源耗尽”是 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 Jobs 也有类似的控件

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

于 2019-11-28T15:17:47.953 回答