在 Datadog 中表示时间间隔分布图的最佳方式是什么?

问题描述

我有一个服务器来处理来自不同设备的数据包。设备可以以不同的时间间隔报告。 我想制作一个图表,显示设备数量的间隔分布(有多少设备在 5 秒/10 秒/60 秒内报告......) 每个设备的间隔可能会有所不同。 现在我使用带有表示间隔(5 秒、10 秒、30 秒等)的标签deviceid 发送带有 Set 的指标,但我不确定它是否正确。 实现它的最佳方式是什么?

解决方法

Set 几乎从来都不是要使用的正确自定义指标类型。它将发送每个给定标签的唯一项目数量的计数。基础项目的详细信息将从指标中删除,这意味着从一个时间片到下一个时间片,您将不知道随着时间的推移实际的真实项目数。

例如

3:00:07-3:00:32 | 5 second bucket:[device1,device4,device7] -> 3 values
3:00:32-3:00:47 | 5 second bucket:[device1,device3] -> 2 values

您到 datadog 的时间序列将报告 3,然后是 2。但是,由于底层设备信息被剥离,如果您要及时缩小并汇总数字以显示每分钟 1 个数据点,您将不知道如何组合 2 和 3。它可以是 3 到 5 之间的任何数字,但 Datadog 后端不知道。 (尽管我们知道在那 30 秒内总共有 4 个唯一值)

另外,即使它在某种程度上是准确的,您也无法创建警报或通知任何人,因为如果您在 60 秒内看到设备数量激增,您将不知道哪个设备出现问题。

>

那么让我们来看看其他指标选项。


唯一值得使用的指标类型通常是 distributionsgauges 或 [counts]。

仪表指标只是对某个时间点的延迟的测量,它通常适用于计算机的 CPU 或内存,或房间的温度。无法实际收集一个点的所有数据的数字,因此您只需每 10 秒或每分钟测量一次,或者您永远无法了解行为。

计数指标更准确,它是发生的事情的数量。通常适用于对服务器的请求数或处理的文件数。甚至像流经某物的字节数之类的东西,尽管大多数人通常将其视为衡量标准。

当您想要创建仪表指标时,分布非常有用,但您需要对发生的每个事件进行详细测量。例如,Web 服务器每秒处理数百个请求,我们需要知道该服务器的延迟指标。不可能为每个请求发送延迟指标作为衡量标准。仪表具有每秒 1 个数据点的内置限制(在 Datadog 中)。任何在 1 秒间隔内发送的内容都会被丢弃。但是我们需要每个请求的统计信息,因此分布将汇总数据,它保留运行计数、最小值、最大值、平均值和可选的几个百分位数(p50、p75、p99)。


除了这 3 种指标类型之外,我还没有看到很多好的使用案例。对于您的场景,您似乎希望为该设备间隔发送分布指标。因此,设备 1 发送值 10.14,设备 3 发送值 2.3,依此类推。

然后您可以在仪表板中使用 distribution widget 来显示每个间隔存储区的设备数量。

当然,请确保通过生成指标的设备标记每个指标。