Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Virun engem Joer hu mir eng Pilotversioun vun engem Promotiounsprojet lancéiert fir dezentraliséiert Locatioun vun elektresche Scooter.

Am Ufank gouf de Projet Road-To-Barcelona genannt, spéider gouf et Road-To-Berlin (also R2B an de Screenshots), an um Enn gouf et xRide genannt.

D'Haaptidee vum Projet war dëst: Amplaz vun engem zentraliséierten Auto oder Scooter Locatiounsservice (mir schwätzen iwwer Scooter aka elektresch Motorrieder, net Kickscooters / Scooter) wollte mir eng Plattform fir dezentraliséiert Locatioun maachen. Iwwert d'Schwieregkeeten déi mir begéint hunn scho virdru geschriwwen.

Am Ufank huet de Projet sech op Autoen konzentréiert, awer wéinst Frist, extrem laang Kommunikatioun mat Hiersteller an eng grouss Zuel vu Sécherheetsbeschränkungen, goufen elektresch Scooter fir de Pilot gewielt.

De Benotzer huet eng iOS oder Android Applikatioun um Telefon installéiert, koum op de Scooter deen hie gär huet, duerno huet den Telefon an de Scooter eng Peer-to-Peer Verbindung etabléiert, ETH gouf ausgetauscht an de Benotzer konnt d'Ride starten andeems hien de Scooter iwwerschalt. den Telefon. Um Enn vun der Rees war et och méiglech fir d'Rees mat Ethereum aus dem Portmonni vum Benotzer um Telefon ze bezuelen.

Zousätzlech zu Scooter, huet de Benotzer "Smart Charger" an der Applikatioun gesinn, duerch Besuch déi de Benotzer déi aktuell Batterie selwer kéint änneren, wann se niddereg war.

Dëst ass allgemeng wéi eise Pilot ausgesinn, deen am September d'lescht Joer an zwou däitsche Stied lancéiert gouf: Bonn a Berlin.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

An dunn, enges Daags, zu Bonn, moies fréi, gouf eis Ënnerstëtzungsteam (op der Plaz fir d'Scooteren an engem funktionnéierenden Zoustand ze halen) alarméiert: ee vun de Scooter war ouni Spuer verschwonnen.

Wéi fannen ech et an zréck?

An dësem Artikel wäert ech iwwer dëst schwätzen, awer als éischt - iwwer wéi mir eis eegen IoT Plattform gebaut hunn a wéi mir et iwwerwaacht hunn.

Wat a firwat iwwerwaachen: Scooter, Infrastruktur, Opluedstatiounen?

Also, wat wollte mir an eisem Projet iwwerwaachen?

Éischt vun all, dëst sinn d'Scooter selwer - elektresch Scooter selwer sinn zimlech deier, Dir kënnt esou e Projet net lancéieren ouni genuch virbereet ginn; wa méiglech, wëllt Dir esou vill Informatiounen wéi méiglech iwwert d'Scooter sammelen: iwwer hir Plaz, charge Niveau , etc.

Ausserdeem wéilt ech den Zoustand vun eiser eegener IT-Infrastruktur iwwerwaachen - Datenbanken, Servicer an alles wat se brauchen fir ze schaffen. Et war och néideg fir de Status vun den "Smart Charger" ze iwwerwaachen, am Fall wou se futti sinn oder voll Batterien hunn.

Scooter

Wat waren eis Scooter a wat wollte mir iwwer si wëssen?

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Déi éischt a wichtegst Saach ass d'GPS Koordinaten, well dank hinnen kënne mir verstoen wou se sinn a wou se bewegt.

Als nächst ass d'Batterieladung, duerch déi mir kënne feststellen datt d'Ladung vun de Scooter op en Enn kënnt an e Juicer schécken oder op d'mannst de Benotzer warnen.

Natierlech ass et och néideg ze kontrolléieren wat mat eise Hardware Komponenten geschitt:

  • funktionéiert bluetooth?
  • funktionéiert de GPS Modul selwer?
    • Mir haten och e Problem mat der Tatsaach, datt de GPS falsch Koordinate konnt schécken an hänke bliwwen, an dat konnt nëmmen duerch zousätzlech Kontrollen um Scooter festgestallt ginn,
      an informéiert Ënnerstëtzung sou séier wéi méiglech fir de Problem ze léisen

A schlussendlech: Kontrollen vun der Software, ugefaange mam OS a Prozessor, Netzwierk an Diskbelaaschtung, op en Enn mat Kontrollen vun eisen eegene Moduler déi méi spezifesch fir eis sinn (Jolocom, keycloak).

Hardware

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Wat war eisen "Eisen" Deel?

Wann Dir de kuerst méigleche Zäitframe berücksichtegt an de Besoin fir séier Prototyping, hu mir déi einfachst Optioun fir d'Ëmsetzung an d'Auswiel vu Komponenten gewielt - Raspberry Pi.
Zousätzlech zum Rpi selwer hate mir e personaliséierte Board (dee mir selwer aus China entwéckelt a bestallt hunn fir de Montageprozess vun der definitiver Léisung ze beschleunegen) an e Set vu Komponenten - e Relais (fir de Scooter un / auszeschalten), engem Batterie charge Lieser, engem Modem, Antennen. All dëst gouf kompakt an enger spezieller "xRide Box" verpackt.

Et sollt och bemierkt ginn datt d'ganz Këscht vun enger zousätzlecher Kraaftbank ugedriwwe gouf, déi am Tour vun der Haaptbatterie vum Scooter ugedriwwe gouf.

Dëst huet et méiglech gemaach d'Iwwerwaachung ze benotzen an de Scooter och nom Enn vun der Rees ze maachen, well d'Haaptbatterie direkt ausgeschalt gouf nodeems den Zündschlëssel op d'"Off" Positioun gedréckt gouf.

Docker? Einfach Linux? an Ofbau

Loosst eis zréck op d'Iwwerwaachung, also Raspberry - wat hu mir?

Ee vun den éischte Saachen, déi mir benotze wollte fir de Prozess vum Détachement, d'Aktualiséierung an d'Liwwerung vu Komponenten op kierperlech Apparater ze beschleunegen war Docker.

Leider gouf et séier kloer datt Docker op RPi, och wann et funktionnéiert, vill Overhead huet, besonnesch wat den Energieverbrauch ugeet.

Den Ënnerscheed mat dem "gebiertege" OS, obwuel net sou staark, war nach ëmmer genuch fir eis oppassen op d'Méiglechkeet ze séier ze verléieren.

Den zweete Grond war eng vun eise Partnerbibliothéiken op Node.js (sic!) - déi eenzeg Komponent vum System deen net an Go/C/C++ geschriwwe gouf.

D'Autoren vun der Bibliothéik haten keng Zäit fir eng funktionéierend Versioun an enger vun den "Native" Sproochen ze bidden.

Net nëmmen ass den Node selwer net déi elegantst Léisung fir Low-Performance Geräter, awer d'Bibliothéik selwer war ganz Ressource-hongereg.

Mir hu gemierkt datt, och wa mir et wollten, Docker benotzen ze vill vun engem Overhead fir eis wier. D'Wiel gouf zugonschte vum gebiertege OS gemaach an direkt drënner geschafft.

OS

Als Resultat hu mir erëm déi einfachst Optioun als OS gewielt a Raspbian benotzt (Debian Build fir Pi).

Mir schreiwen all eis Software am Go, also hu mir och den Haapt Hardware Agent Modul an eisem System an Go geschriwwen.

Et ass deen dee verantwortlech ass fir mam GPS, Bluetooth ze schaffen, d'Charge liesen, de Scooter opzemaachen, asw.

Deploy

D'Fro ass direkt opgestan iwwer d'Noutwendegkeet e Mechanismus ëmzesetzen fir Updates op Geräter (OTA) ze liwweren - souwuel Updates fir eisen Agent / Applikatioun selwer, wéi och Updates fir d'OS / Firmware selwer (well nei Versioune vum Agent kéinten Updates vum Kernel erfuerderen oder Systemkomponenten, Bibliothéiken, etc.).

No enger zimlech laanger Analyse vum Maart huet sech erausgestallt datt et zimmlech vill Léisunge gëtt fir Updates op den Apparat ze liwweren.

Vu relativ einfachen, meeschtens Update / Dual-Boot orientéiert Utilities wéi swupd / SWUpdate / OSTree bis vollwäerteg Plattforme wéi Mender a Balena.

Als éischt hu mir décidéiert datt mir un end-to-end Léisungen interesséiert sinn, sou datt d'Wiel direkt op Plattformen gefall ass.

Déi ganz Wal gouf ausgeschloss wéinst der Tatsaach datt et tatsächlech deeselwechten Docker a senger BalenaEngine benotzt.

Awer ech bemierken datt mir trotz dësem op en Enn dauernd hire Produkt benotzen Balena Escher fir Flash Firmware op SD Kaarten - en einfachen an extrem prakteschen Utility fir dëst.

Dofir ass um Enn de Choix gefall Mender. Mender ass eng komplett Plattform fir Firmware ze montéieren, ze liwweren an z'installéieren.

Insgesamt gesäit d'Plattform super aus, awer et huet eis ongeféier eng Woch an eng hallef gedauert fir déi richteg Versioun vun eiser Firmware mam Mender Builder ze bauen.
A wat mir eis méi an de Schwieregkeete vu senger Benotzung ënnerdaucht hunn, dest méi kloer gouf datt fir et voll z'installéieren mir vill méi Zäit brauche wéi mir haten.

Och, eis enk Terminë bedeiten datt mir gezwongen waren d'Benotzung vu Mender opzeginn an en nach méi einfachen ze wielen.

Sicht

Déi einfachst Léisung an eiser Situatioun war Ansible ze benotzen. E puer Spillbicher ware genuch fir unzefänken.

Hir Essenz war datt mir einfach vum Host (CI Server) iwwer ssh op eis Hambieren verbonne sinn an Updates un hinnen verdeelt hunn.

Am Ufank war alles einfach - Dir musst am selwechte Netz mat den Apparater sinn, d'Ofdreiwung gouf iwwer Wi-Fi gemaach.

Am Büro waren et einfach eng Dosen Test Hambieren verbonne mat dem selwechten Netz, all Apparat hat eng statesch IP Adress och an Ansible Inventory spezifizéiert.

Et war Ansible deen eisen Iwwerwaachungsagent un d'Enngeräter geliwwert huet

3G / LTE

Leider konnt dëse Benotzungsfall fir Ansible nëmmen am Entwécklungsmodus funktionnéieren ier mir tatsächlech Scooter haten.

Well Scooter, wéi Dir verstitt, net mat engem Wi-Fi Router verbonne sinn, dauernd op Updates iwwer dem Netz waarden.

A Wierklechkeet kënnen Scooter iwwerhaapt keng Verbindung hunn ausser mobil 3G / LTE (an och dann net ëmmer).

Dëst setzt direkt vill Probleemer an Aschränkungen, sou wéi eng niddreg Verbindungsgeschwindegkeet an onbestänneg Kommunikatioun.

Awer déi wichtegst Saach ass datt mir an engem 3G / LTE Netz net einfach op eng statesch IP vertrauen, déi dem Netz zougewisen ass.

Dëst gëtt deelweis vun e puer SIM Kaart Ubidder geléist; et gi souguer speziell SIM Kaarten entworf fir IoT Apparater mat statesche IP Adressen. Mä mir hunn net Zougang zu esou SIM Kaarten a konnt net IP Adressen benotzen.

Natierlech goufen et Iddie fir eng Aart Aschreiwung vun IP Adressen aka Service Entdeckung iergendwou wéi Consul ze maachen, awer mir hunn esou Iddien missen opginn, well an eisen Tester d'IP Adress ze dacks änneren konnt, wat zu grousser Onstabilitéit gefouert huet.

Aus dësem Grond wier déi bequemste Notzung fir Metriken ze liwweren net den Pullmodell ze benotzen, wou mir op Apparater fir déi néideg Metriken géife goen, awer drécken, Metriken vum Apparat direkt op de Server liwweren

Opportunitéit

Als Léisung fir dëse Problem hu mir VPN gewielt - speziell Drot Gard.

Clienten (Scooter) am Ufank vum System verbonne mam VPN Server a konnten mat hinnen verbannen. Dësen Tunnel gouf benotzt fir Updates ze liwweren.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

An der Theorie konnt deeselwechten Tunnel fir Iwwerwaachung benotzt ginn, awer sou eng Verbindung war méi komplizéiert a manner zouverlässeg wéi einfache Push.

Cloud Ressourcen

Schlussendlech ass et néideg fir eis Cloud Servicer an Datenbanken ze iwwerwaachen, well mir Kubernetes fir si benotzen, ideal fir datt d'Iwwerwaachung am Cluster sou einfach wéi méiglech ass. Idealfall benotzt Helm, Zënter fir den Asaz benotze mir et an de meeschte Fäll. An, natierlech, fir d'Wollek ze iwwerwaachen, musst Dir déiselwecht Léisunge benotzen wéi fir d'Scooter selwer.

Gitt

Phew, mir schéngen d'Beschreiwung erauszesichen, loosst eis eng Lëscht maachen wat mir um Enn gebraucht hunn:

  • Eng séier Léisung, well d'Iwwerwaachung schonn am Entwécklungsprozess néideg ass
  • Volume / Quantitéit - vill Metriken néideg
  • Log Sammlung ass erfuerderlech
  • Zouverlässegkeet - Daten si kritesch fir Erfolleg ze starten
  • Dir kënnt den Pullmodell net benotzen - Dir braucht Push
  • Mir brauche vereenegt Iwwerwaachung vun net nëmmen Hardware, awer och Cloud

Dat lescht Bild huet sou ausgesinn

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Stack Auswiel

Also ware mir mat der Fro vun der Auswiel vun engem Iwwerwaachungsstack konfrontéiert.

Als éischt hu mir no der komplettster All-in-One-Léisung gesicht, déi gläichzäiteg all eis Ufuerderunge géif decken, awer gläichzäiteg flexibel genuch sinn fir hir Notzung un eis Bedierfnesser unzepassen. Trotzdem hu mir vill Restriktiounen op eis opgestallt duerch Hardware, Architektur an Termin.

Et ginn eng grouss Varietéit vun Iwwerwaachungsléisungen, ugefaange mat vollwäertege Systemer wéi Nagios, eischten oder zaff an op en Enn mat fäerdege Léisunge fir Fleet Management.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Am Ufank war déi lescht wéi eng ideal Léisung fir eis, awer e puer hunn net voll Iwwerwaachung, anerer hu schwéier limitéiert Fäegkeeten vun de gratis Versiounen, an anerer hunn einfach eis "Wënsch" net ofgedeckt oder waren net flexibel genuch fir eis Szenarien ze passen. E puer sinn einfach veroudert.

Nodeems mir eng Rei vun ähnlechen Léisungen analyséiert hunn, hu mir séier zur Conclusioun komm datt et méi einfach a méi séier wier fir en ähnlechen Stack selwer ze sammelen. Jo, et wäert e bësse méi komplizéiert sinn wéi eng komplett fäerdeg Fleet Management Plattform z'installéieren, awer mir mussen keng Kompromëss maachen.

Bal sécher, an allen enormen Iwwerfloss vu Léisungen, gëtt et schonn e fäerdeg gemaach deen eis komplett passt, awer an eisem Fall war et vill méi séier fir e bestëmmte Stack eleng ze sammelen an et "fir eis selwer" ze personaliséieren anstatt préift fäerdeg Produkter.

Mat all deem hu mir eis net beméit fir eng ganz Iwwerwaachungsplattform selwer ze sammelen, mä si gesicht fir déi funktionellst "fäerdeg" Stacks, nëmme mat der Fäegkeet fir se flexibel ze konfiguréieren.

(B)ELK?

Déi éischt Léisung, déi eigentlech considéréiert gouf, war de bekannte ELK Stack.
Tatsächlech soll et BELK genannt ginn, well alles fänkt mat Beats un - https://www.elastic.co/what-is/elk-stack

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Natierlech ass ELK eng vun de bekanntste a mächtegste Léisungen am Beräich vun der Iwwerwaachung, an nach méi am Sammelen an der Veraarbechtung vu Logbicher.

Mir hu geduecht datt ELK benotzt gi fir Logbicher ze sammelen an och laangfristeg Lagerung vu Metriken, déi vum Prometheus kritt goufen.

Fir Visualiséierung kënnt Dir Grafan benotzen.

Tatsächlech kann den neien ELK Stack Metriken onofhängeg sammelen (metricbeat), a Kibana kann se och weisen.

Awer trotzdem ass ELK ufanks aus Protokoller gewuess a bis elo huet d'Funktionalitéit vun de Metriken eng Rei eeschte Nodeeler:

  • Däitlech méi lues wéi Prometheus
  • Integréiert op vill manner Plazen wéi Prometheus
  • Et ass schwéier Alarmer fir si opzestellen
  • Metriken huelen vill Plaz op
  • Dashboards mat Metriken am Kiban opzestellen ass vill méi komplizéiert wéi am Grafan

Am Allgemengen sinn d'Metriken am ELK schwéier an nach net sou praktesch wéi an anere Léisungen, vun deenen et elo vill méi gëtt wéi just Prometheus: TSDB, Victoria Metrics, Cortex, etc., etc. Natierlech hätt ech wierklech gär eng vollwäerteg All-in-One Léisung direkt ze hunn, awer am Fall vu Metricbeat goufen et ze vill Kompromëss.

An den ELK Stack selwer huet eng Rei schwiereg Momenter:

  • Et ass schwéier, heiansdo souguer ganz schwéier wann Dir eng zimlech grouss Quantitéit un Daten sammelt
  • Dir musst "wësse wéi Dir et kachen" - Dir musst et skaléieren, awer dëst ass net trivial ze maachen
  • Gratis Versioun ofgerappt - déi gratis Versioun huet keng normal Alarm, an zum Zäitpunkt vun der Auswiel gouf et keng Authentifikatioun

Ech muss soen, datt viru kuerzem de leschte Punkt besser ginn ass an zousätzlech Ausgang am Open-Source X-Pack (Authentifikatioun abegraff) huet de Präismodell selwer ugefaang ze änneren.

Awer zu där Zäit wou mir dës Léisung géifen ofsetzen, gouf et guer keng Alarm.
Vläicht hätte mir probéiert eppes mat ElastAlert oder aner Gemeinschaftsléisungen ze bauen, awer mir hunn nach ëmmer decidéiert aner Alternativen ze berücksichtegen.

Loki - Grafana - Prometheus

Am Moment kann eng gutt Léisung sinn en Iwwerwaachungsstack ze bauen baséiert reng op Prometheus als Metrik Provider, Loki fir Logbicher, a fir Visualiséierung kënnt Dir déiselwecht Grafana benotzen.

Leider, zum Zäitpunkt vum Start vum Verkafspilot vum Projet (September-Oktober 19), war Loki nach ëmmer an der Beta Versioun 0.3-0.4, an zum Zäitpunkt vum Start vun der Entwécklung konnt et net als Produktiounsléisung ugesi ginn. iwwerhaapt.

Ech hunn nach keng Erfarung fir de Loki an eeschte Projeten ze benotzen, awer ech kann soen datt Promtail (en Agent fir Logbicher ze sammelen) super funktionnéiert fir béid Bare-Metal a Pods a kubernetes.

ZICKT

Vläicht déi wäertvollst (déi eenzeg?) Vollfunktioun Alternativ zum ELK Stack kann elo nëmmen den TICK Stack genannt ginn - Telegraf, InfluxDB, Chronograf, Kapacitor.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Ech wäert all d'Komponente hei ënnen méi detailléiert beschreiwen, awer déi allgemeng Iddi ass dëst:

  • Telegraf - Agent fir Metriken ze sammelen
  • InfluxDB - Metrik Datebank
  • Kapacitor - Echtzäit Metrikprozessor fir Alarm
  • Chronograf - Web Panel fir Visualiséierung

Fir InfluxDB, Kapacitor a Chronograf ginn et offiziell Helm Charts déi mir benotzt hunn fir se z'installéieren.

Et sollt bemierkt datt an der leschter Versioun vum Influx 2.0 (Beta), Kapacitor a Chronograf Deel vun InfluxDB ginn an net méi separat existéieren

Telegraph

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Telegraph ass e ganz liichte Agent fir Metriken op enger Staatsmaschinn ze sammelen.

Hie kann e grousse Betrag vun allem iwwerwaachen, vun nginx ze
Server eiser ganzer.

Et huet eng Rei cool Virdeeler:

  • Schnell a liicht (geschriwwen a Go)
    • Iessen e Minimum vun Ressourcen
  • Push Metriken par défaut
  • Sammelt all néideg Metriken
    • System Metriken ouni Astellungen
    • Hardware Metriken wéi Informatioun vu Sensoren
    • Et ass ganz einfach Är eege Metriken ze addéieren
  • Vill Plugins aus der Këscht
  • Sammelt Logbicher

Well Push Metriken fir eis noutwendeg waren, waren all aner Virdeeler méi wéi agreabel Ergänzunge.

D'Sammlung vu Logbicher vum Agent selwer ass och ganz bequem, well et net néideg ass zousätzlech Utilitys fir Logbicher ze verbannen.

Influx bitt déi bequemst Erfahrung fir mat Logbicher ze schaffen wann Dir benotzt syslog.

Telegraf ass allgemeng e super Agent fir Metriken ze sammelen, och wann Dir de Rescht vum ICK Stack net benotzt.

Vill Leit Kräiz et mat ELK a verschiddenen aner Zäit-Serie Datenbanken fir Kamoudheet, well et Metriken bal iwwerall schreiwen kann.

Influx DB

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

InfluxDB ass den Haaptkär vum TICK Stack, nämlech eng Zäit-Serie Datebank fir Metriken.
Zousätzlech zu Metriken, Influx kann och Logbicher späicheren, obwuel, am Wesentlechen, d'Logbicher dofir just déiselwecht Metriken sinn, nëmmen amplaz vun den üblechen numereschen Indikatoren gëtt d'Haaptfunktioun vun enger Zeil vum Logtext duerchgefouert.

InfluxDB ass och a Go geschriwwen a schéngt vill méi séier ze lafen am Verglach mam ELK op eisem (net de mächtegste) Cluster.

Ee vun de coole Virdeeler vum Influx géif och e ganz prakteschen a räiche API fir Datefroen enthalen, déi mir ganz aktiv benotzt hunn.

Nodeeler - $$$ oder Skaléieren?

Den TICK Stack huet nëmmen een Nodeel dee mir entdeckt hunn - et lëschteg. Nach méi.

Wat huet déi bezuelte Versioun datt déi gratis Versioun net?

Sou wäit wéi mir fäeg sinn ze verstoen, ass den eenzegen Ënnerscheed tëscht der bezuelter Versioun vum TICK Stack an der gratis d'Skaléierungsfäegkeeten.

Nämlech, Dir kënnt e Stärekoup mat Héich Disponibilitéit nëmmen an Enterprise Versiounen.

Wann Dir wëllt voll-vollwäerteg HA, Dir musst entweder bezuelen oder e puer crutches benotzen. Et ginn e puer Gemeinschaftsléisungen - zum Beispill influxdb-ha gesäit aus wéi eng kompetent Léisung, awer et ass geschriwwen datt et net fir d'Produktioun gëeegent ass, wéi och
Influx-Spuer - eng einfach Léisung mat Datepompel duerch NATS (et muss och skaléiert ginn, awer dëst kann geléist ginn).

Et ass schued, awer déi zwee schéngen opginn ze sinn - et gi keng frësch Verpflichtungen, ech huelen un datt d'Thema déi geschwënn erwaart Verëffentlechung vun der neier Versioun vun Influx 2.0 ass, an där vill Saachen anescht wäerte sinn (et gëtt keng Informatioun iwwer scaling an et nach).

Offiziell gëtt et eng gratis Versioun impressionéiert - tatsächlech ass dëst e primitiv HA, awer nëmmen duerch Balance,
well all Daten op all InfluxDB Instanzen hannert dem Lastbalancer geschriwwe ginn.
Hien huet e puer Nodeeler wéi potenziell Problemer mat Iwwerschreiwe Punkten an de Besoin fir Basen fir Metriken am Viraus ze kreéieren
(wat geschitt automatesch während normaler Aarbecht mat InfluxDB).

Zousätzlech Sharding gëtt net ënnerstëtzt, Dëst bedeit zousätzlech Overhead fir duplizéiert Metriken (souwuel Veraarbechtung a Lagerung), déi Dir vläicht net braucht, awer et gëtt kee Wee fir se ze trennen.

Victoria Metrik?

Als Resultat, trotz der Tatsaach, datt mir ganz zefridden waren mam TICK Stack an alles anescht wéi bezuelte Skala, hu mir décidéiert fir ze kucken ob et gratis Léisunge gëtt, déi d'InfluxDB-Datebank ersetzen konnten, wärend déi verbleiwen T_CK Komponenten verloossen.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Et gi vill Zäit-Serie Datenbanken, awer déi villverspriechendst ass Victoria Metrics, et huet eng Rei Virdeeler:

  • Schnell an einfach, op d'mannst no de Resultater benchmarks
  • Et gëtt eng Cluster Versioun, iwwer déi et elo souguer gutt Kritiken ginn
    • Si kann zerstéieren
  • Ënnerstëtzt InfluxDB Protokoll

Mir haten net virgesinn e komplett personaliséierte Stack op Victoria ze bauen an d'Haapt Hoffnung war datt mir et als Drop-in Ersatz fir InfluxDB benotze kënnen.

Leider ass dëst net méiglech, trotz der Tatsaach datt den InfluxDB Protokoll ënnerstëtzt gëtt, funktionnéiert et nëmme fir Metriken opzehuelen - nëmmen de Prometheus API ass "ausserhalb" verfügbar, dat heescht datt et net méiglech ass Chronograf drop ze setzen.

Ausserdeem ginn nëmmen numeresch Wäerter fir Metriken ënnerstëtzt (mir hunn Stringwäerter fir personaliséiert Metriken benotzt - méi doriwwer an der Rubrik Administratioun Beräich).

Natierlech, aus dem selwechte Grond, kann de VM keng Logbicher späicheren wéi Influx mécht.

Et sollt och bemierkt ginn datt zum Zäitpunkt vun der Sich no der optimaler Léisung Victoria Metrics nach net sou populär war, d'Dokumentatioun war vill méi kleng an d'Funktionalitéit war méi schwaach
(Ech erënneren net eng detailléiert Beschreiwung vun der Stärekoup Versioun an sharding).

Base Auswiel

Als Resultat gouf decidéiert datt mir fir de Pilot eis nach ëmmer op en eenzegen InfluxDB Node limitéieren.

Et waren e puer Haaptgrënn fir dës Wiel:

  • Mir hunn déi ganz Funktionalitéit vum TICK Stack wierklech gär
  • Mir hunn et scho fäerdeg bruecht et z'installéieren an et huet super geschafft
  • D'Deadline ware ausgelaf an et war net vill Zäit méi fir aner Optiounen ze testen.
  • Sou eng schwéier Laascht hu mir eis net erwaart

Mir haten net vill Scooter fir déi éischt Phas vum Pilot, an Testen während Entwécklung huet keng Leeschtung Problemer opgedeckt.

Dofir hu mir décidéiert datt fir dëse Projet een Influx Node fir eis genuch wier ouni de Besoin fir Skaléieren (kuckt Conclusiounen um Enn).

Mir hunn de Stack an d'Basis decidéiert - elo iwwer déi verbleiwen Komponente vum TICK-Stack.

Kondensator

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Kapacitor ass Deel vum TICK Stack, e Service deen Metriken iwwerwaache kann, déi an Echtzäit an d'Datebank erakommen a verschidde Aktiounen op Basis vu Reegelen ausféieren.

Am Allgemengen ass et als Instrument fir potenziell Anomalie Tracking a Maschinnléieren positionéiert (ech sinn net sécher datt dës Funktiounen gefuerdert sinn), awer de populärste Fall vu senger Benotzung ass méi allgemeng - Alarm.

Dat ass wéi mir et fir Notifikatiounen benotzt hunn. Mir hunn Slack Alarmer opgeriicht wann e bestëmmte Scooter offline ass, an datselwecht gouf gemaach fir Smart Ladegeräter a wichteg Infrastrukturkomponenten.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Dëst huet et méiglech gemaach fir séier op Probleemer ze reagéieren, souwéi Notifikatiounen ze kréien datt alles erëm normal war.

En einfacht Beispill: eng zousätzlech Batterie fir eis "Këscht" ze stäerken ass gebrach oder aus irgend engem Grond keng Kraaft; einfach andeems Dir eng nei installéiert, no enger Zäit sollte mir eng Notifikatioun kréien datt d'Funktionalitéit vum Scooter restauréiert ass.

Am Influx 2.0 Kapacitor gouf Deel vun DB

Chronograph

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Ech hu vill verschidde UI Léisunge fir Iwwerwaachung gesinn, awer ech kann soen datt wat d'Funktionalitéit an d'UX ugeet, näischt vergläicht mat Chronograf.

Mir hunn ugefaang den TICK Stack ze benotzen, komesch genuch, mat Grafan als Web Interface.
Ech wäert seng Funktionalitéit net beschreiwen; jidderee weess seng breet Méiglechkeeten fir eppes opzestellen.

Wéi och ëmmer, Grafana ass nach ëmmer e komplett universellt Instrument, wärend Chronograf haaptsächlech fir Influx benotzt gëtt.

An natierlech, dank dësem, kann Chronograf vill méi clever oder praktesch Funktionalitéit leeschten.

Vläicht ass d'Haaptbequemlechkeet fir mat Chronograf ze schaffen datt Dir d'Innere vun Ärem InfluxDB duerch Explore kuckt.

Et géif schéngen datt Grafana bal identesch Funktionalitéit huet, awer a Wierklechkeet kann en Dashboard am Chronograf mat e puer Mausklicken opgeriicht ginn (gläichzäiteg d'Visualiséierung do kucken), während Dir an Grafana nach ëmmer fréier oder spéider hutt fir d'JSON Konfiguratioun z'änneren (natierlech erlaabt Chronograf Är handkonfiguréiert Dashas eropzelueden an se als JSON z'änneren wann néideg - awer ech hu se ni missen beréieren nodeems se se op der UI erstallt hunn).

Kibana huet vill méi räich Fäegkeeten fir Dashboards a Kontrollen fir si ze kreéieren, awer d'UX fir sou Operatiounen ass ganz komplex.

Et wäert e bësse Verständnis huelen fir e praktescht Dashboard ze kreéieren. An och wann d'Funktionalitéit vun Chronograf Dashboards manner ass, ass et vill méi einfach ze maachen an ze personaliséieren.

D'Dashboards selwer, ausser dem agreabele visuellen Stil, sinn eigentlech net anescht wéi d'Dashboards zu Grafana oder Kibana:

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Dëst ass wéi d'Ufrofenster ausgesäit:

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Et ass wichteg ze notéieren, ënner anerem, datt d'Zorte vu Felder an der InfluxDB Datebank kennen, de Chronograph selwer kann Iech heiansdo automatesch hëllefe mat enger Query ze schreiwen oder déi richteg Aggregatiounsfunktioun wéi mëttler ze wielen.

An natierlech ass Chronograf sou bequem wéi méiglech fir Logbicher ze gesinn. Et gesäit esou aus:

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Par défaut sinn Influx Logbicher ugepasst fir Syslog ze benotzen an dofir hunn se e wichtege Parameter - Gravitéit.

D'Grafik uewen ass besonnesch nëtzlech; op et kënnt Dir d'Feeler gesinn, déi optrieden an d'Faarf weist direkt kloer ob d'Gravitéit méi héich ass.

E puer Mol hu mir wichteg Bugs op dës Manéier gefaangen, an d'Logbicher fir déi lescht Woch gesinn an e roude Spike gesinn.

Natierlech wier et am Idealfall, Alarmer fir esou Feeler opzestellen, well mer schonn alles dofir haten.

Mir hunn dëst souguer eng Zäitchen ageschalt, awer am Prozess vun der Virbereedung vum Pilot huet sech erausgestallt datt mir zimmlech vill Feeler kréien (inklusiv Systemer wéi d'Onverfügbarkeet vum LTE Netzwierk), déi och de Slack Kanal "spamme" vill, ouni Problemer ze maachen.grouss Virdeel.

Déi richteg Léisung wier déi meescht vun dësen Aarte vu Feeler ze handhaben, d'Gravitéit fir si unzepassen an nëmmen dann d'Alarm z'aktivéieren.

Op dës Manéier géifen nëmmen nei oder wichteg Feeler op Slack gepost ginn. Et war einfach net genuch Zäit fir esou e Setup no de knappen Deadline.

Authentifikatioun

Et ass och derwäert ze ernimmen datt Chronograf OAuth an OIDC als Authentifikatioun ënnerstëtzt.

Dëst ass ganz bequem, well et Iech erlaabt et einfach op Äre Server ze befestigen an e vollwäertege SSO ze kreéieren.

An eisem Fall war de Server keycloak - et gouf benotzt fir mat der Iwwerwaachung ze verbannen, awer dee selwechte Server gouf och benotzt fir Scooter an Ufroe fir de Back-End ze authentifizéieren.

"Admin"

Déi lescht Komponent déi ech beschreiwen ass eise selbstgeschriwwene "Admin Panel" a Vue.
Prinzipiell ass et just e Standalone Service dee Scooterinformatioun vun eisen eegenen Datenbanken, Mikroservicer a Metrikdaten vun InfluxDB gläichzäiteg weist.

Zousätzlech goufe vill administrativ Funktiounen dohinner geréckelt, wéi zum Beispill e Noutfall-Restart oder e Spär fir d'Ënnerstëtzungsteam op afstand opzemaachen.

Et waren och Kaarten. Ech hu scho gesot datt mir mat Grafana amplaz Chronograf ugefaang hunn - well fir Grafana Kaarte sinn a Form vu Plugins verfügbar, op deenen mir d'Koordinate vu Scooter gesinn. Leider sinn d'Kapazitéite vu Kaart Widgets fir Grafana ganz limitéiert, an als Resultat war et vill méi einfach Är eege Webapplikatioun mat Kaarten an e puer Deeg ze schreiwen, fir net nëmmen d'Koordinaten am Moment ze gesinn, awer och ze weisen der Streck vum Scooter geholl, kënnen d'Donnéeën op Kaart ze filteren, etc.. (all déi Funktionalitéit, déi mir net an engem einfachen Dashboard konfiguréieren konnten).

Ee vun de scho genannte Virdeeler vum Influx ass d'Fäegkeet fir Är eege Metriken einfach ze kreéieren.
Dëst erlaabt et fir eng grouss Varietéit vun Szenarie benotzt ze ginn.

Mir hu probéiert all nëtzlech Informatioun do opzehuelen: Batterieladung, Sperrstatus, Sensorleistung, Bluetooth, GPS a vill aner Gesondheetschecken.
Mir hunn dat alles op der Admin Panel ugewisen.

Natierlech war de wichtegste Critère fir eis den Operatiounszoustand vum Scooter - tatsächlech kontrolléiert Influx dëst selwer a weist et mat "grénge Luuchten" an der Nodes Sektioun.

Dëst gëtt duerch d'Funktioun gemaach Doudeger - mir hunn et benotzt fir d'Leeschtung vun eiser Box ze verstoen an déiselwecht Alarmer op Slack ze schécken.

Iwwregens, hu mir d'Scooter no den Nimm vun de Personnagen aus The Simpsons benannt - et war sou bequem fir se vuneneen z'ënnerscheeden

An am Allgemengen war et méi Spaass op dës Manéier. Ausdréck wéi "Guys, Smithers ass dout!" goufen permanent héieren.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

String Metriken

Et ass wichteg datt InfluxDB Iech erlaabt net nëmmen numeresch Wäerter ze späicheren, sou wéi de Fall mat Victoria Metrics.

Et géif schéngen datt dëst net sou wichteg ass - schliisslech, ausser Logbicher, kënnen all Metriken a Form vun Zuelen gespäichert ginn (just d'Mapping fir bekannte Staaten addéieren - eng Zort Enum)?

An eisem Fall gouf et op d'mannst ee Szenario wou String Metriken ganz nëtzlech waren.
Et ass just geschitt datt de Fournisseur vun eise "Smart Charger" eng Drëtt Partei war, mir hu keng Kontroll iwwer den Entwécklungsprozess an d'Informatioun déi dës Ladegeräter kënne liwweren.

Als Resultat war d'Lade-API wäit vun ideal, awer den Haaptproblem war datt mir hiren Zoustand net ëmmer verstinn.

Hei koum den Influx zur Rettung. Mir hunn einfach de Stringstatus geschriwwen, deen eis an d'InfluxDB Datebankfeld komm ass ouni Ännerungen.

Fir eng Zäit sinn nëmme Wäerter wéi "online" an "offline" dohinner komm, baséiert op wéi eng Informatioun an eisem Admin Panel ugewise gouf, an Notifikatiounen op Slack geschéckt ginn. Wéi och ëmmer, iergendwann hunn och Wäerter wéi "deconnectéiert" ugefaang do ze erschéngen.

Wéi et sech spéider erausstellt, gouf dëse Status eemol no engem Verloscht vun der Verbindung geschéckt, wann de Ladegeräter keng Verbindung mam Server no enger gewësser Unzuel vu Versich opbaue konnt.

Also, wa mir nëmmen e fixe Set vu Wäerter benotzt hunn, kënne mir dës Ännerungen an der Firmware net zur richteger Zäit gesinn.

An am Allgemengen, String Metriken bidden vill méi Méiglechkeete fir ze benotzen; Dir kënnt praktesch all Informatioun an hinnen ophuelen. Och wann Dir natierlech och dëst Tool suergfälteg benotze musst.

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Zousätzlech zu den üblechen Metriken hu mir och GPS-Standortinformatioun an InfluxDB opgeholl. Dëst war onheemlech nëtzlech fir d'Iwwerwaachung vun der Lag vu Scooter an eisem Admin Panel.
Tatsächlech woussten mir ëmmer wou a wéi ee Scooter am Moment war, dee mir gebraucht hunn.

Dëst war eis ganz nëtzlech wa mir no engem Scooter gesicht hunn (kuckt Conclusiounen um Enn).

Infrastruktur Iwwerwachung

Nieft de Scooter selwer, hu mir och eis ganz (zimmlech extensiv) Infrastruktur missen iwwerwaachen.

Eng ganz allgemeng Architektur huet sou ausgesinn:

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Wa mir e pure Iwwerwaachungsstack markéieren, gesäit et esou aus:

Gitt e vermësste Scooter zréck, oder d'Geschicht vun enger IoT Iwwerwaachung

Wat mir gären an der Wollek kontrolléieren ass:

  • Datenbanken
  • keycloak
  • Mikroservicer

Well all eis Cloud-Servicer zu Kubernetes sinn, wier et flott Informatiounen iwwer säin Zoustand ze sammelen.

Glécklecherweis kann Telegraf aus der Këscht eng riesech Unzuel vu Metriken iwwer den Zoustand vum Kubernetes-Cluster sammelen, an Chronograf bitt direkt schéi Dashboards dofir.

Mir hunn haaptsächlech d'Performance vun de Pods an de Gedächtnisverbrauch iwwerwaacht. Am Fall vun engem Fall, Alarmer am Slack.

Et ginn zwou Weeër fir Pods a Kubernetes ze verfolgen: DaemonSet an Sidecar.
Béid Methode ginn am Detail beschriwwen an dësem Blog Post.

Mir hunn Telegraf Sidecar benotzt an nieft Metriken, Pod Logbicher gesammelt.

An eisem Fall hu mir misse mat de Logbicher täuschen. Trotz der Tatsaach datt Telegraf Logbicher aus der Docker API zéie kann, wollte mir eng eenheetlech Sammlung vu Logbicher mat eisen Enngeräter hunn a konfiguréiert Syslog fir Container fir dëst. Vläicht war dës Léisung net schéin, awer et goufe keng Reklamatiounen iwwer seng Aarbecht an d'Logbicher goufen gutt am Chronograf ugewisen.

Monitor Iwwerwachung???

Um Enn koum déi eeler Fro vun Iwwerwaachungssystemer iwwerwaachen, mä glécklecherweis oder leider hate mir einfach net genuch Zäit dofir.

Obwuel Telegraf einfach seng eege Metriken schécken kann oder Metriken aus der InfluxDB Datebank sammelen fir entweder op dee selwechten Influx oder soss anzwousch ze schécken.

Conclusiounen

Wéi eng Conclusiounen hu mir aus de Resultater vum Pilot gezunn?

Wéi kënnt Dir Iwwerwaachung maachen?

Éischtens, den TICK Stack huet eis Erwaardungen voll entsprécht an huet eis nach méi Chancen ginn wéi dat wat mir ufanks erwaart hunn.

All d'Funktionalitéit déi mir gebraucht hunn war präsent. Alles wat mir domat gemaach hunn huet ouni Probleemer geschafft.

Produktivitéit

Den Haaptproblem mam TICK Stack an der gratis Versioun ass de Mangel u Skaléierungsfäegkeeten. Dëst war kee Problem fir eis.

Mir hunn net genee Belaaschtungsdaten / Figuren gesammelt, awer mir hunn Daten vun ongeféier 30 Scooter gläichzäiteg gesammelt.

Jidderee vun hinnen huet méi wéi dräi Dutzend Metriken gesammelt. Zur selwechter Zäit goufen Logbicher vun den Apparater gesammelt. Datesammlung a Sendung ass all 10 Sekonnen geschitt.

Et ass wichteg ze bemierken datt no enger Woch an eng hallef vum Pilot, wann de gréissten Deel vun de "Kandheetsproblemer" korrigéiert goufen an déi wichtegst Probleemer scho geléist goufen, hu mir d'Frequenz vun der Sendung vun Daten op de Server misse reduzéieren. 30 Sekonnen. Dëst gouf noutwenneg, well de Verkéier op eise LTE SIM Kaarten séier ugefaang ze verschwannen.

De gréissten Deel vum Traffic gouf vu Logbicher verbraucht; d'Metriken selwer, och mat engem 10 Sekonnen Intervall, hunn et praktesch net verschwenden.

Als Resultat, no enger Zäit hu mir d'Sammlung vu Logbicher op Apparater komplett ausgeschalt, well spezifesch Probleemer scho kloer waren och ouni konstante Sammlung.

A verschiddene Fäll, wann d'Logbicher kucken nach ëmmer néideg war, hu mir einfach iwwer WireGuard iwwer VPN verbonnen.

Ech addéieren och datt all separat Ëmfeld vuneneen getrennt war, an d'Laascht uewen beschriwwe war nëmme relevant fir d'Produktiounsëmfeld.

Am Entwécklungsëmfeld hu mir eng separat InfluxDB Instanz opgeworf, déi weider Donnéeën all 10 Sekonnen sammelen a mir hu keng Performanceprobleemer gerannt.

TICK - ideal fir kleng bis mëttel Projeten

Baséierend op dës Informatioun, géif ech ofschléissen datt den TICK Stack ideal ass fir relativ kleng Projeten oder Projeten déi definitiv keng HighLoad erwaarden.

Wann Dir keng Dausende vu Pods oder Honnerte vu Maschinnen hutt, wäert och eng InfluxDB Instanz d'Laascht gutt handhaben.

A verschiddene Fäll kënnt Dir mat Influx Relais als primitiv High Disponibilitéit Léisung zefridde sinn.

An natierlech hält keen Iech fir "vertikal" Skaléierung opzestellen an einfach verschidde Servere fir verschidden Aarte vu Metriken ze verdeelen.

Wann Dir net sécher sidd iwwer déi erwaart Belaaschtung op d'Iwwerwaachungsservicer, oder Dir sidd garantéiert datt Dir eng ganz "schwéier" Architektur hutt / wäert hunn, da géif ech net recommandéieren déi gratis Versioun vum TICK-Stack ze benotzen.

Natierlech wier eng einfach Léisung ze kafen InfluxDB Enterprise - mee hei kann ech iergendwéi net kommentéieren, well ech selwer net mat de Subtilitéite vertraut sinn. Nieft der Tatsaach, datt et ganz deier ass an definitiv net gëeegent fir kleng Betriber.

An dësem Fall, haut, géif ech recommandéieren fir Metriken ze sammelen duerch Victoria Metrics a Logbicher mat Loki.

True, ech wäert erëm eng Reservatioun maachen datt Loki / Grafana vill manner bequem sinn (wéinst hirer méi grousser Villsäitegkeet) wéi de fäerdege TICK, awer si si gratis.

wichteg: all déi hei beschriwwen Informatioun ass relevant fir d'Versioun Influx 1.8, am Moment ass Influx 2.0 amgaang erauszekommen.

Och wann ech keng Chance hat et a Kampfbedéngungen ze probéieren an et ass schwéier Conclusiounen iwwer Verbesserungen ze zéien, ass d'Interface definitiv nach besser ginn, d'Architektur ass vereinfacht (ouni Kapazitor a Chronograf),
Templates erschéngen ("Killer Feature" - Dir kënnt Spiller a Fortnite verfollegen an Notifikatiounen kréien wann Äre Liiblingsspiller e Spill gewënnt). Awer leider, am Moment, huet d'Versioun 2 net déi Schlëssel Saach fir déi mir déi éischt Versioun gewielt hunn - et gëtt keng Logsammlung.

Dës Funktionalitéit erschéngt och am Influx 2.0, awer mir konnten keng Frist fannen, och ongeféier.

Wéi net IoT Plattformen ze maachen (elo)

Um Enn, nodeems de Pilot gestart gouf, hu mir eis selwer eisen eegene vollwäertege IoT Stack zesummegesat, an der Verontreiung vun enger Alternativ, déi no eise Standarden gëeegent ass.

Wéi och ëmmer, viru kuerzem ass et an der Beta Versioun verfügbar OpenBalena - et ass schued datt si net do war wéi mir ugefaang hunn de Projet ze maachen.

Mir si ganz zefridden mam Ennresultat an der Plattform baséiert op Ansible + TICK + WireGuard déi mir selwer zesummegesat hunn. Awer haut géif ech recommandéieren Balena méi no ze kucken ier Dir probéiert Är eege IoT Plattform selwer ze bauen.

Well schlussendlech kann et dat meescht maachen wat mir gemaach hunn, an OpenBalena ass gratis an oppe Quell.

Et weess scho wéi een net nëmmen Updates schéckt, awer och e VPN ass scho agebaut a personaliséiert fir an engem IoT Ëmfeld ze benotzen.

A viru kuerzem hu si souguer hir verëffentlecht Hardware, déi einfach un hiren Ökosystem verbënnt.

Hey, wat iwwer de vermësste Scooter?

Also ass de Scooter, "Ralph", ouni Spuer verschwonnen.

Mir sinn direkt gelaf fir d'Kaart an eisem "Admin Panel" ze kucken, mat GPS Metriken Daten vun InfluxDB.

Duerch Iwwerwachungsdaten hu mir einfach festgestallt, datt de Scooter de leschten Dag géint 21:00 Auer aus der Parkplaz fortgaang ass, ongeféier eng hallef Stonn an eng Géigend gefuer ass a bis 5 Auer nieft engem däitschen Haus geparkt war.

No 5 Auer goufe keng Iwwerwaachungsdaten kritt - dëst bedeit entweder déi zousätzlech Batterie war komplett entlooss, oder den Ugräifer huet endlech erausfonnt wéi d'Smart Hardware aus dem Scooter ewechgeholl gëtt.
Trotzdem gouf d'Police nach op d'Adress geruff wou de Scooter stoung. De Scooter war net do.

De Proprietaire vum Haus war awer och iwwerrascht dovun, well hien gëschter Owend eigentlech mam Scooter vum Büro heem gefuer ass.

Wéi et sech erausstellt, ass ee vun de Support-Mataarbechter moies fréi ukomm an huet de Scooter opgeholl, gesinn datt seng zousätzlech Batterie komplett entlaascht war an en (zu Fouss) op de Parking bruecht huet. An déi zousätzlech Batterie huet wéinst Feuchtigkeit gescheitert.

Mir hunn de Scooter vun eis selwer geklaut. Ech weess iwwregens net wéi a wien dann de Problem mam Policefall geléist huet, awer d'Iwwerwaachung huet perfekt geschafft ...

Source: will.com

Setzt e Commentaire