Zephyrnet-logotyp

En praktisk guide till övervakning och observerbarhet av IoT-enheter

Datum:

En praktisk guide till övervakning och observerbarhet av IoT-enheter

Övervakning och observerbarhet är avgörande för att upprätthålla IoT-enheters tillförlitlighet, effektivitet och säkerhet. När de görs rätt ger de en översikt i realtid över dina IoT-system men säkerställer också tillgång till data som är nödvändig för att felsöka historiska problem. Men när de konfronteras med de tusentals olika IoT-enheterna, innebär det många utmaningar att uppnå dessa mål.

Ska jag övervaka eller bör jag observera?

Låt oss först revidera terminologin i IoT-övervakning och observerbarhet eftersom orden "övervakning" och "observerbarhet" ofta används omväxlande trots deras skillnader.

Låt oss börja med övervakning, en term med en mer etablerad historia. I grunden syftar övervakning till att ge insikter om ett systems hälsa och prestanda.

Detta börjar med att samla in och analysera relevanta mätvärden. Analysen presenteras vanligtvis genom instrumentpaneler. En rimlig övervakningsstack bör dock gå längre än visuell representation, utvärdera mätvärdena i realtid och uppmärksamma användare på eventuella avvikelser eller problem.

Men det finns en hake med det traditionella tillvägagångssättet för övervakning: det kräver att du vet vad du ska leta efter. Denna metod kan misslyckas när man stöter på nya problem.

Det är här observerbarhet kommer in i bilden eftersom det kan hjälpa dig att hantera de så kallade okända okända. Enkelt uttryckt är ett system observerbart när du kan svara på frågor om dess inre funktioner enbart utifrån dess utdata. De vanliga utdata från programvaran inkluderar loggar, mätvärden och spår.

Ett system med god observerbarhet är inte bara lättare att felsöka utan låter dig också upptäcka ett mycket bredare spektrum av problem. Det beror på att du har mycket bättre insikter i systemet, så det är lättare att få svar på dina frågor om vad som faktiskt händer.

Observerbarhet är särskilt viktigt i samband med IoT, där systemen involverar många enheter och moduler. Att försöka förutse varje potentiell kombination av tillstånd som kan leda till problem är opraktiskt i denna skala, för att inte säga omöjligt.

Viktiga mätvärden och övervakningsmetoder

Låt oss utforska data som är värda att spåra och de specifika instrument som är utformade för att hjälpa oss med denna uppgift.

Får vi uppgifterna?

Det är ingen hemlighet att Internet of Things ofta handlar mer om data än saker. Det är därför det är avgörande att hålla ett öga på dina enheters dataöverföring. En solid IoT-plattform bör hålla noga koll på mätvärden som meddelandefrekvens och överförd datavolym.

Ändå är det uppenbarligen inte klokt att manuellt titta på trafiken för tusentals enheter. Behovet av automatisk larm är otvivelaktigt i detta fall. Det allra minsta som du bör varnas om är när enheten inte skickar någon data, men du förväntar dig att den gör det.

Tänk dock på att IoT-enheter ofta fungerar i oförutsägbara miljöer, till exempel områden med opålitliga internetanslutningar. Så en kort lucka i dataöverföring indikerar inte alltid ett problem med enheten.

Det är också vanligt att buffra meddelandena antingen på din enhet eller en edge-gateway, så att du inte förlorar någon viktig data. Poängen är att du måste vara mycket noga med att inte göra dina trösklar för känsliga. Annars kommer du att bli varnad om varje hicka i nätverket som oundvikligen leder till larmtrötthet, och varningen kommer att förlora sin potential.

Allmän information om enhetens hälsa

Övervakning av enhetens hälsa innebär att spåra olika nyckelmått. Du kan tänka på CPU, minnesförbrukning och nätverkstrafik. Att ha tillgång till dessa mätvärden kan hjälpa till att identifiera prestandaproblem, upptäcka programvarubuggar eller till och med avslöja yttre attacker.

Det finns många sätt att exponera dessa mätvärden. Emellertid är ingenjörssamfundet för närvarande fängslat av kapaciteten hos Öppna Telemetri.

En av deras främsta försäljningsargument är deras leverantörs-agnostiska tillvägagångssätt. Det vill säga du kan välja mellan ett stort antal observerbarhetsbackends för lagringen och följande analys. Detta har lett till att alla möjliga verktyg har gjorts för att fungera med den.

Så oavsett vilket språk eller system du använder är du täckt. Detta är väldigt praktiskt, särskilt i IoTs vilda värld där varje enhet kanske kör sin unika programvara.

OpenTelemetry stöder tre huvudtyper av signaler: mätvärden, loggar och spår. För de flesta fall som beskrivs i det här avsnittet behöver enheter helt enkelt exponera flera relevanta mätvärden, såsom deras nuvarande minnesförbrukning.

Sedan måste dessa mätvärden transporteras in i molnet där du kan visualisera dem, ställa in varningar och så vidare. Den här vägen är redan banad för IoT-användningsfall med projekt som OpenTelemetry Collector eller Telegraf som kan hjälpa dig att samla in mätvärden från dina IoT-enheter.

Andra domänspecifika signaler

Förutom de allmänna egenskaperna för att skicka data och resursutnyttjande, kan du behöva spåra några domänspecifika värden. Det kan handla om att skicka loggar, spår eller enkla meddelanden som innehåller programspecifikt innehåll.

För både loggarna och spåren kan du återigen lita på OpenTelemetry-ekosystemet. Detta låter dig analysera loggar och spår med dina föredragna backends, som Grafana Loki/Tempo eller Elastic Observability-stacken, utan extra ansträngning! Meddelanden är å andra sidan kärnfunktionaliteten i varje rimlig IoT-plattform. Med andra ord bör dessa tillvägagångssätt vara triviala att implementera i de flesta scenarier.

Loggarnas enkelhet

Tänk på en autonom skördarmaskin, till exempel. Du kanske vill spåra dess aktiviteter. Ett enkelt sätt att göra detta är att skicka en logg när aktiviteten startade med lite extra metadata.

Du kan göra samma sak när aktiviteten är klar och för andra relevanta evenemang. I huvudsak är varje loggpost bara en strukturerad händelse med flera nödvändiga egenskaper. Nedan är ett exempel på en logg som skickas när skördaren startar sin dockningssekvens:

Förutom de primära fälten, som tidsstämpel och brödtext, kan meddelandet innehålla ytterligare attribut som beskriver händelsen mer detaljerat. Dessa extra bitar kan vara praktiska när du jagar insekter. Så se till att ta med all viktig information.

De djupa kontextuella insikterna med spår

Om du vill ha lite mer detaljerade insikter kan du också använda spårning. Ett spår motsvarar en logisk operation i ett system, och den definieras implicit av dess spann. Ett span representerar en enda arbetsenhet för den operationen. Den definieras av dess start- och sluttider, attribut och eventuellt ett överordnat spann.

Tack vare överordnade referenser bildar spåret en riktad graf som beskriver den specifika operationen och dess subrutiner. Dessutom kan intervall innehålla flera intervallhändelser som beskriver en händelse som inträffade vid en specifik tidpunkt.

Även om spår vanligtvis förknippas med övervakning av distribuerade system, är det också möjligt att använda spårning i IoT-enheter för att hjälpa dig förstå helheten av vad som händer i fältet. Låt oss säga att du är nyfiken på hur den autonoma skördaren går tillbaka till sin dockningsstation.

Se figuren nedan, där dockningen motsvarar rotområdet på toppnivån. Först måste skördaren lokalisera dockningsstationen, så den anropar ett API. Denna operation motsvarar ett barnspann. Ett exempel på en span-händelse kan vara punkten när skördaren lämnade fältet. När du använder alla spårningsinstrument tillsammans kan du se hela bilden av enhetens funktion.

Tillbaka till grunderna med enkla meddelanden

I vissa scenarier kan det vara mer praktiskt att skicka enkla strukturerade meddelanden än att använda OpenTelemetry-signalerna. Om du går tillbaka till exemplet med autonom skördare, skulle du förmodligen vilja spåra dess plats.

Om du ville visualisera platsen i realtid, stöder OpenTelemetry för närvarande inte riktigt en signal som semantiskt skulle passa detta scenario. Den närmaste matchningen skulle sannolikt vara deras Event API, som fortfarande är i en experimentell fas (vid tidpunkten för att skriva den här artikeln i Q1 2024). Överväg istället att skicka följande JSON-meddelande:

Helst bör IoT-plattformen som du använder kunna analysera sådana meddelanden och mata in dem i den lämpliga databas du väljer. Därifrån är du fri att analysera och visualisera data enligt dina behov.

Vi har återskapat det här exemplet med Spotflow IoT-plattformen för att demonstrera enkelheten. Vi sätter upp en enhet som regelbundet skickar meddelanden med sin plats och hastighet till plattformen. Sedan dirigerade vi dataströmmen till vår inbyggda Grafana utgående diskbänk. Och det är allt! Plattformen tar nu tag i alla meddelanden och lägger dem i en tidsseriedatabas som kan sökas i Grafana.

Detta är också ett utmärkt användningsfall för Grafana Geomap-visualisering. Det låter dig enkelt plotta var dina enheter befinner sig. Se bilden nedan, där vi har använt Grafana för att visualisera data som tas emot från enheten.

Key Takeaways

Och det är allt! Nu är du redo att ställa in din observerbarhetsstack och börja övervaka dina IoT-enheter. Vi vill att den här artikeln ska fungera som en utgångspunkt i världen av observerbarhet för IoT. Kom ihåg följande nyckelidéer:

  • Övervaka dataöverföring: Håll noga koll på dataöverföringen från dina enheter och var förberedd med varningar för att fånga upp eventuella störningar omedelbart.
  • Spåra enhetshälsostatistik: Visa relevant statistik om din enhets hälsa för att säkerställa smidig drift.
  • Skicka programspecifika data via loggar, spår och strukturerade meddelanden: Tänk på din domän och enhetens funktion och skicka all data som kan behövas för framtida felsökning och realtidsövervakning.
  • Utforska OpenTelemetry Ecosystem: Överväg att använda OpenTelemetry-ekosystemet i IoT eftersom det blir en observerbarhetsstandard som ger dig många alternativ för observerbarhetsbackends och serverar olika enhetskörtider.
plats_img

Senaste intelligens

plats_img