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
你的时间序列数据狗将报告3,然后是2。但是由于底层设备信息被剥离,如果您及时缩小并汇总数字以显示每分钟 1 个数据点,您不知道如何组合 2 和 3。它可以是从 3 到 5 的任何数字,但 Datadog 后端不知道。 (尽管我们知道在这 30 秒内总共有 4 个唯一值)
此外,即使它以某种方式准确无误,您也无法创建警报或通知任何人,因为如果您在 60 秒存储桶中看到设备数量激增,您将不知道哪个设备出现问题。
让我们来看看其他指标选项。
唯一值得使用的指标类型通常是 distributions 或 gauges 或 [counts]。
仪表指标只是衡量某个时间点的延迟,它通常适用于计算机的 CPU 或内存,或房间的温度。无法实际收集所有数据的数字,因此您只需每 10 秒或每分钟进行一次测量,或者无论多么频繁,您都无法了解行为。
计数指标更准确,它是发生的事情的数量。通常适用于对服务器的请求数或处理的文件数。甚至像流经某物的字节数之类的东西,尽管大多数人通常将其视为一个计量器。
当您想要创建计量指标时,分布非常有用,但您需要对发生的每一个事件进行详细的测量。例如,一个 Web 服务器每秒处理数百个请求,我们需要知道该服务器的延迟指标。不可能为每个请求发送延迟指标作为衡量标准。仪表具有每秒 1 个数据点的内置限制(在 Datadog 中)。在 1 秒间隔内发送的任何更多内容都会被丢弃。但是我们需要每个请求的统计信息,因此分布会汇总数据,它会保持运行计数、最小值、最大值、平均值以及可选的几个百分位数(p50、p75、p99)。
我没有看到这 3 种之外的指标类型的许多好的用例。对于您的场景,您似乎希望发送该设备间隔的分布指标。所以设备 1 发送的值是 10.14,设备 3 发送的值是 2.3,依此类推。
然后您可以在仪表板中使用distribution widget 来显示每个间隔桶的设备数量。
当然,请确保您通过生成指标的设备标记每个指标。