指标和事件之间的区别是什么?
作者:Katy Farmer / 产品,用例,开发者
2019年3月14日
导航至
当我们采用监控技术和工具时,我们会从我们的系统中收集所有类型的数据。例如,我们可能希望同时看到应用程序指标、数据库日志和网络流量。我们并不总是谈论这些类型数据的区别,所以今天我们来探讨一个我经常被问到的问题:指标和事件之间的区别是什么?
<figcaption> 看看你是否能发现区别!</figcaption>
技术差异
指标和事件是两种不同类型的时间序列数据:分别为规则和不规则。规则数据(指标)在时间上是均匀分布的,可以用于预测等过程。不规则数据(事件)是不可预测的,尽管它们仍然按照时间顺序发生,但事件之间的间隔不一致,这意味着使用它们进行预测或平均可能会得到不可靠的结果。
基本区别在于指标在规则的时间间隔发生,而事件则不。想象一下我正在监控我的个人网站——我想跟踪响应代码以确保网站可用,因此我需要频繁地收集它们。然后我可以查询这些响应代码指标,以了解我的网站有多少时间处于宕机状态(因为太受欢迎了)。但我也想了解用户何时点击了广告。我不知道何时或是否会发生这次点击,因此按照规则的时间间隔收集是没有意义的。如果过去一年有12次点击,那么平均下来每个月只有一次点击,不管它们是否都在十月份(我人气的顶峰)。
<figcaption> 时间序列遇到八卦!</figcaption>
为了使用事件数据进行预测或平均,必须将其转换为规则数据。如果您对建模时间序列数据感兴趣,我建议阅读这篇关于塑造和分析数据博客。如果您使用InfluxDB,您可以在这里找到一个处理不规则时间序列数据的示例。
由于指标和事件是不同类型的数据,这改变了数据库高效存储和压缩正在摄入的数据的方式(例如,可能需要为不同类型的数据使用不同的压缩算法)。这就是为什么在InfluxDB中,我们强调跟踪指标和事件的能力——并不是每个系统都能做到这一点,也不是每个系统都针对这两者进行了优化。理想情况下,我们的数据库完成其工作,我们不必担心它处理数据的方式。我们可以将指标和事件发送到InfluxDB,而无需了解或关心数据库如何区分这两者。
实际差异
我们与数据交互的方式取决于它是否规则或不规则,因此有时我们需要知道我们正在收集的数据是指标还是事件。例如,由于我们有均匀分布在时间上的数据,因此可以使用指标进行聚合。我们不希望使用不规则数据来查找聚合,因为它们不会均匀分布在时间上,并且会返回一些无用的结果。
监控指标和事件
我想密切关注我的存钱罐。目前,我只关心一个指标:总资金。任何人都可以往我的存钱罐里放钱,所以我想要每分钟报告一次总资金。这意味着每分钟,我的数据库将接收一个包含时间戳和存钱罐总资金金额的数据点。
<figcaption> 她的名字叫Oinky,她是一位优秀的会计师。</figcaption>
现在,我想跟踪我的储钱罐的特定事件:存钱和取钱。当发生存款时,我的数据库将接收到一个带有“存款”标签、时间戳和存款金额的数据点。同样,当发生取款时,我的数据库将接收到一个带有“取款”标签、时间戳和取款金额的数据点。
这个非常简单的数据集确保了我的储钱罐报告的总资金与总存款和取款相匹配。这正是我的父母平衡支票簿的方式,也是我在零售生涯中清点现金收银机的方式。
现在想象一下,这同样是网上银行背后的基本理念。我们可以添加更多元数据来丰富事件,例如将用户ID附加到存款或取款上。
结论
指标和事件是互补的。监控两者的能力比以往任何时候都更加必要,而且不应该需要数据科学家才能做到(尽管数据科学家非常酷)。
由Katy Farmer创作的原创艺术作品