【发布时间】:2022-02-16 12:45:33
【问题描述】:
我创建了一个 API 端点,当它被 HTTP Post 请求成功访问时,它会返回一个整数。我希望 AWS CloudWatch 计划进程每分钟运行一次 AWS Lambda 函数来检查 API 端点,因此请确保该值不为零。我已经设置了计划的 AWS CloudWatch 进程和 AWS Lambda 函数,其中运行时是 Node.js 10。但是,当我查看 AWS CloudWatch 组的流日志时,日志似乎是乱序的。我怀疑这是因为对 API 端点的 HTTP 请求是异步运行的,但我最终不知道。将此 HTTP 请求的值记录到 API 端点所需的时间似乎比处理请求的实际时间长得多。
这是每分钟运行的 Node.js lambda 函数:
exports.handler = async (event) => {
var datetime = new Date();
var request = require("request");
var options = {
method: 'POST',
url: 'https://website.com/api/getDataPoints',
headers:
{
'cache-control': 'no-cache',
'content-type': 'text/plain'
},
body: '{"token" : "yT7g8urUFmEZwQrJNHgQGRDA9zScpNzPM3rb"}'
};
await request(options, function (error, response, body) {
if (error)
{
throw new Error(error);
// Email and SMS message that this is having an error
}
if (body == 0)
{
// Email and SMS message that this is having an error
// Restart EC2 server
}
console.log(datetime.toString() + " - " + body + " Data Points!");
});
};
这是 AWS CloudWatch 日志,在该日志中更容易看到记录来自 HTTP 请求的响应的延迟:
如果您能深入了解这种感知到的日志延迟的原因或就如何以更有效的方式获得类似结果的建议,我们将不胜感激!谢谢!
【问题讨论】:
-
Kautz,为什么不使用 AWS Route53 健康检查功能 (docs.aws.amazon.com/Route53/latest/DeveloperGuide/…)?它旨在监控 HTTP/HTTPS 端点的健康状况。
标签: node.js amazon-web-services aws-lambda