{"id":1160,"date":"2019-12-10T02:05:23","date_gmt":"2019-12-09T23:05:23","guid":{"rendered":"http:\/\/www.dinux.lt\/blog\/?p=1160"},"modified":"2019-12-11T22:28:26","modified_gmt":"2019-12-11T19:28:26","slug":"prometheus-node-exporter","status":"publish","type":"post","link":"http:\/\/www.dinux.lt\/blog\/?p=1160","title":{"rendered":"Prometheus node exporter"},"content":{"rendered":"<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/IMGP6808.jpg\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/IMGP6808-1024x679.jpg\" alt=\"\" width=\"1024\" height=\"679\" class=\"alignnone size-large wp-image-1161\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/IMGP6808-1024x679.jpg 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/IMGP6808-300x199.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/IMGP6808-768x509.jpg 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/IMGP6808.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Prometheus (<a href=\"https:\/\/prometheus.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/prometheus.io\/<\/a>) tai atviro kodo monitoringo sistema. Veikimo principas labai paprastas, kompiuteryje\/serveryje veikia taip vadinamas <em>node exporter&#8217;is<\/em> kuris tam tikru portu (pagal nutyl\u0117jim\u0105 9100), tekstiniu formatu atiduoda metrikas.<\/p>\n<p>Metrikos gali b\u016bti serverio apkrovos parametrai, aparatin\u0117s \u012frangos informacija (temperat\u016bros, au\u0161intuvai, diskai ir t.t.), ar ka\u017ekokios programin\u0117s \u012frangos mariadb\/mysql, apache ir t.t. metrikos. Exporteri\u0173 tikrai yra prira\u0161yta pakankamai daug, o jei reikia ka\u017eko i\u0161skirtinio, tikrai labai nesunkiai galima eksportuoti savo ka\u017ekokias susigalvotas metrikas.<\/p>\n<p>Mano tikslas &#8211; ofiso serveri\u0173 (labiau <em>switch<\/em>&#8216;\u0173) kambaryje steb\u0117ti patalpos temperat\u016br\u0105. Viskas tur\u0117t\u0173 patekti \u012f prometheus ir b\u016bti atvaizduota grafanoje (<a href=\"https:\/\/grafana.com\/\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/grafana.com\/<\/a>).<\/p>\n<p>Taigi, konstruojam hardwarin\u012f temperat\u016br\u0173 node exporter\u012f. Tam panaudojau Arduino nano ir enc28j60 LAN modul\u012f.<\/p>\n<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3430_net.jpg\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3430_net-1024x576.jpg\" alt=\"\" width=\"1024\" height=\"576\" class=\"alignnone size-large wp-image-1164\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3430_net-1024x576.jpg 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3430_net-300x169.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3430_net-768x432.jpg 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3430_net.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Kodo pavyzd\u017ei\u0173 ir kaip visk\u0105 sujungti tikrai galima rasti internete. Bet visos papai\u0161ytos schemos man neveik\u0117. Problema buvo LAN modulio maitinimas. Kai kurios schemos nurodo LAN moduliui paimti \u012ftamp\u0105 nuo arduino 3V3 pin&#8217;o. Nuo jo pajungus, man moduliukas i\u0161viso neveik\u0117. Nedeg\u0117 jo LED ir nedeg\u0117 indikaciniai LED pajungtus LAN kabel\u012f.<\/p>\n<p>Kai kurios schemos nurodo jungti nuo 5V. Tad jungiu nuo 5V pin&#8217;o. Viskas lyg veikia, bet LAN modulio \u010dipas pradeda labai kaisti &#8211; per auk\u0161ta \u012ftampa. Datasheet&#8217;as sako, kad reikia maitinti nuo 3V3, bet man nuo jo neveikia. Nar\u0161au internet\u0105 ie\u0161kodamas problemos ir randu: <em>I was amazed to find that the ENC28J60 draws 200mA ! No wonder it wont work from the Nano&#8217;a 3.3v output (which is rated at 25 mA).<\/em> (<a href=\"https:\/\/forum.arduino.cc\/index.php?topic=452822.0\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/forum.arduino.cc\/index.php?topic=452822.0<\/a>)<\/p>\n<p>Problema ai\u0161ki! Lituoju 3V3 \u012ftampos stabilizatori\u0173 ant 5V arduino pin&#8217;o, viskas veikia!&#8230; kokias dvi valandas. Visk\u0105 pasijungiu ant stalo ir v\u0117l bandau i\u0161 naujo. Po ~5min pradedu jausti, kad ardudino plok\u0161tel\u0117 pradeda palengva \u0161ilti. Pana\u0161u, kad perkaista.. bet kod\u0117l?<\/p>\n<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3933_net.jpg\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3933_net-1024x576.jpg\" alt=\"\" width=\"1024\" height=\"576\" class=\"alignnone size-large wp-image-1168\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3933_net-1024x576.jpg 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3933_net-300x169.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3933_net-768x432.jpg 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3933_net.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Kaip matosi nuotraukoje, naudoju ma\u017ea maitinimo \u0161altin\u012f 220V ->  5V. Juo u\u017emaitinu arduin\u0105. Arduino nano turi 5V stabilizatori\u0173, prie kurio a\u0161 jungiau LAN modul\u012f, pasirodo, kad jis irgi yra per silpnas (nelabai \u010dia protingai buvo jungti du stabilizatorius nuosekliai). Taigi dabar jungiu stabilizatori\u0173 jau ant Vin pin&#8217;o, ant kurio ateina 5V i\u0161 maitinimo modulio. Pagaliau schema stabiliai veikia.<\/p>\n<p>Nuotraukoje matosi kaip viskas sumontuota viduje. Vidus nelabai gra\u017eus gavosi, ma\u017eoka d\u0117\u017eut\u0117. Tvarkingai pritvirtinti gavosi tik maitinimo \u0161altin\u012f. LAN modulis ir arduino turi tik super ma\u017eas skylutes montavimui, tad prie korpuso nesugalvojau kaip pritvirtinti, o klijuoti nenor\u0117jau. D\u0117lto ir LAN jungties nesigavo gra\u017eiai i\u0161vesti per d\u0117\u017eut\u0117s \u0161on\u0105.<\/p>\n<p>Rezultate curl&#8217;inant gauname:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n$ curl http:\/\/192.168.10.250:9100\/metrics\r\n# Arduino DS1820 temperature exporter\r\ntemperature{thermometer=&quot;28ff6a0160170573&quot;} 18.00\r\ntemperature{thermometer=&quot;28ff252160170585&quot;} 16.00\r\ntemperature{thermometer=&quot;28ffed5530170399&quot;} 16.69\r\n<\/pre>\n<p>\u017demiau vaizdas i\u0161 Prometheus konsol\u0117s, Prometheus grafikas ir Grafanos grafikas:<\/p>\n<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3.png\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3-1024x490.png\" alt=\"\" width=\"1024\" height=\"490\" class=\"alignnone size-large wp-image-1174\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3-1024x490.png 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3-300x144.png 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3-768x368.png 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3-1536x735.png 1536w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-3-2048x981.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4.png\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4-1024x464.png\" alt=\"\" width=\"1024\" height=\"464\" class=\"alignnone size-large wp-image-1175\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4-1024x464.png 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4-300x136.png 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4-768x348.png 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4-1536x696.png 1536w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-4-2048x929.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5.png\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5-1024x299.png\" alt=\"\" width=\"1024\" height=\"299\" class=\"alignnone size-large wp-image-1176\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5-1024x299.png 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5-300x88.png 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5-768x225.png 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5-1536x449.png 1536w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/image-5-2048x599.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Pastarasis kambarys n\u0117ra labai lankomas, tod\u0117l paskutinis \u017eingsnis buvo sukurti prometheus alert&#8217;\u0105. Tad esant v\u0117dinimo sistemos gedimui, ar d\u0117l ka\u017ekoki\u0173 prie\u017eas\u010di\u0173 sustojus v\u0117dinimo sistemai, pra\u0117jus 5min kai bus vir\u0161yta 22C temperat\u016bra, Prometheus alert manager&#8217;yje pasirodys prane\u0161imas apie pakilusia patalpos temperat\u016br\u0105.<\/p>\n<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3935_net.jpg\" rel=\"lightbox[1160]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3935_net-1024x576.jpg\" alt=\"\" width=\"1024\" height=\"576\" class=\"alignnone size-large wp-image-1183\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3935_net-1024x576.jpg 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3935_net-300x169.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3935_net-768x432.jpg 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2019\/12\/DSC_3935_net.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prometheus (https:\/\/prometheus.io\/) tai atviro kodo monitoringo sistema. Veikimo principas labai paprastas, kompiuteryje\/serveryje veikia taip vadinamas node exporter&#8217;is kuris tam tikru portu (pagal nutyl\u0117jim\u0105 9100), tekstiniu formatu atiduoda metrikas. Metrikos gali b\u016bti serverio apkrovos parametrai, aparatin\u0117s \u012frangos informacija (temperat\u016bros, au\u0161intuvai, diskai ir t.t.), ar ka\u017ekokios programin\u0117s \u012frangos mariadb\/mysql, apache ir t.t. metrikos. Exporteri\u0173 tikrai yra prira\u0161yta &#8230; <a title=\"Prometheus node exporter\" class=\"read-more\" href=\"http:\/\/www.dinux.lt\/blog\/?p=1160\" aria-label=\"More on Prometheus node exporter\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[15,14,6,12],"tags":[],"_links":{"self":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1160"}],"collection":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1160"}],"version-history":[{"count":22,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1160\/revisions"}],"predecessor-version":[{"id":1191,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1160\/revisions\/1191"}],"wp:attachment":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1160"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}