Kategória: Linux a sieť

Zmenené: 20. marec 2020

InfluxDB a spol.

Pomerne často narážam na popisy použitia InfluxDB a Grafana na monitorovanie, či už sieťových strojov alebo i vlastných senzorov, a tak som neodolal, vyskúšal … a zavrhol. V tomto článku sa pokúsim priblížiť moje (krátke) skúsenosti a negatívne veci, ktoré som nikde inde nenašiel.

InfluxDB je databáza určená na zaznamenávanie časových sledov dát. Pre mňa nič nové, pretože na tento účel už roky používam RRDtool <http://oss.oetiker.ch/rrdtool/>. Ak neviete, tak je to jednoducho databáza, ktorá zaznamenáva hodnotu spolu s časovou informáciou a poskytuje možnosť vyžiadať si z úložiska dáta pre zadaný časový interval.

V rôznych článkoch sa stretnete so skratkami TICK a/alebo TIG a obe sa skladajú z prvých písmen použitého softvéru:

  • Ttelegraf je nástroj na zhromažďovanie dát a ich odosielanie do databázy (agent)
  • Iinfluxdb je samotná databáza časových sledov
  • Cchronograf je nástroj na vizualizáciu (generovanie grafov) dát, od rovnakých autorov ako influxdb
  • Ggrafana je tiež nástroj na vizualizáciu (generovanie grafov) dát, od iných autorov a s podporou aj iných vstupov ako je influxdb
  • Kkapacitor je nástroj na sledvoanie anomálií, ale tento som netestoval

Vlastne grafana bola príčinou, že som sa rozhodol vyskúšať tento systém, pretože snímky obrazoviek jej grafov sú prosto úchvatné, no rozhodol som sa vyskúšať aj spomínaný chronograf, ktorý poskytuje viac-menej to isté, avšak len (a priamo) pre influxdb.

V úložisku Debianu je k dispozícii len staršia verzia influxdb, preto som na všetky komponenty použil ich najnovšie stabilné verzie, tak ako sú dostupné na domovských stránkach.

Počiatočné nadšenie

Inštalácia bola viac ako jednoduchá. Celá sada TICK i grafana sú dostupné cez ich úložisko, pridanie úložiska do Debianu je v ich dokumentácii presne popísané. Jednoducho radosť inštalovať. Po nainštalovaní sú aplikácie spustené s predvolenými nastaveniami a pripravené pracovať. Stačí počkať niekoľko sekúnd (predvolene 10) a v databáze sa začnú objavovať prvé dáta, o ktorých posielanie sa postará agent telegraf.

Veľmi jednoduché je nastavenie spojenia chronograf k databáze, trošku (ale naozaj len trošku) komplikovanejšie to je v grafana. chronograf dokonca poskytne aj niekoľko predvolených grafov, takže s minimom námahy uvidíte základné systémové metriky (na vyskúšanie som nainštaloval telegraf na tri stroje, vrátane jedného Raspberry Pi). V grafane síce žiadne predvolené grafy nie sú, ale pridanie grafov je intuitívne a veľmi rýchlo som dostal prvé grafy.

Moje nadšenie pokračovalo aj ďalej. Postupne som do telegrafu pridal sledovanie skoro všetkých parametrov, ktoré sledujem pomocou Cacti (a že ich nie je málo). Veľmi jednoducho som integroval aj napojenie na MQTT, takže sa moje grafy rozrástli aj o moje senzory teploty doma.

Grafy a iné ukazovatele boli nádherné, interaktívne. Bez väčších problémov som oba vizualizačné nástroje sprístupnil pomocou reverzného proxy Nginx, aby som nemusel v prehliadači ručne zadávať port. Spustenie monitorovania na ďalšom stroji sa po chvíli prejavilo v dostupnosti grafov (ak sú správne vytvorené), a tak nie sú potrebné zvyčajné klikacie tance ako v Cacti. No jednoducho, radosť používať.

Realizačné vytriezvenie

Po počiatočnej inštalácii a nastavení som sa podrobnejšie pozrel na cenu, ktorú táto nádhera stojí. Možno i preto, že som zmenil predvolený interval zberu parametrov z 10 s na 1 min, bola záťaž procesora (i load) minimálna na klientských strojoch a len o čosi významnejšia na serveri, ale celkovo zanedbateľná.

Spotreba RAM

So spotrebou RAM to bolo horšie, oveľa horšie ako som čakal. Niečo mi síce naznačili už veľmi orientačné odporúčania hardvérových požiadaviek influxdb, kde odporúčania začínajú na 1 GB RAM, ale stále som dúfal, že sa to netýka takého minimálneho použitia, aké som plánoval.

Potreba RAM pri serveri, s ohľadom na monitorovanie len troch strojov, ma prekvapila. Bola dosť nestabilná, ale každé ráno (asi kvôli rotácii záznamov) klesla na cca 80 MB a potom trvalo stúpala až do nasledujúceho dňa. Aktuálna hodnota využitej RAM závisí na aktuálnom počte požiadaviek (z grafana/chronograf), kedy dočasne vzrástla a po vybavení požiadavky klesla, ale nikdy neklesla na predošlú úroveň. V priemere influxdb používala asi 160 MB RAM, s maximami bežne okolo 256 MB RAM (ale zaznamenal som maximum 450 MB RAM).

Ešte zaujímavejšia bola spotreba RAM aplikáciou telegraf. Tento nástroj dokázal pracovať so 7 MB RAM, čo je úžasné a plne zodpovedá mojej predstave – veď dohromady nič nerobí, len raz za čas zozbiera a odošle údaje. Problém je, že táto aplikácia po reštarte počítača dokázala spotrebovávať až skoro 100 MB RAM, a túto spotrebu si udržiavala až do svojho najbližšieho reštartu. Po nasledujúcom reštarte systému sa znova spustí a zožerie 100 MB…

Spotreba RAM pri chronograf i grafana bola konštantná a ničím sa nevymykala mojim predpokladom. Samozrejme, pri generovaní odpovedí na požiadavky spotreba RAM stúpla, potom však klesla späť, celkovo neprekračovala (pri pripojení dvoch prehliadačov) 128 MB..

Ak to spočítam dokopy, 256 + 100 + 100 MB, vychádza mi minimálne 450 MB RAM, potrebných na obslúženie pár počítačov a senzorov. A to som dáta zbieral len niekoľko dní, takže nebolo skade tvoriť zobrazenie napr. za posledný mesiac, kde určite potreba porastie…

Platnosť a zobrazenie dát

Avšak, okrem spotreby RAM a hlásenia domov mi najviac vadila/chýbala možnosť automatického zahadzovania starých časových záznamov (downsampling). influxdb síce dovoľuje nastaviť dobu platnosti dát pomocou tzv. politiky platnosti (retention policy), takže nie je problém zahodiť záznamy staršie ako napr. mesiac, či rok. A podporuje aj spôsob zoskupovania (agregácie) starších záznamov. Pomerne rýchlo som nastavil predvolenú platnosť 1 deň so záznamami každú minútu, potom týždeň á 5 min a rok á 1 hod.

Nastavenie platnosti i agregácie je pomerne jednoduché a flexibilné a nezaznamenal som ani výrazné zvýšenie spotreby RAM či záťaže CPU. No nezaznamenal som ani spôsob ako ich automaticky použiť na generovanie grafov, a to ani v chronograf a ani v grafana. Čo to znamená? Nemôžete mať jeden graf, ktorý bude za posledný deň ukazovať záznamy á 1 min a ten istý graf, ktorý bude za posledný rok zobrazovať záznamy á 1 hod, potrebujete na to grafy dva. V chronograf musia dokonca oba takéto grafy zdieľať rovnaké nastavenie časového rozsahu panela (dashboard).

Ďalší problém je, ak zaznamenávate hodnotu počítadla, tzn. keď parameter nevracia aktuálnu hodnotu (ako napr. teplota), ale postupne rastúci počet (napr. počet prenesených bajtov sieťovej karty). influxdb na takéto počítadlá poskytuje funkciu (derivative), pomocou ktorej môžete zobraziť zmenu tohoto počítadla, ale ako chronograf, tak i grafana v prípade použitia tejto funkcie nezobrazia chýbajúce hodnoty ako prázdne miesto, ale zanovito spájajú poslednú platnú hodnotu s nasledujúcou a grafy tak ukazujú somariny.

A v prípade grafana nie len zobrazovali hlúposti, ale aj generovali falošné upozornenia. Tak, či tak, pre mňa neprijateľné.

Balíky deb

Ako som spomenul, inštalácia všetkých programov bola triviálna, všetky sa nainštalovali a spustili a – všetky predvolene volajú domov. Asi som veľmi spohodlnel dlhoročným používaním Debianu, ale jednoducho nepovažujem za samozrejmé, že si program robí v mojom počítači niečo, s čím nesúhlasím a odosielanie štatistík do tejto kategórie spadá. Autori programov dokážu siahodlho vysvetľovať, ako môžme byť radi, že môžme program používať bezplatne, tak sme (podľa nich) povinní strpieť všetko? Samozrejme, dá sa to v nastaveniach (ľahšie alebo zložitejšie) vypnúť, ale po inštalácii je program spustený a štatistiky odoslané. Z môjho pohľadu neprijateľné a veľké mínus.

Ďalší problém sa vyskytol vlastne náhodou. Ako som spomenul, inštaloval som softvér z úložiska autorov a počas tých pár dní testovania došlo k jeho aktualizácii – avšak vrátane podpisových kľúčov. A tak aktualizácia (apt update) hlásilo chybu. Nepátral som, či naozaj zmenili kľúč alebo došlo k napadnutiu úložiska, pretože k tomu došlo v okamžiku, keď už som (kvôli spotrebe RAM) vedel, že toto riešenie nechcem. Avšak, dôveryhodnosti tento incident nepridal.

Nakoniec som všetky aplikácie odinštaloval. Krásna ukážka amatérizmu v praxi:

  • grafana i chronograf ostali spustené aj po odinštalovaní
  • ani jeden program neodstránil používateľa, ktorého pri inštalácii vytvoril

Takže som ručne zastavil, to čo sa nezastavilo, ručne som prehľadal a odstránil pozostatky v súborovom systéme (nebolo ich veľa) a nakoniec odstránil i používateľov.

Áno, môžte namietať, že balíky deb nie sú primárnym cieľom autorov programov a budete mať iste pravdu. Avšak niečo to napovedá o kvalite ich práce…

Záver

Z krátkeho testovania TICK a TIG mám zmiešané pocity. Ich inštalácia, použitie i výsledné grafy stoja za to. Otázkou však ostáva, ži za tú jednoduchosť získania zopár grafov stojí potreba 500 MB RAM (ktorá bude neskôr iste len rásť). Moja odpoveď je jasné nie - -tieto nástroje nie sú vhodné na malé domáce použitie, kde len málokto chce použiť samostatný monitorovací server. Čítal som viacero článkov, ktoré odporúčali použitie TIG na Raspberry Pi, tu si treba uvedomiť, že zožerú polovicu dostupnej RAM…

No a spotrebovať 100 MB RAM na prostá zhromažďovač údajov, to je sila, najmä ak ten istý program na tom istom stroji dokáže fungovať s menej ako 10 MB…

No najväčší problém vidím práve v spôsobe spracovania starých a chýbajúcich dát. Na figu sú mi nádherne vyzerajúce a interaktívne grafy, ak namiesto chýbajúcej hodnoty ukážu niečo iné (odporúčanie od grafana je vyplniť chýbajúce nulami). Nemožnosť zobrazovania nových hodnôt s vysokým a starých s nízkym rozlíšením v jednom grafe (a v prípade chronograf ani v jednom paneli, tzn. na jednej stránke) je veľké mínus, ktoré nevyváži ani jednoduchosť pridávania ďalších strojov (mimochodom neviem si predstaviť 20 strojov v jednom grafe).

Škoda, tie grafy sú fakt krásne…