如何在 Elastic Beanstalk 环境的工作线程层中排查 Cron 作业问题?

上次更新时间:2019 年 10 月 11 日

如何在 AWS Elastic Beanstalk 环境的工作线程层中排查 Cron 作业问题?

简短描述

如果工作线程层中未显示 Cron 作业,请完成将 Cron 作业添加到工作线程环境部分的步骤。如果工作线程层中仍未显示 Cron 作业,请按照排查工作环境中有关 Cron 作业的问题部分中的步骤操作。

解决方法

将 Cron 作业添加到工作线程环境

要将 Cron 作业添加到 Elastic Beanstalk 环境的工作线程层,请在源代码的 root 目录下添加 cron.yaml 文件。请参阅以下示例:

version: 1
cron:
 — name: "schedule"
   url: "/schedule"
   schedule: "0 */12 * * *"

注意:在上面的示例中,名为 schedule 的 Cron 作业每 12 小时向 Elastic Beanstalk 工作线程环境中的 /schedule 终端节点提交一次 POST 请求。

排查工作线程环境中有关 Cron 作业的问题

1.    在您的 Elastic Beanstalk 环境的事件流中,检查如下事件

Successfully loaded 1 scheduled tasks from cron.yaml

2.    在您的 /var/log/eb-commandprocessor.log 文件中,检查如下日志:

{"status":"SUCCESS","api_version":"1.0","results":[{"status":"SUCCESS","msg":"","returncode":0,"events":[{"msg":"Successfully loaded 1 scheduled tasks from cron.yaml.","severity":"INFO","timestamp":1562000593}]}]}

3.    在您的 /var/log/aws-sqsd/default.log 文件中,确认 Amazon Simple Queue Service (Amazon SQS) 守护程序是否正在运行并轮询正确的队列。

如果正确启动了 Amazon SQS 守护程序,您应看到如下日志:

2019-07-04T14:11:21Z init: initializing aws-sqsd 2.4 (2018-09-06)
2019-07-04T14:11:21Z pollers: start initializting poller timer...
2019-07-04T14:11:21Z pollers: start auto running poller...
2019-07-04T14:11:21Z start: polling https://sqs.us-west-2.amazonaws.com/111122223333/yourWorkerQueue

4.    在您的 /var/log/aws-sqsd/default.log 文件中,检查当 Amazon SQS 守护程序轮询队列项目时向端口 80 上的 http://localhost/ 发送的 HTTP POST 请求。

您应该会看到如下消息:

2019-07-05T13:54:52Z message: sent to http://localhost:80/

5.    要确认消息是否已传递到 SQS 队列,请检查指标 NumberOfMessagesReceived,以获取与工作线程环境相关联的队列。

注意:您还可以将消息手动发送到队列,以检查 Cron 作业。

6.    要手动调用计划的任务,请运行以下 Curl 命令:

curl -d param1=value1 -d param2=value2 -H "Content-Type: application/json" -X POST http://localhost/scheduled-task-path

-d (--data) 标志可以保存您要传递到 Cron 作业的数据。

注意:定期任务不适用于配置了 Amazon SQS FIFO 队列的工作线程环境。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?