{"id":749,"date":"2017-12-11T00:36:40","date_gmt":"2017-12-10T21:36:40","guid":{"rendered":"http:\/\/www.dinux.lt\/blog\/?p=749"},"modified":"2017-12-11T00:36:40","modified_gmt":"2017-12-10T21:36:40","slug":"metrikoms-influxdb-grafana","status":"publish","type":"post","link":"http:\/\/www.dinux.lt\/blog\/?p=749","title":{"rendered":"Metrikoms: influxDB + Grafana"},"content":{"rendered":"<p>Vienintel\u0117s mano renkamos metrikos yra temperat\u016bra apie kuria ra\u0161iau <a href=\"http:\/\/www.dinux.lt\/blog\/?p=639\" rel=\"noopener\" target=\"_blank\">Protingas namas. 1 Dalis. Temperat\u016bra.<\/a>. Tiesa nuo tada termometr\u0173 padaug\u0117jo ir dabar j\u0173 a\u0161tuoni. Ir duomenys jau senokai saugomi ne mariadb\/mysql, o influxDB. O duomenims per\u017ei\u016br\u0117ti ir analizuoti naudoju <a href=\"http:\/\/grafana.org\" rel=\"noopener\" target=\"_blank\">Grafana<\/a>.<\/p>\n<p>Oficealaus influxdb paketo n\u0117ra, tad teks susikompiluoti i\u0161 AUR:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nyaourt -S influxdb\r\n<\/pre>\n<p><a href=\"https:\/\/docs.influxdata.com\/influxdb\/v1.3\/introduction\/getting_started\/\" rel=\"noopener\" target=\"_blank\">Pirmuosius influxdb \u017einksnius galima rasti \u010dia<\/a>. Tikrai n\u0117ra nieko sud\u0117tingo.<\/p>\n<p>Mano duomen\u0173 baz\u0117 vadinasi <em>termometrai<\/em>, o lentel\u0117 <em>temperaturos<\/em>.<\/p>\n<p>Duomenys atrodo taip (stulpeli\u0173 yra daugiau, apkirpau, kad tilptu \u012f puslap\u012f):<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n&gt; select * from temperaturos limit 20 \r\nname: temperaturos\r\ntime                28-0000052D4E36 28-0000052DC554 28-0000052DCA4A\r\n----                --------------- --------------- ---------------\r\n1491421622470175617                                 20.6875\r\n1491421622933431847 5.6875\r\n1491421624775957066                 20.1875\r\n1491421683164960608                                 20.6875\r\n1491421683725053335 5.6875\r\n1491421685386914026                 20.1875\r\n1491421743393921182                                 20.6875\r\n1491421743956469988 5.6875\r\n1491421745634864667                 20.1875\r\n1491421802759609752                                 20.6875\r\n1491421803239163911 5.6875\r\n1491421804969827574                 20.1875\r\n<\/pre>\n<p>Duomenys taip pabire, nes kiekvienas termometras \u012fra\u0161omas atskirai (skiriasi \u012fra\u0161ymo laikas). Viso to i\u0161vengti galima surinkus visus duomenis ir \u012fra\u0161in\u0117jant visk\u0105 vienu metu, viena u\u017eklausa. Taip u\u017eklausa, nes duomenis \u012fra\u0161in\u0117jami kreipiantis tam tikru portu <em>CURL<\/em>&#8216;u, <em>WGET<\/em>&#8216;u ar kita programine \u012franga darant <em>GET<\/em> u\u017eklaus\u0105. Galima tiesiog \u012f nar\u0161ykl\u0117s URL&#8217;\u0105 suvesti atitinkama adres\u0105.<\/p>\n<p>A\u0161 duomenis ra\u0161au su <em>PHP<\/em> pa<em>CURL<\/em>&#8216;inant <em>URL<\/em>&#8216;\u0105. Kodas \u017eemiau:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n        \/\/Post to influxDB\r\n        $ch = curl_init(&quot;http:\/\/localhost:8086\/write?db=termometrai&quot;);\r\n        curl_setopt($ch, CURLOPT_POST, 1);\r\n        curl_setopt($ch, CURLOPT_POSTFIELDS,&quot;temperaturos &quot;.$daviklioHWID.&quot;=&quot;.$tempvalue);\r\n        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n        curl_exec($ch);\r\n        curl_close($ch);\r\n<\/pre>\n<p><em>daviklioHWID<\/em> yra termometro DS1820 adresas.<br \/>\n<em>time<\/em> (laiko) reik\u0161m\u0117s paduoti nereikia.<\/p>\n<p>Tame viskas ir paprasta, tiesiog aklai padavin\u0117ju termometro adres\u0105 ir jo reik\u0161m\u0119. Jei sistemoje atsiranda naujas termometras (naujas adresas) nieko daryt papildomai nereikia, stulpelis <em>influxDB<\/em> atsiranda automati\u0161kai.<\/p>\n<p>Dabar apie duomen\u0173 atvaizdavim\u0105. Duomenis grafi\u0161kai atvaizduoti naudoju grafana.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo pacman -Sy grafana\r\n<\/pre>\n<p>Kai prad\u0117jau naudoti Grafana tada dar ji nemok\u0117jo skaityti i\u0161 mariadb\/mysql. Dabar paskutin\u0117se versijose ji tai gali daryti. Bet <em>influxdb<\/em> veikia akivaizd\u017eiai grei\u010diau, ypa\u010d kai db serveris paleistas ant <em>Raspberry Pi model B<\/em>.<\/p>\n<p>Pirm\u0105 kart\u0105 prisijungus prie Grafana reikia prisid\u0117ti <em>Data source<\/em> t.y. duomen\u0173 \u0161altin\u012f. \u0160iuo atveju tai <em>indluxdb<\/em>.<\/p>\n<p>Turint duomen\u0173 \u0161altin\u012f galima bandyti susikonfiguruoti <em>Dash board<\/em> t.y. langas kuriame bus grafikas\/grafikai.<\/p>\n<p>Mani\u0161kis atrodo taip (paspaudus pasididina):<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-21-54.png\" rel=\"lightbox[749]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-21-54-300x177.png\" alt=\"\" width=\"300\" height=\"177\" class=\"alignnone size-medium wp-image-763\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-21-54-300x177.png 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-21-54-768x453.png 768w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-21-54.png 876w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Vienos metrikos (vienos linijos grafike) u\u017eklausa atrodo taip:<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-23-41.png\" rel=\"lightbox[749]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-23-41.png\" alt=\"\" width=\"434\" height=\"278\" class=\"alignnone size-full wp-image-765\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-23-41.png 434w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-23-41-300x192.png 300w\" sizes=\"(max-width: 434px) 100vw, 434px\" \/><\/a><\/p>\n<p>Visos keturios u\u017eklausos:<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-24-19.png\" rel=\"lightbox[749]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-24-19.png\" alt=\"\" width=\"617\" height=\"157\" class=\"alignnone size-full wp-image-764\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-24-19.png 617w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2017\/12\/Ekrano-kopija_2017-12-10_23-24-19-300x76.png 300w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/a><\/p>\n<p>Atkreipiam d\u0117mes\u012f \u012f <em>GROUP BY<\/em>. Grupuoju d\u0117l dviej\u0173 prie\u017eas\u010di\u0173. Pirmoji, tai kaip min\u0117jau auk\u0161\u010diau, duomenis \u012fra\u0161omi ne tuo pa\u010diu momentu (skiriasi keliomis sekund\u0117mis). Panaudojus grupavim\u0105 tiesiog skai\u010diuojamas, \u0161iuo atveju trij\u0173 minu\u010di\u0173 vidurkis (tam ir naudojamas <em>mean()<\/em>) nesvarbu kiek matavimu per tas tris minutes buvo padaryta. Taip visi grafikai laiko at\u017evilgiu tampa lygus.<\/p>\n<p>Antroji prie\u017eastis, kad termometrai n\u0117ra super tiksl\u016bs ir esant tomis pa\u010diomis s\u0105lygomis jie atiduota ka\u017ekiek kintamus (po kablelio) duomenis. Tad \u0161iuo atveju grafikas kiek sulyginamas ir panaikinami 0.xxx nuokrypiai.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vienintel\u0117s mano renkamos metrikos yra temperat\u016bra apie kuria ra\u0161iau Protingas namas. 1 Dalis. Temperat\u016bra.. Tiesa nuo tada termometr\u0173 padaug\u0117jo ir dabar j\u0173 a\u0161tuoni. Ir duomenys jau senokai saugomi ne mariadb\/mysql, o influxDB. O duomenims per\u017ei\u016br\u0117ti ir analizuoti naudoju Grafana. Oficealaus influxdb paketo n\u0117ra, tad teks susikompiluoti i\u0161 AUR: Pirmuosius influxdb \u017einksnius galima rasti \u010dia. Tikrai &#8230; <a title=\"Metrikoms: influxDB + Grafana\" class=\"read-more\" href=\"http:\/\/www.dinux.lt\/blog\/?p=749\" aria-label=\"More on Metrikoms: influxDB + Grafana\">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":[3,12],"tags":[],"_links":{"self":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/749"}],"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=749"}],"version-history":[{"count":16,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/749\/revisions"}],"predecessor-version":[{"id":769,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/749\/revisions\/769"}],"wp:attachment":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=749"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}