Datadog独特的自定义指标

时间:2020-08-26 17:58:54

标签: metrics datadog

考虑以下情况:

  • lambda通过SQS接收事件
  • lambda接收一个指向实体的uuid。
  • lambda可能会因错误而失败
  • SQS将多次重试该特定实体
  • lambda将被不同的实体调用数千次

现在,我们监视诸如myService.errorType之类的自定义错误计数指标。 这将为我们提供错误发生次数的确切数字-与特定实体无关:如果某个实体不能像100次一样被处理,则度量标准值为100

我想拥有的是基于UUID的不同指标。 示例:

  • id为123的实体失败10次
  • id为456的实体成功
  • id为789的实体失败20次

然后,我希望有一个值为2的度量标准-因为该过程仅对两个实体失败(而不是对30个失败,因为现在会报告)。

在寻找解决方案时,我发现可以使用标签。但是as the docs point并不适合这种用例:

标签不应源自无限制的来源,例如时代时间戳记,用户ID或请求ID。这样做可能会无限地增加您组织的指标数量,并影响您的帐单。

还有其他实现我目标的可能性吗?

2 个答案:

答案 0 :(得分:0)

我现在通过代码验证状态并向指标添加标签来解决了这个问题:

  • occurrence:first
  • subsequent

通过这种方式,我只能在仪表板中过滤occurrence:first

答案 1 :(得分:0)

为了确保一切都清楚,您有一个名为myService.errorType的度量标准,标签为entity。此指标是一个计数器,每次实体出错时都会增加。然后,您将使用以下指标查询:

sum:myService.errorType{*} by {entity}

当您谈论UUID时,基数似乎很小(此处显示3)。这意味着您每小时都有少量可用的UUID。在这种情况下,将UUID添加到度量标准标记并不像具有无限数量选项的用户ID,时间戳等至关重要。

我邀请您添加此uuid标记,并检查metric summary page中的基数以确保其有效。

然后要获取错误所关注的UUID数量,可以使用类似以下内容的

count_not_null(sum:myService.errorType{*} by {uuid})

最后,或者,如果UUID的基数可以通过,我将邀请您使用日志或使用Christopher的解决方案,这似乎也限制了基数的增加。