第 2 部分:如何监控无服务器应用程序
这篇文章来自https://rachelisaweso.me/posts/serverless-lambda-pt2/ 并且是由 Rachel White@ohhoe
通过我们的 AWS 集成,Datadog 可以轻松设置对您的无服务器功能的监控。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--qFWqFMjV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/vghop0cgeagh7y2p19g5.png)
第一部分是启用 AWS 集成。前往AWS 集成磁贴并填写您的信息。
AWS 集成设置了一些 IAM 角色,并开始从您的 AWS 账户中获取有关您的 AWS 基础设施中正在发生的事情的信息。
接下来,我们设置 Datadog Forwarder Lambda 函数,这是摄取 AWS Lambda 跟踪、增强指标、自定义指标和日志所必需的。
https://docs.datadoghq.com/serverless/forwarder/
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--nn7OuE1R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/tuqlw0ce3a1o6lkuplcx.png)
您可以直接从我们的文档中启动。它会询问您的 Datadog API 密钥,您可以在 Datadog Dashboard 上的 Integrations > APIs 下找到该密钥。
https://app.datadoghq.com/account/settings#api
现在我们已经添加了集成和转发器,我们可以开始检测我们的 Lambda 函数。
我们需要在serverless.yml文件中添加更多信息。
custom:
datadog:
flushMetricsToLogs: true
apiKey:
addLayers: true
logLevel: "info"
enableXrayTracing: true
enableDDTracing: true
forwarder:
enableTags: true
injectLogContext: true
plugins:
- serverless-plugin-datadog
进入全屏模式 退出全屏模式
https://docs.datadoghq.com/serverless/serverless_integrations/plugin/
我们的无服务器插件具有配置选项,您可以根据具体用例的需要使用这些选项。您需要在此处添加 Datadog API 密钥。
除了无服务器插件之外,我们还将添加 AWS X-Ray 集成,让开发人员可以跟踪使用 AWS 产品构建的分布式应用程序。
https://docs.datadoghq.com/integrations/amazon_xray/?tabu003dnodejs
在添加到您的代码之前,您需要确保您的 AWS/Datadog 角色的策略文档中存在以下权限。
'use strict';
const AWSXRay = require('aws-xray-sdk');
const AWS = AWSXRay.captureAWS(require('aws-sdk'));
AWSXRay.captureHTTPsGlobal(require('http'));
AWSXRay.captureHTTPsGlobal(require('https'));
// captures axios chained promises.
AWSXRay.capturePromise();
const AxiosWithXray = require('axios');
进入全屏模式 退出全屏模式
之后,我们从第 1 部分返回到我们的handler.js文件。运行npm install aws-xray-sdk并在您的 Lambda 函数_first_中要求它,因为您想捕获在包含它之后发生的所有事情。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--BD6-twT_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/j9zjc69i721hka0ec7ub.png)
我们添加了用于捕获所有 HTTP 和 HTTPS 跟踪以及捕获链式 Promise 的代码,这非常重要,因为 Node.js 的大部分内容都是基于 Promise 的。
我们还将 Axios 全局名称更改为 axioswithxray,以便我们记住我们也在捕获这些响应。我们将更改之前调用 Axios 的代码行。
最后一次运行sls deploy,以便我们的检测完全反映在我们的无服务器功能中,这就是我们针对特定用例所要做的全部。
您可以在 X-Ray 文档中查看有关跟踪 SQL 查询和其他选项的其他文档:https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-nodejs.html
现在我们已经设置了 AWS 集成并检测了我们的无服务器应用程序,我们可以开始更深入地了解我们的系统是如何工作的。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--50Ib6hpd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/s8r39msr5pmgqjqelrzp.png)
更多推荐
所有评论(0)