企业宣传,产品推广,广告招商,广告投放联系seowdb

扩展物联网监控和可观察性解决方案

本文讨论了物联网中监控和可观察性的要点。主要介绍了如何利用日志、指标、跟踪和结构化事件来增强物联网系统的可观察性。操作数以万计的物联网设备也不例外。扩展物联网可观察性解决方案可能很快导致可观察性基础设施的性能不足和难以承受的成本。因此,本文将侧重于处理大规模。

将讨论一些技术,这些技术可以帮助您平衡物联网扩展带来的权衡:

选择高性能数据库

知道要收集什么数据,现在将所有数据转储到MySQL中,就可以开始观察。不要这么快,这可能不是最好的主意,有几个原因。将查看对数据库的需求,然后建议一种能够更好地满足对物联网扩展需求的存储。

首先,让修改存储物联网可观察性数据的几个特征:

通用SQL数据库可能不够

可能都熟悉SQL数据库,因此很自然地将其视为存储可观察性数据的地方。然而,几个技术方面使得SQL数据库不适合存储大规模的可观察性数据。

传统的面向行数据库,如MySQL或PostgreSQL,在只需要列的子集时,很难有效地处理对多维表的查询。

高维的另一个问题是难以实现有效的索引。不能事先为列子集创建数据库索引,因为不知道在故障排除过程中哪些维度是重要的。因此,要么需要索引所有列(这将非常昂贵),要么在基于未索引列进行过滤时查询将很慢。

此外,如果没有明确的基于时间的数据分区,通常就没有有效的方法来丢弃旧数据。时间分区允许在数据过时时有效地删除大块数据。

如果出于合理的动机使用传统的SQL数据库来处理可观察性数据,您可能需要考虑Timescale。它是一个PostgreSQL扩展,在使用基于行的SQL模型的同时,通过时间分区和更好的压缩解决了上面提到的一些挑战。

用于物联网扩展的信号特定存储

将可观测信号分类为度量、日志和轨迹导致了针对每种信号类型定制的专用存储的发展。例如,Mimir用于度量,Loki用于日志,Tempo/Jaeger用于跟踪。这些存储中的每一个都是用特定的信号类型创建的,这使得它们能够有效地监视特定信号中的用例。但是,跨这些存储查询数据可能比较麻烦。

此外,某些存储有一些特定的限制。例如,传统的时间序列数据库(tsdb,如Mimir)不能处理高基数的数据。tsdb为每个唯一的属性集存储单独的时间序列。这种方法在维数有限和基数较低的情况下非常有效,因为在单个时间序列中编写和查询非常高效。

但是,对于高基数,数据库需要经常创建新系列,因为它经常遇到唯一的属性组合。因此,在检索聚合值时,数据库需要遍历每个时间序列,从而使操作效率低下。这个问题在物联网领域尤为严重。

使用面向列的分时存储以获得最佳可扩展性

随着对与类似的分析工作负载的需求不断增加(如上所述),新的数据库浪潮出现了。它们采用列式存储,这使得读取操作更高效,因为它们只接触特定查询所需的列。由于采用了时间分区,数据库可以将读取操作限制在有限的数据范围内,从而使查询更加高效。

这些设计选择的组合也使压缩工作更快,因为算法在受时间范围限制的单列上操作。这类存储的典型例子包括InfluxDB、QuestDB和ClickHouse。

数据采样

在一定规模上,收集和存储设备产生的每个可观察信号变得难以忍受。值得庆幸的是,这通常是不必要的,因为您只需使用一小部分可观察性数据就可以成功地调试问题。

例如,描述成功场景的事件通常不如描述失败的事件重要。这就是为什么可以抛弃大多数这些事件,只存储少数具有足够代表性的例子来重建特定的历史情况。

存在各种采样策略,以确保只收集有限数量的事件,同时仍然保留足够的细节。选择符合你具体需求的抽样方法是很重要的。工具库,如OpenTelemetrysdk,通常提供这种采样策略的实现。这使得取样成为降低储存和处理成本的一种相对简单的方法。

在跟踪的背景下,根据采样决策的位置区分了物联网扩展的两种采样:头采样和尾采样。头部采样决定是否在设备上对跨度/轨迹进行采样,而尾部采样则在收集到特定轨迹的所有跨度后做出此决定。

头部采样的主要优点是简单和成本效益。它减少了在物联网环境中可能受到限制的网络流量,并避免在可观察的后端存储和处理未采样数据。

但是,如果您希望基于整个跟踪做出抽样决策,则尾部抽样是必要的。如果您希望对错误的跟踪进行采样,而不是对成功的跟踪进行采样,那么这种方法非常有用。

建立保留策略

可观察性数据往往会随着时间的推移而迅速失去价值。今天收到的遥测数据通常比去年的数据更有价值。这为提供了另一种显著削减存储成本的方法。

保留策略允许在指定时间范围内自动删除数据。基于时间的分区简化了保留策略的实现,这就是许多现代数据库开箱即用的原因。

另一种策略是利用分层存储。也就是说,将旧数据存储在低成本的对象存储(如AmazonS3或AzureBlobStorage)中。尽管从这些存储进行查询可能比本地磁盘具有更高的延迟,但它允许您保留更长的数据,同时仍然降低存储成本。

最后,可以进一步降低历史数据的分辨率。一种方法是对旧数据进行二次降采样。另一种方法是显式创建历史数据的聚合,同时丢弃原始的原始记录。

总结:选择有效的存储,只保留重要的数据

在建立物联网可观察性堆栈时,必须决定在哪里存储数据并选择合适的可观察性后端。在本文中,描述了在做出优化成本效率和物联网扩展决策时需要考虑的各个方面。要记住的要点如下:

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender