【问题标题】:What is the best way to represent a chart of distribution of time intervals in Datadog?在 Datadog 中表示时间间隔分布图的最佳方法是什么?
【发布时间】:2021-03-01 03:49:21
【问题描述】:

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

【问题讨论】:

    标签: charts statistics datadog statsd


    【解决方案1】:

    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 秒存储桶中看到设备数量激增,您将不知道哪个设备出现问题。

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


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

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

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

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


    我没有看到这 3 种之外的指标类型的许多好的用例。对于您的场景,您似乎希望发送该设备间隔的分布指标。所以设备 1 发送的值是 10.14,设备 3 发送的值是 2.3,依此类推。

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

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

    【讨论】:

    • 谢谢。不幸的是,我负担不起为每台设备添加标签,因为我有数千台设备,而且成本很高。
    • 你说你已经有 deviceid 所以它已经被标记了。您只需要将函数从集合更改为分布
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2019-08-23
    • 2010-12-02
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多