我正在设置 Cloudwatch,并希望能够跟踪我的无服务器设置(APIGateway -> 各种 lambda)何时出现 5xx 错误。然后我希望能够了解导致问题的原因。
我发现要设置闹钟,我首先需要有一个指标。好处是 API 网关内置了指标:转到指标 -> 所有指标 -> AWS 命名空间 -> ApiGateway。
4xxError
、5xxError
等
因此,我为一个阶段设置了 5xxError 指标和相关警报,比如说
my-example-gateway
。 最近触发了5xxError
警报。现在我知道我的应用程序出现 5xx 错误,我的问题是 如何深入到各个日志条目以查看更多信息?
对我来说有趣的是,我还没有为
my-example-gateway
设置日志记录:https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html - 所以现在我do已经设置了日志记录,并且可以查看网关的执行日志。但是,AWS 如何/在哪里收集上述默认指标的日志(5xxError)?
如果我进入日志 -> 日志组(在设置上述执行日志之前),我没有看到
my-example-gateway
的日志组。现在我就这么做了API-Gateway-Execution-Logs_<my-example-gateway-id>/<stage>
在指标仪表板中的视觉效果旁边,我确实看到了
View Logs
和 View in Metrics
的选项,但是 View Logs
并没有带我到任何有用的地方,只是转到包含所有日志组的默认日志组页面。
[![查看日志下拉菜单][1]][1] [1]:https://i.sstatic.net/0k91J8rC.png
如何深入查看各个日志条目以查看更多信息?
简单的答案是你不能直接这样做。 AWS 仅帮助您捕获日志,但打印什么以及如何使用这些日志取决于您。
对我来说效果很好的一种方法是使用 CloudWatch Insights,根据相关指标选择日期范围,并使用如下所示的各种字符串进行搜索。然后,我找到 API 网关请求 ID 并使用它来检索与该特定请求相关的所有日志。这提供了有关错误消息和请求失败原因的详细信息。此外,我从日志中提取了 AWS 集成终端节点 RequestId,以便在 Lambda 日志中进一步调查。
您还可以检查 Lambda 日志中的错误消息,因为这些日志是由您的应用程序生成的,通常包含更详细的信息。不幸的是,这是目前搜索日志的唯一方法。我知道这就像大海捞针一样。
此外,您还可以探索异步发送日志到 Amazon SQS 等解决方案,这样您就可以根据您的特定需求过滤和处理日志。日志进入 SQS 后,您可以按照自己的喜好查询和过滤它们。另一种方法是使用 CloudWatch 订阅过滤器来实时捕获和监控特定的错误情况。
或者,您可以将日志转发到 Splunk 或 Datadog 等第三方平台,它们提供高级查询功能和分析功能,帮助您从日志数据中获得更深入的见解。