使用 CloudWatch 进行监控和故障排除



在 AWS Lambda 中创建的函数由 Amazon CloudWatch 监控。它有助于记录触发 Lambda 函数时对其发出的所有请求。

假设以下代码已上传到 AWS Lambda,函数名称为 **lambda and cloudwatch**。

exports.handler = (event, context, callback) => {
   // TODO implement
   console.log("Lambda monitoring using amazon cloudwatch");    
   callback(null, 'Hello from Lambda');
};

测试或触发函数时,您应该在 CloudWatch 中看到一个条目。为此,请转到 AWS 服务并单击 CloudWatch。

Click Cloudwatch

从左侧选择日志。

Select Left Side

单击 **日志** 后,它包含您帐户中创建的 AWS Lambda 函数的 **日志组**。选择任何 AWS Lambda 函数并检查详细信息。在这里,我们指的是名为 **lambdaandcloudwatch** 的 Lambda 函数。此处显示添加到 Lambda 函数的日志,如下所示:

Log Groups

现在,让我们向 Lambda 函数添加 S3 触发器,并查看 CloudWatch 中的日志详细信息,如下所示:

S3 Trigger

让我们更新 AWS Lambda 代码以显示上传的文件和存储桶名称,如下面的代码所示:

exports.handler = (event, context, callback) => {
   // TODO implement
   console.log("Lambda monitoring using amazon cloudwatch");
   const bucket = event.Records[0].s3.bucket.name;
   const filename = event.Records[0].s3.object.key;
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, 'Hello from Lambda');
};

现在,在 **s3storetestlambdaEventbucket** 中添加文件,如下所示:

S3 Store Test

上传文件后,AWS Lambda 函数将被触发,并且来自 Lambda 代码的控制台日志消息将显示在 CloudWatch 中,如下所示:

Cloudwatch Display

如果出现任何错误,CloudWatch 将显示错误详细信息,如下所示:

Cloudwatch Details

请注意,我们在 AWS Lambda 代码中错误地引用了存储桶名称,如下所示:

exports.handler = (event, context, callback) => {
   // TODO implement
   console.log("Lambda monitoring using amazon cloudwatch");
   const bucket = event.Records[0].bucket.name;
   const filename = event.Records[0].s3.object.key;
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, 'Hello from Lambda');
};

事件中的存储桶名称引用错误。因此,我们应该看到 CloudWatch 中显示的错误,如下所示:

Error Displayed

CloudWatch 指标

可以在指标中查看 Lambda 函数执行的详细信息。单击左侧显示的 **指标**。

Metrics Displayed

All Metrics

lambda 函数 **lambdaandcloudwatch** 的图形详细信息如下所示:

Graphed Metrics

Graph Details Graph Details Lambda

它提供了 Lambda 函数执行的持续时间、调用次数以及 Lambda 函数的错误等详细信息。

广告