Node.js中AWS Lambda的Sentry不会发送异常

时间:2019-02-17 18:25:11

标签: node.js aws-lambda sentry

我正在尝试在AWS Lambda(nodejs 8.10)上配置哨兵,但未将异常发送到Sentry。我感觉这是时间问题:在将数据发送到哨兵之前,lambda已终止。

哪种方法是在AWS Lambda上集成哨兵的正确方法?

谢谢!

3 个答案:

答案 0 :(得分:3)

您必须使用函数flush,以确保将发送当前排队的所有事件:

Sentry.captureException(new Error('test'));
await Sentry.flush();

http://getsentry.github.io/sentry-javascript/modules/node.html#flush

答案 1 :(得分:1)

安装哨兵/节点

npm i @sentry/node

将此代码添加到您的lambda顶部

const Sentry = require("@sentry/node");
Sentry.init({
  dsn: "https://0dc9558ffb934657b6c3b97182b4338d@sentry.io/182963" // your_dsn_key_here
});

使用哨兵对象

 try {
   //Logic here
  } catch (error) {
    Sentry.captureException("Error on getLogsById");
  }

答案 2 :(得分:1)

安装Sentry模块

npm install @sentry/node

请参阅下面的示例,以使用Sentry配置AWS Lambda功能。

      // Import the Sentry module.
      const Sentry = require("@sentry/node");
      // Configure the Sentry SDK.
      Sentry.init({
        dsn: "your dsn",
      });

      exports.handler = function (event, context) {
        try {
          textFunctionCall(); // Call undefined function.
        } catch (e) {
          Sentry.captureException(e); // using this function exception captured in Sentry dashboard.
          Sentry.flush(2000);
        }

        const response = {
          statusCode: 200,
          body: "Hello, exception captured",
        };

       return response;
      };

https://docs.sentry.io/platforms/node/serverless/#aws-lambda

仍然没有在Sentry中捕获错误,然后安装波纹管节点模块,这些是依赖项。

npm install lru-cache
npm  install lru_map
npm install tslib