charts - 在 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 秒存储桶中看到设备数量激增,您将不知道哪个设备出现问题。
因此,让我们来看看其他指标选项。
仪表指标只是对某个时间点的延迟的测量,它通常适用于计算机的 CPU 或内存,或房间的温度。不可能实际收集所有数据的数字,因此您只需每 10 秒或每分钟进行一次测量,或者无论多么频繁,您都无法了解行为。
计数指标更准确,它是发生的事情的数量。通常适用于对服务器的请求数或处理的文件数。甚至像流过某事物的字节数之类的东西,尽管大多数人通常将其视为衡量标准。
当您想要创建计量指标时,分布非常有用,但您需要对发生的每个事件进行详细测量。例如,一个 Web 服务器每秒处理数百个请求,我们需要知道该服务器的延迟指标。不可能为每个请求发送延迟指标作为衡量标准。仪表具有每秒 1 个数据点的内置限制(在 Datadog 中)。在 1 秒间隔内发送的任何更多内容都会被丢弃。但是我们需要每个请求的统计信息,因此分布会汇总数据,它会保持运行计数、最小值、最大值、平均值以及可选的几个百分位数(p50、p75、p99)。
除了这 3 种之外,我还没有看到很多关于度量类型的好用例。对于您的场景,您似乎希望发送该设备间隔的分布度量。所以设备 1 发送的值是 10.14,设备 3 发送的值是 2.3,依此类推。
然后,您可以使用仪表板中的分布小部件来显示每个间隔桶的设备数量。
当然,请确保您通过生成指标的设备标记每个指标。
推荐阅读
- vb.net - 获取对象的前 6 或 7 个(条件)字符
- javascript - 无法找到这个 gatsby 模板中的 HTML 文本在哪里以及如何更改它。非常混乱的网站结构
- websocket - 如何从 @EventPattern 访问 Websocket
- python - 如何使用 Keras 在神经网络模型中进行多重预测
- continuous-integration - 如何使用 AWS CodePipeline 为使用 Zappa 部署的 Flask 应用程序设置 CI/CD 管道?
- python - 无法协调 PVLIB 输出与 NREL SAM
- python - 有没有办法散列用户 ID 以在 URI(路径)中使用?
- c# - 常用方法高效处理
- c# - 我应该如何声明一个类类型列表?
- java - 在 pdf java 中转换布局