Prometheus node exporter

Prometheus (https://prometheus.io/) tai atviro kodo monitoringo sistema. Veikimo principas labai paprastas, kompiuteryje/serveryje veikia taip vadinamas node exporter’is kuris tam tikru portu (pagal nutylėjimą 9100), tekstiniu formatu atiduoda metrikas.

Metrikos gali būti serverio apkrovos parametrai, aparatinės įrangos informacija (temperatūros, aušintuvai, diskai ir t.t.), ar kažkokios programinės įrangos mariadb/mysql, apache ir t.t. metrikos. Exporterių tikrai yra prirašyta pakankamai daug, o jei reikia kažko išskirtinio, tikrai labai nesunkiai galima eksportuoti savo kažkokias susigalvotas metrikas.

Mano tikslas – ofiso serverių (labiau switch‘ų) kambaryje stebėti patalpos temperatūrą. Viskas turėtų patekti į prometheus ir būti atvaizduota grafanoje (https://grafana.com/).

Taigi, konstruojam hardwarinį temperatūrų node exporterį. Tam panaudojau Arduino nano ir enc28j60 LAN modulį.

Kodo pavyzdžių ir kaip viską sujungti tikrai galima rasti internete. Bet visos papaišytos schemos man neveikė. Problema buvo LAN modulio maitinimas. Kai kurios schemos nurodo LAN moduliui paimti įtampą nuo arduino 3V3 pin’o. Nuo jo pajungus, man moduliukas išviso neveikė. Nedegė jo LED ir nedegė indikaciniai LED pajungtus LAN kabelį.

Kai kurios schemos nurodo jungti nuo 5V. Tad jungiu nuo 5V pin’o. Viskas lyg veikia, bet LAN modulio čipas pradeda labai kaisti – per aukšta įtampa. Datasheet’as sako, kad reikia maitinti nuo 3V3, bet man nuo jo neveikia. Naršau internetą ieškodamas problemos ir randu: I was amazed to find that the ENC28J60 draws 200mA ! No wonder it wont work from the Nano’a 3.3v output (which is rated at 25 mA). (https://forum.arduino.cc/index.php?topic=452822.0)

Problema aiški! Lituoju 3V3 įtampos stabilizatorių ant 5V arduino pin’o, viskas veikia!… kokias dvi valandas. Viską pasijungiu ant stalo ir vėl bandau iš naujo. Po ~5min pradedu jausti, kad ardudino plokštelė pradeda palengva šilti. Panašu, kad perkaista.. bet kodėl?

Kaip matosi nuotraukoje, naudoju maža maitinimo šaltinį 220V -> 5V. Juo užmaitinu arduiną. Arduino nano turi 5V stabilizatorių, prie kurio aš jungiau LAN modulį, pasirodo, kad jis irgi yra per silpnas (nelabai čia protingai buvo jungti du stabilizatorius nuosekliai). Taigi dabar jungiu stabilizatorių jau ant Vin pin’o, ant kurio ateina 5V iš maitinimo modulio. Pagaliau schema stabiliai veikia.

Nuotraukoje matosi kaip viskas sumontuota viduje. Vidus nelabai gražus gavosi, mažoka dėžutė. Tvarkingai pritvirtinti gavosi tik maitinimo šaltinį. LAN modulis ir arduino turi tik super mažas skylutes montavimui, tad prie korpuso nesugalvojau kaip pritvirtinti, o klijuoti nenorėjau. Dėlto ir LAN jungties nesigavo gražiai išvesti per dėžutės šoną.

Rezultate curl’inant gauname:

$ curl http://192.168.10.250:9100/metrics
# Arduino DS1820 temperature exporter
temperature{thermometer="28ff6a0160170573"} 18.00
temperature{thermometer="28ff252160170585"} 16.00
temperature{thermometer="28ffed5530170399"} 16.69

Žemiau vaizdas iš Prometheus konsolės, Prometheus grafikas ir Grafanos grafikas:



Pastarasis kambarys nėra labai lankomas, todėl paskutinis žingsnis buvo sukurti prometheus alert’ą. Tad esant vėdinimo sistemos gedimui, ar dėl kažkokių priežasčių sustojus vėdinimo sistemai, praėjus 5min kai bus viršyta 22C temperatūra, Prometheus alert manager’yje pasirodys pranešimas apie pakilusia patalpos temperatūrą.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close