和风网标志

物联网设备监控和可观察性实用指南

日期:

物联网设备监控和可观察性实用指南

灭菌监测 和可观察性对于维护物联网设备的可靠性、效率和安全性至关重要。如果做得正确,它们可以提供物联网系统的实时概览,同时还可以确保访问解决历史问题所需的数据。然而,当面对数千种不同的物联网设备时,实现这些目标会带来许多挑战。

我应该监控还是应该观察?

首先,让我们修改一下物联网监控和可观察性中的术语,因为“监控”和“可观察性”这两个词尽管存在差异,但经常互换使用。

让我们从监控开始,这是一个有着更悠久历史的术语。监控的核心目标是深入了解系统的健康状况和性能。

首先是收集和分析相关指标。分析通常通过仪表板呈现。然而,合理的监控堆栈应该超越视觉表示,实时评估指标并警告用户任何异常或问题。

但传统的监控方法有一个问题:它要求您知道要寻找什么。当遇到新问题时,这种方法可能会失效。

这就是可观察性发挥作用的地方,因为它可以帮助您处理所谓的未知未知数。简而言之,当您可以仅根据系统的输出来回答有关其内部运作的问题时,系统就是可观察的。软件的通常输出包括日志、指标和跟踪。

具有良好可观察性的系统不仅更容易排除故障,而且还允许您检测更广泛的问题。这是因为您对系统有了更好的了解,因此更容易获得有关实际发生情况的问题的答案。

可观察性在物联网环境中尤其重要,因为系统涉及大量设备和模块。在这种规模下,试图预测可能导致麻烦的每种潜在状态组合即使不是不可能,也是不切实际的。

基本指标和监控方法

让我们探索值得跟踪的数据以及旨在帮助我们完成此任务的特定工具。

我们得到数据了吗?

众所周知,物联网往往更多的是数据而不是事物。这就是为什么密切关注设备的数据传输至关重要。可靠的物联网平台应密切关注消息频率和传输数据量等指标。

然而,手动监控数千台设备的流量显然不是明智之举。在这种情况下,自动警报的必要性是毫无疑问的. 至少当设备没有发送任何数据,但您希望它发送数据时,您应该收到警报。

但是,请记住,物联网设备通常在不可预测的环境中运行,例如互联网连接不可靠的区域。因此,数据传输中的短暂间隙并不总是表明设备存在问题。

此外,通常的做法是在您的设备或边缘网关上缓冲消息,这样您就不会丢失任何重要数据。关键是你必须非常小心,不要让你的阈值太敏感。否则,您将收到关于网络中的每个故障的警报,这不可避免地会导致警报疲劳,并且警报将失去其潜力。

一般设备健康信息

监控设备运行状况涉及跟踪各种关键指标。您可以考虑 CPU、内存消耗和网络流量。访问这些指标可以帮助识别性能问题、检测软件错误,甚至 揭露外部攻击.

有很多方法可以公开这些指标。然而,工程界目前对以下功能着迷: 开放遥测.

他们的主要卖点之一是他们与供应商无关的方法。也就是说,您可以选择 大量的可观察性后端 以便于存储和后面的分析。这导致了各种工具的诞生。

因此,无论您使用什么语言或系统,都可以满足您的需求。这非常方便,尤其是在物联网的狂野世界中,每个设备都可能运行其独特的软件。

OpenTelemetry 支持三种主要类型的信号:指标、日志和跟踪。对于本节中概述的大多数情况,设备只需要公开几个相关指标,例如当前的内存消耗。

然后,这些指标需要传输到云端,您可以在云端对其进行可视化、设置警报等。这条道路已经为物联网用例铺平了道路,例如 OpenTelemetry Collector 或 Telegraf 等项目,可以帮助您从物联网设备收集指标。

其他领域特定信号

除了发送数据和资源利用率的一般特征之外,您可能还需要跟踪一些特定于域的值。这可能涉及发送日志、跟踪或包含应用程序特定内容的简单消息。

对于日志和跟踪,您可以再次依赖 OpenTelemetry 生态系统。这使您可以使用您喜欢的后端(例如 Grafana Loki/Tempo 或 Elastic Observability 堆栈)分析日志和跟踪,而无需额外的努力!另一方面,消息传递是每个合理的物联网平台的核心功能。换句话说,这些方法在大多数情况下实施起来应该很简单。

日志的简单性

例如,考虑一台自动收割机。您可能想跟踪其活动。执行此操作的一个简单方法是在活动开始时发送带有一些附加元数据的日志。

当活动结束时以及其他相关事件时,您可以执行相同的操作。本质上,每个日志记录只是一个具有几个必需属性的结构化事件。以下是收割机开始对接序列时发送的日志示例:

除了时间戳和正文等主要字段之外,消息还可能包含更详细地描述事件的其他属性。当您寻找错误时,这些额外的部分会很方便。因此,请确保包含所有重要信息。

有痕迹的深层语境洞察

如果您想要更详细的见解,您还可以使用跟踪。跟踪对应于系统的一个逻辑操作,并且由其跨度隐式定义。跨度代表该操作的单个工作单元。它由其开始和结束时间、属性以及可选的父跨度定义。

由于父引用,跟踪形成了描述特定操作及其子例程的有向图。此外,跨度可能包含多个跨度事件,描述在特定时间点发生的事件。

虽然跟踪通常与监控分布式系统相关,但也可以在 IoT 设备中使用跟踪来帮助您了解现场发生的情况。假设您对自动收割机如何返回其扩展坞感到好奇。

参见下图,其中对接对应于顶级根跨度。首先,收割机需要定位扩展坞,因此它调用 API。此操作对应于一个子跨度。跨度事件的一个示例可以是收割机离开田地的时间点。当所有追踪仪器一起使用时,您可以看到设备运行的全貌。

用简单的消息回归基础

在某些情况下,发送简单的结构化消息可能比使用 OpenTelemetry 信号更实用。回到自动收割机的例子,您可能想要跟踪它的位置。

如果您想实时可视化位置,OpenTelemetry 目前并不真正支持在语义上适合此场景的信号。最接近的匹配可能是他们的 Event API,该 API 仍处于实验阶段(截至 1 年第一季度撰写本文时)。相反,请考虑发送以下 JSON 消息:

理想情况下,您使用的物联网平台应该能够解析此类消息并将其提取到您选择的合适数据库中。从那里,您可以根据需要自由分析和可视化数据。

我们使用 Spotflow IoT 平台重新创建了此示例,以证明其简单性。我们设置了一个设备,定期向平台发送包含其位置和速度的消息。然后,我们将数据流路由到内置的 Grafana 出口接收器。就是这样!该平台现在抓取所有消息并将它们放入时间序列数据库中,可以在 Grafana 中查询。

此外,这是 Grafana Geomap 可视化的一个很好的用例。它可以让您轻松绘制设备的位置。请参见下图,我们使用 Grafana 可视化从设备接收的数据。

关键精华

就是这样!现在您已准备好设置可观测性堆栈并开始监控您的 IoT 设备。我们希望本文成为物联网可观测性领域的起点。请记住以下关键想法:

  • 监控数据传输:密切关注设备的数据传输,并准备好警报,以便及时发现任何中断。
  • 跟踪设备健康指标:显示有关设备运行状况的相关指标,以确保平稳运行。
  • 通过日志、跟踪和结构化消息发送应用程序特定数据:考虑您的域和设备的操作,并发送将来调试和实时监控可能需要的所有数据。
  • 探索 OpenTelemetry 生态系统:考虑在 IoT 中使用 OpenTelemetry 生态系统,因为它已成为一种可观测性标准,为您提供多种可观测性后端选项并为各种设备运行时提供服务。
现货图片

最新情报

现货图片