这篇文章来自https://rachelisaweso.me/posts/serverless-lambda-pt2/ 并且是由 Rachel White@ohhoe

通过我们的 AWS 集成,Datadog 可以轻松设置对您的无服务器功能的监控。

[aws 集成](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/

[datadog 转发器](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_中要求它,因为您想捕获在包含它之后发生的所有事情。

[handler xray](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)

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐