监视和调试所有国内云服务器错误

 云服务器     |      2019-09-28 10:01:26

 

  无服务器框架最流行的功能之一是它具有通过自动检测提供监视的能力。通过注册一个免费的Serverless Framework帐户并部署您的服务,该服务将自动进行配置,以捕获提供指标,警报,通知,堆栈跟踪等所需的所有数据。

  当涉及监视和调试错误时,此功能特别强大。当您的代码引发错误时,无服务器框架提供了几种监视和调试这些错误的方法:

  您将收到服务实例的“ 新错误类型”警报,在Slack或Email中通知您已识别出新错误。

  捕获了堆栈跟踪,并且在无服务器仪表板中,您可以看到堆栈跟踪突出显示了引发错误的确切行。

  调用和错误图表将显示一段时间内发生错误的次数。

  使用调用浏览器,您可以搜索并识别出错误的单个调用,并深入研究所有细节。

  难怪这是一个如此受欢迎的功能。

  但是,直到今天,捕获错误仅在代码未捕获错误并导致Lambda调用致命崩溃的情况下有效。但是,当然,我们不希望我们的服务在这种情况下返回500,因此,错误常常被捕获,Lambda函数返回更好的4XX错误。

  今天,我们将推出无服务器框架的新功能,以帮助捕获错误,即使错误已被您的代码捕获。因此,让我们先来看一下这段代码。

  module.exports.hello = async (event, context) => {

  try {

  // do some real stuff but it throws an error, oh no!

  throw new Error('new error')

  } catch (error) {

  context.captureError(error)

  }

  return {

  statusCode: 400,

  body: JSON.stringify({ error: 'my nice error message' }),

  };

  };

  在上面的示例中,我们的lambda函数处理程序抛出错误;但是,它也被捕获。它captureError在context对象中调用由无服务器框架SDK提供的功能。该函数能够继续执行并向API返回一个友好的错误,同时仍捕获该错误。该文档提供了有关使用该captureError方法的更多详细信息。

  现在,该错误已由无服务器框架捕获,您可以使用强大的仪表板功能来帮助监视和调试这些错误。您可以通过以下几种方式与仪表板上的这些新捕获的错误进行交互。

  当捕获到以前从未捕获的新错误时,您将收到“ 新错误类型”警报。您还可以设置通知以在Slack或电子邮件或自定义SNS主题或API端点中获得通知。

 

  新的错误类型警报

  所有错误(包括致命错误和捕获的错误)在Invocation Explorer中都可用,因此您可以筛选包含错误的调用。

  带有过滤器的调用资源管理器

  同样,在调用资源管理器中,您可以深入研究各个调用的详细信息以获取有关错误的详细信息,包括captureError代码中的方法捕获的堆栈跟踪。

 

  具有堆栈跟踪的调用资源管理器详细信息

  最后,在服务实例概述页面中,您可以查看调用指标并筛选结果以标识捕获的错误。

  调用和错误表

  如果您想改善对无服务器框架应用程序的监视和调试,那么使用自动检测非常容易。在仪表板中注册,然后按照说明启动新的Serverless Framework项目或将仪表板功能合并到现有服务中。