Zephyrnet-logo

En praktisk veiledning for overvåking og observerbarhet av IoT-enheter

Dato:

En praktisk veiledning for overvåking og observerbarhet av IoT-enheter

Overvåking og observerbarhet er avgjørende for å opprettholde IoT-enhetens pålitelighet, effektivitet og sikkerhet. Når det gjøres riktig, tilbyr de en sanntidsoversikt over IoT-systemene dine, men sikrer også tilgang til data som er nødvendig for feilsøking av historiske problemer. Men når de konfronteres med tusenvis av forskjellige IoT-enheter, gir det mange utfordringer å nå disse målene.

Bør jeg overvåke eller bør jeg observere?

Først, la oss revidere terminologien i IoT-overvåking og observerbarhet, da ordene "overvåking" og "observerbarhet" ofte brukes om hverandre til tross for forskjellene deres.

La oss starte med overvåking, et begrep med en mer etablert historie. I kjernen har overvåking som mål å gi innsikt i helsen og ytelsen til et system.

Dette begynner med å samle og analysere relevante beregninger. Analysen presenteres vanligvis gjennom dashboards. En rimelig overvåkingsstabel bør imidlertid gå utover visuell representasjon, evaluere beregningene i sanntid og varsle brukere om eventuelle uregelmessigheter eller problemer.

Men det er en hake med den tradisjonelle tilnærmingen til overvåking: den krever at du vet hva du skal se etter. Denne metoden kan komme til kort når du møter nye problemer.

Det er her observerbarhet kommer inn i bildet, da det kan hjelpe deg med å håndtere de såkalte ukjente ukjente. Enkelt sagt er et system observerbart når du kan svare på spørsmål om dets indre funksjoner utelukkende fra dets utganger. De vanlige utdataene fra programvaren inkluderer logger, beregninger og spor.

Et system med god observerbarhet er ikke bare lettere å feilsøke, men lar deg også oppdage et mye bredere spekter av problemer. Dette er fordi du har mye bedre innsikt i systemet, så det er lettere å få svar på dine spørsmål om hva som faktisk skjer.

Observerbarhet er spesielt viktig i sammenheng med IoT, der systemene involverer en rekke enheter og moduler. Å forsøke å forutse enhver potensiell kombinasjon av tilstander som kan føre til problemer er upraktisk i denne skalaen, om ikke umulig.

Viktige beregninger og overvåkingsmetoder

La oss utforske dataene som er verdt å spore, og de spesifikke instrumentene som er utviklet for å hjelpe oss med denne oppgaven.

Får vi dataene?

Det er ingen hemmelighet at tingenes internett ofte handler mer om dataene enn tingene. Det er derfor det er avgjørende å holde et øye med enhetenes dataoverføring. En solid IoT-plattform bør følge nøye med på beregninger som meldingsfrekvens og overført datavolum.

Likevel er det åpenbart ikke klokt å se trafikken til tusenvis av enheter manuelt. Behovet for automatisk varsling er utvilsomt i dette tilfellet. Det aller minste du bør varsles om er når enheten ikke sender noen data, men du forventer at den gjør det.

Men husk at IoT-enheter ofte opererer i uforutsigbare miljøer, for eksempel områder med upålitelige internettforbindelser. Så et kort gap i dataoverføring indikerer ikke alltid et problem med enheten.

Det er også en vanlig praksis å bufre meldingene enten på enheten din eller en edge-gateway, slik at du ikke mister viktige data. Poenget er at du må være veldig forsiktig med å gjøre tersklene dine for følsomme. Ellers vil du bli varslet om hver hikke i nettverket som uunngåelig fører til varslingstretthet, og varslingen vil miste potensialet.

Generell helseinformasjon for enheten

Overvåking av enhetens helse innebærer å spore ulike nøkkeltall. Du kan tenke på CPU, minneforbruk og nettverkstrafikk. Å ha tilgang til disse beregningene kan bidra til å identifisere ytelsesproblemer, oppdage programvarefeil eller til og med avsløre eksterne angrep.

Det er mange måter å eksponere disse beregningene på. Imidlertid er ingeniørmiljøet for tiden betatt av evnene til OpenTelemetri.

Et av deres viktigste salgsargumenter er deres leverandør-agnostiske tilnærming. Det vil si at du kan velge mellom et stort antall observerbare backends for lagring og følgende analyse. Dette har ført til at alle slags verktøy er laget for å jobbe med det.

Så uansett hvilket språk eller system du bruker, er du dekket. Dette er veldig nyttig, spesielt i den ville verden av IoT, hvor hver enhet kan kjøre sin unike programvare.

OpenTelemetry støtter tre hovedtyper av signaler: metrikk, logger og spor. For de fleste tilfeller som er skissert i denne delen, trenger enheter ganske enkelt å eksponere flere relevante beregninger, for eksempel deres nåværende minneforbruk.

Deretter må disse beregningene transporteres inn i skyen hvor du kan visualisere dem, sette opp varsling og så videre. Denne banen er allerede banet for IoT-brukstilfeller med prosjekter som OpenTelemetry Collector eller Telegraf som kan hjelpe deg med å samle inn beregninger fra IoT-enhetene dine.

Andre domenespesifikke signaler

Bortsett fra de generelle egenskapene til å sende data og ressursutnyttelse, kan det hende du må spore noen domenespesifikke verdier. Dette kan innebære sending av logger, spor eller enkle meldinger som inneholder programspesifikt innhold.

For både loggene og sporene kan du stole på OpenTelemetry-økosystemet igjen. Dette lar deg analysere logger og spor ved å bruke dine foretrukne backends, for eksempel Grafana Loki/Tempo eller Elastic Observability-stabelen, uten ekstra innsats! Meldingstjenester er på den annen side kjernefunksjonaliteten til enhver rimelig IoT-plattform. Med andre ord bør disse tilnærmingene være trivielle å implementere i de fleste scenarier.

Enkelheten med logger

Vurder for eksempel en autonom hogstmaskin. Du vil kanskje spore aktivitetene. En enkel måte å gjøre dette på er å sende en logg når aktiviteten startet med noen ekstra metadata.

Du kan gjøre det samme når aktiviteten er ferdig og for andre relevante arrangementer. I hovedsak er hver loggpost bare en strukturert hendelse med flere nødvendige egenskaper. Nedenfor er et eksempel på en logg som sendes når hogstmaskinen starter sin dokkingsekvens:

Bortsett fra de primære feltene, som tidsstempel og brødtekst, kan meldingen inneholde flere attributter som beskriver hendelsen mer detaljert. Disse ekstra bitene kan være nyttige når du jakter på insekter. Så sørg for å inkludere all viktig informasjon.

Den dype kontekstuelle innsikten med spor

Hvis du vil ha litt mer detaljert innsikt, kan du også bruke sporing. Et spor tilsvarer én logisk operasjon av et system, og det er implisitt definert av dets spenn. Et span representerer en enkelt arbeidsenhet for den operasjonen. Den er definert av start- og sluttider, attributter og eventuelt et overordnet spenn.

Takket være overordnede referanser, danner sporet en rettet graf som beskriver den spesielle operasjonen og dens underrutiner. I tillegg kan spenn inneholde flere spennhendelser som beskriver en hendelse som skjedde på et bestemt tidspunkt.

Mens spor typisk er knyttet til overvåking av distribuerte systemer, er det også mulig å bruke sporing i IoT-enheter for å hjelpe deg å forstå det store bildet av hva som skjer i felten. La oss si at du er nysgjerrig på hvordan den autonome hogstmaskinen går tilbake til dokkingstasjonen.

Se figuren nedenfor, der dokkingen tilsvarer rotspennet på toppnivå. Først må hogstmaskinen finne dokkingstasjonen, så den kaller et API. Denne operasjonen tilsvarer ett barnespenn. Et eksempel på en spennhendelse kan være punktet da hogstmaskinen forlot åkeren. Når du bruker alle sporingsinstrumentene sammen, kan du se hele bildet av enhetens drift.

Tilbake til det grunnleggende med enkle meldinger

I visse scenarier kan det være mer praktisk å sende enkle strukturerte meldinger enn å bruke OpenTelemetry-signalene. Går tilbake til eksemplet med autonome hogstmaskiner, vil du sannsynligvis spore plasseringen.

Hvis du ønsket å visualisere plasseringen i sanntid, støtter ikke OpenTelemetry for øyeblikket et signal som semantisk passer til dette scenariet. Det nærmeste matchet vil sannsynligvis være deres Event API, som fortsatt er i en eksperimentell fase (på tidspunktet for skriving av denne artikkelen i Q1 2024). Vurder i stedet å sende følgende JSON-melding:

Ideelt sett bør IoT-plattformen du bruker være i stand til å analysere slike meldinger og legge dem inn i den passende databasen du velger. Derfra er du fri til å analysere og visualisere dataene i henhold til dine behov.

Vi har gjenskapt dette eksemplet med Spotflow IoT-plattformen for å demonstrere enkelheten. Vi setter opp en enhet som med jevne mellomrom sender meldinger med plassering og hastighet til plattformen. Deretter rutet vi datastrømmen inn i den innebygde Grafana-utgangsvasken vår. Og det er det! Plattformen tar nå tak i alle meldingene og legger dem inn i en tidsseriedatabase som kan søkes i Grafana.

Dette er også et flott bruksområde for Grafana Geomap-visualisering. Den lar deg enkelt plotte plasseringen til enhetene dine. Se bildet nedenfor, der vi har brukt Grafana til å visualisere dataene som er mottatt fra enheten.

Nøkkelfunksjoner

Og det er det! Nå er du klar til å sette opp observasjonsstabelen din og begynne å overvåke IoT-enhetene dine. Vi vil at denne artikkelen skal tjene som et utgangspunkt i verden av IoT-observerbarhet. Husk følgende nøkkelideer:

  • Overvåke dataoverføring: Følg nøye med på dataoverføring fra enhetene dine og vær forberedt med varsler for å fange opp eventuelle forstyrrelser umiddelbart.
  • Spor enhetshelseberegninger: Finn frem relevante beregninger angående enhetens helse for å sikre jevn drift.
  • Send applikasjonsspesifikke data via logger, spor og strukturerte meldinger: Tenk på domenet ditt og enhetens drift og send alle dataene som kan være nødvendig for fremtidig feilsøking og sanntidsovervåking.
  • Utforsk OpenTelemetry Ecosystem: Vurder å bruke OpenTelemetry-økosystemet i IoT ettersom det blir en observerbarhetsstandard som gir deg mange alternativer for observerbarhetsbackends og betjener ulike enhetskjøringer.
spot_img

Siste etterretning

spot_img