Datadog 独特的自定义指标

Datadog distinct-like custom metrics

给定以下场景:

现在我们监控自定义错误计数指标,例如 myService.errorType。 这给了我们错误发生次数的确切数字 - 独立于特定实体:如果一个实体不能被处理 100 次,那么度量值将为 100.

不过,我想要的是一个基于 UUID 的独特指标。 示例:

然后我想要一个值为 2 的指标 - 因为进程仅针对两个实体失败(而不是 30 个实体,因为它会立即报告)。

在寻找解决方案时,我发现了使用标签的可能性。但是 as the docs point 它们不适用于这样的用例:

Tags shouldn’t originate from unbounded sources, such as epoch timestamps, user IDs, or request IDs. Doing so may infinitely increase the number of metrics for your organization and impact your billing.

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

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

  • occurrence:first
  • subsequent

这样我就可以在我的仪表板中仅针对 occurrence:first 进行过滤。

为确保事情清楚,您有一个名为 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 的解决方案,这似乎也限制了基数的增加。