【问题标题】:How come Stackdriver messes up my error groupingStackdriver 怎么弄乱了我的错误分组
【发布时间】:2020-05-11 22:27:54
【问题描述】:

根据我的经验,Stackdriver 错误报告服务将不相关的错误组合在一起。这在几个层面上对我来说都是一个大问题:

  • 标题通常与“最近的样本”中报告的错误无关。因此,我必须查看每个错误的示例,以了解真正发生了哪些错误,因为标题确实不可信。
  • 我可能会将错误设置为“静音”,因此不再报告分组在同一标题下的其他错误。我可能需要几个月的时间才能发现发生了某些我不知道的错误。
  • 一般来说,我不了解发生的错误率。

这一切似乎违反了错误报告系统的基本功能,所以我想我一定遗漏了一些东西。

代码在 Firebase Functions 上运行,因此 Google Cloud Functions 的 Firebase 风格是用 Typescript 编写的(使用 Firebase 预部署脚本编译为 Javascript)。

我使用console.error 记录错误,参数格式为错误实例,如console.error(new Error('some error message'))。 AFAIK 这是在 Node.js 上运行代码的正确方法。

有什么特别的方法可以让 Stackdriver 更好地理解我的代码吗?

我在函数部署的根目录中有这个:

import * as sourceMaps from "source-map-support";
sourceMaps.install();

下面是一个错误类别的屏幕截图。您会看到错误标题为“服务当前不可用”,但示例包含“请求包含无效参数”和“此请求已被锁定...”的错误

关于服务和无效参数的错误可能与 FCM 服务有关,因此有一些相关性,尽管我认为这些错误是非常不同的。

关于请求锁的错误实际上是完全不相关的。在这种情况下,“请求”一词的含义确实不同,但这个词是我能看到的唯一关系。

【问题讨论】:

    标签: firebase google-cloud-functions google-cloud-stackdriver


    【解决方案1】:

    错误报告支持 Javascript,但不支持 documentation for the product 中提到的 Typescript,但是,您应该查看您的日志,看看它们是否为 properly formatted,以便在错误报告中提取它们。

    另外,请记住,错误是根据this document 上的指南进行分组的,因此您可能无法获得由于它们而得到的分组。

    希望你觉得这很有用。

    【讨论】:

    • 云函数不运行 Typescript 代码。该代码被编译为 Javascript 以在 Node.js 上运行。我现在已经在正文中阐明了这一点。我没有使用 Stackdriver API。这些错误是从console.error() 中提取的,并且格式正确(作为错误对象的实例)。我也会提到这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    相关资源
    最近更新 更多