指标和事件之间有什么区别?

导航至

当我们采用监控技术和工具时,会从系统中收集各种类型的数据。 例如,我们可能希望并排查看应用程序指标、数据库日志和网络流量。 我们并不总是谈论这些数据类型之间的差异,所以今天我们将介绍一个我最常被问到的问题:指标和事件之间有什么区别?

<figcaption> 看看您能否发现差异!</figcaption>

技术差异

指标和事件是两种不同类型的时序数据:分别是规则数据和不规则数据。 规则数据(指标)在时间上均匀分布,可用于预测等过程。 不规则数据(事件)是不可预测的,虽然它们仍然按时间顺序发生,但事件之间的时间间隔是不一致的,这意味着使用它们进行预测或平均可能会导致不可靠的结果。

基本区别在于指标以规则的时间间隔发生,而事件则不然。 想象一下,我正在监控我的个人网站 — 我想跟踪响应代码以确保网站可用,所以我以频繁的时间间隔收集它们。 然后我可以查询这些响应代码指标,以计算出我的网站宕机的时间百分比(因为它太受欢迎了)。 但我也想知道用户何时点击广告。 我不知道这种点击何时或是否会发生,因此以规则的时间间隔收集数据没有意义。 如果我在过去一年中有 12 次点击,则平均每月点击一次,无论它们是否可能都发生在十月(我受欢迎程度的顶峰)。

<figcaption> 这是时序数据遇到了闲聊!</figcaption>

为了将事件数据用于预测或平均值,必须将其转换为规则数据。 如果您对时序数据建模感兴趣,我建议阅读这篇关于塑造和分析数据的博客。 如果您正在使用 InfluxDB,您可以在此处看到使用不规则时序数据的示例。

由于指标和事件是不同类型的数据,这会改变数据库有效存储和压缩正在摄取的数据的方式(例如,不同类型的数据可能需要不同的压缩算法)。 这就是为什么在 InfluxDB,我们强调跟踪指标和事件的能力 — 并非每个系统都能做到这两者,也并非每个系统都针对这两者进行了优化。 理想情况下,我们的数据库会完成其工作,而我们不必担心它处理数据的方式。 我们可以将指标和事件发送到 InfluxDB,而无需知道或关心数据库如何区分两者。

实际差异

我们与数据交互的方式会根据它是规则的还是不规则的而变化,所以有时我们确实需要知道我们收集的数据是指标还是事件。 例如,指标可以用于聚合,因为我们的数据在时间上均匀分布。 我们不希望使用不规则数据来查找聚合,因为它们不会在时间上均匀分布,并且会返回一些无用的结果。

监控指标和事件

我想密切关注我的小猪存钱罐。 现在,我只关心一个指标:总资金。 任何人都可以把钱存入我的小猪存钱罐,所以我想以一分钟的间隔报告总资金。 这意味着每分钟,我的数据库都会收到一个数据点,其中包含时间戳和我小猪存钱罐中的总资金量。

<figcaption> 她的名字叫 Oinky,她是一位优秀的会计师。</figcaption>

现在,我想跟踪我的小猪存钱罐的特定事件:存款和取款。 当发生存款时,我的数据库将收到一个数据点,其中包含“存款”标签、时间戳和存款金额。 同样,当发生取款时,我的数据库将收到一个数据点,其中包含“取款”标签、时间戳和取款金额。

这个非常简单的数据集确保了我的小猪存钱罐报告的总资金与总存款和取款相符。 这与我父母平衡支票簿的方式相同,也与我过去在零售行业结束收银机的方式相同。

现在想象一下,这就是在线银行背后的基本思想。 我们可以添加更多元数据来添加事件的详细信息,例如将用户 ID 附加到存款或取款。

结论

指标和事件是互补的。 监控两者比以往任何时候都更必要,而且不应该需要数据科学家才能做到这一点(尽管数据科学家非常酷)。

原创艺术作品:Katy Farmer