{"id":75585,"date":"2020-03-27T07:42:28","date_gmt":"2020-03-27T05:42:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko"},"modified":"2020-03-27T07:42:28","modified_gmt":"2020-03-27T05:42:28","slug":"extendedpromql-rasshifrovka-doklada-romana-havronenko","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","title":{"rendered":"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Odpor\u00fa\u010dam obozn\u00e1mi\u0165 sa s anal\u00fdzou spr\u00e1vy Romana Chavronenka \"ExtendedPromQL\"<\/strong><\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"lWYaiagvmfw\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/lWYaiagvmfw\/hqdefault.jpg\" alt=\"Prehrajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/54a175d9c74c90d9d313f8ff71476638.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Stru\u010dne o mne. Vol\u00e1m sa Roman. Pracujem v CloudFlare a \u017eijem v Lond\u00fdne. Som tie\u017e \u00fadr\u017eb\u00e1rom VictoriaMetrics.<br \/>\nA som autor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/clickhouse-grafana\">ClickHouse pluginu<\/a><\/noindex> pre Grafanu a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/chproxy\">ClickHouse-proxy<\/a><\/noindex> \u2013 je to mal\u00fd proxy pre ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/fc1aa56b144def5db9fcee844d5016f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za\u010dneme s prvou \u010das\u0165ou, ktor\u00e1 sa vol\u00e1 \u201eZlo\u017eitosti prekladu\u201c, a v nej budem rozpr\u00e1va\u0165 o tom, \u017ee ka\u017ed\u00fd jazyk alebo dokonca len jazyk komunik\u00e1cie \u2013 je to ve\u013emi d\u00f4le\u017eit\u00e9. Preto\u017ee to, ako pren\u00e1\u0161ate svoje my\u0161lienky inej osobe alebo syst\u00e9mu, je z\u00e1sadn\u00e9, ako formulujete dopyt. \u013dudia na internete sa h\u00e1daj\u00fa, ktor\u00fd jazyk je lep\u0161\u00ed \u2013 java alebo nejak\u00fd in\u00fd. Pre seba som sa rozhodol, \u017ee treba vybra\u0165 pod\u013ea \u00falohy, preto\u017ee v\u0161etko to je \u0161pecifick\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ea21f52ba5c2d3507e0106715c4ab96d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za\u010dneme od sam\u00e9ho za\u010diatku. \u010co je to PromQL? PromQL \u2013 to je jazyk dotazov Prometheus. Takto formulujeme dopyty v Prometheuse, aby sme z\u00edskali d\u00e1ta o \u010dasov\u00fdch radoch.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/56b1ef4cc04defdffeea8b2666fdc354.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co s\u00fa to d\u00e1ta o \u010dasov\u00fdch radoch? Ak to vezmeme doslovne, s\u00fa to tri parametre. <\/p>\n<p><\/p>\n<p>S\u00fa to:<\/p>\n<p><\/p>\n<ul>\n<li>Na \u010do sa pozer\u00e1me. <\/li>\n<li>Kedy sa na to pozer\u00e1me.<\/li>\n<li>A ak\u00fa hodnotu to ukazuje. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/358a193e889204d28debe1b74b93df3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ak sa pozrieme na t\u00fato diagramu (t\u00e1to diagram je z m\u00f4jho telef\u00f3nu, ktor\u00fd ukazuje \u0161tatistiku mojich krokov), m\u00f4\u017eeme r\u00fdchlo odpoveda\u0165 na tieto ot\u00e1zky. <\/p>\n<p><\/p>\n<p>Sledujeme kroky. Vid\u00edme hodnotu a vid\u00edme \u010das, ke\u010f sa na to pozer\u00e1me. T. j. pozr\u00fac na tento diagram, m\u00f4\u017eeme \u013eahko poveda\u0165, \u017ee v nede\u013eu som pre\u0161iel pribli\u017ene 15 000 krokov. To s\u00fa d\u00e1ta o \u010dasov\u00fdch radoch. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/859299ee9d25a3419c869b3ed6db6e72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teraz si po\u010fme \"rozdeli\u0165\" (transformova\u0165) ich na in\u00fd model d\u00e1t vo forme tabu\u013eky. Aj tu m\u00e1me to, na \u010do sa pozer\u00e1me. Trochu som pridal \u010fal\u0161ie \u00fadaje, ktor\u00e9 budeme naz\u00fdva\u0165 metad\u00e1tami, t. j. nebol som to ja, ale dvaja \u013eudia, povedzme, Jay a Silent Bob. Toto je to, na \u010do sa pozer\u00e1me; \u010do to zobrazuje a kedy to zobrazuje t\u00fato hodnotu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/fd7b48ea3c25b57c13605e84c4a52a2c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTeraz sa pok\u00fasme ulo\u017ei\u0165 v\u0161etky tieto d\u00e1ta do datab\u00e1zy. Na pr\u00edklad som vzal syntaktiku ClickHouse. A tu vytv\u00e1rame jednu tabu\u013eku, ktor\u00e1 sa vol\u00e1 \u201eSteps\u201c, t. j. na \u010do sa pozer\u00e1me. Tu je \u010das, ke\u010f sa na to pozer\u00e1me; \u010do to ukazuje a nejak\u00e9 meta-d\u00e1ta, kde budeme uklada\u0165, kto to je: Jay a Silent Bob.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/bd01f9dc0b29d34aacbb8f012710a94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A aby sme sa pok\u00fasili vizualizova\u0165 toto v\u0161etko, budeme pou\u017e\u00edva\u0165 Grafanu, preto\u017ee, po prv\u00e9, je to kr\u00e1sne.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/9f573241e9ae32e31d6d0b879115970b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Takisto budeme pou\u017e\u00edva\u0165 tento plugin. Existuj\u00fa dva d\u00f4vody. Prv\u00fd je ten, \u017ee som ho nap\u00edsal. A presne viem, ako \u0165a\u017ek\u00e9 je z\u00edska\u0165 \u010dasov\u00e9 \u00fadaje z ClickHouse, aby sme ich mohli zobrazi\u0165 v Grafane. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/29f2d72f9995afb54b23bb7b4230b840.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zobraz\u00edme to v Graf Panel. Je to najpopul\u00e1rnej\u0161ia panel v Grafane, ktor\u00fd zobrazuje z\u00e1vislos\u0165 hodnoty od \u010dasu, tak\u017ee potrebujeme iba dva parametre.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/d820f63944ce0112660337b44a6c1f36.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNap\u00ed\u0161me najjednoduch\u0161\u00ed dotaz \u2014 ako zobrazi\u0165 \u0161tatistiku krokov v Grafane, pri\u010dom tieto \u00fadaje s\u00fa ulo\u017een\u00e9 v ClickHouse, v tej tabu\u013eke, ktor\u00fa sme vytvorili. A p\u00ed\u0161eme tak\u00fdto jednoduch\u00fd dotaz. Vyber\u00e1me zo krokov. Vyber\u00e1me hodnotu a vyber\u00e1me \u010das t\u00fdchto hodn\u00f4t, teda tie tri parametre, o ktor\u00fdch sme hovorili.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ad7895105050178de5bc8a154da7e6e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A v\u00fdsledkom bude tak\u00fdto graf. Kto vie, pre\u010do je tak\u00fd zvl\u00e1\u0161tny?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/4a8108737e834cf35b7834be7b4db719.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Spr\u00e1vne, treba to zoradi\u0165 pod\u013ea \u010dasu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/d37343c7a6a811e2012f1cbae4b9a5d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nakoniec dostaneme u\u017e lep\u0161\u00ed, ale st\u00e1le zvl\u00e1\u0161tny graf. Kto vie, pre\u010do? Spr\u00e1vne, s\u00fa tam dvaja \u00fa\u010dastn\u00edci, a v Grafane posielame dva \u010dasov\u00e9 rady, preto\u017ee ak sa pozrieme na d\u00e1tov\u00fd model e\u0161te raz, ka\u017ed\u00e1 \u010dasov\u00e1 rada je unik\u00e1tna kombin\u00e1cia mena a v\u0161etk\u00fdch k\u013e\u00fa\u010d-hodnotov\u00fdch labelov.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/f19bf1a9f43ae8de22af6bf7b494902f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Preto mus\u00edme vybra\u0165 konkr\u00e9tneho \u010dloveka. Vyber\u00e1me Jaya.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/b6a714d5d6ce4d4b27634da9414aa6f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A znova kresl\u00edme. Teraz u\u017e graf vyzer\u00e1 pravdivej\u0161ie. Teraz je to norm\u00e1lny graf a v\u0161etko funguje dobre.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/2a93b4cd548239c9314c3283c5b9f488.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pravdepodobne viete, ako to urobi\u0165 podobne, ale v Prometheovi cez PromQL. Pribli\u017ene takto. O nie\u010do jednoduch\u0161ie. A e\u0161te to v\u0161etko rozdel\u00edme. Brali sme Krokov. A filtrujeme pod\u013ea Jaya. Tu neuv\u00e1dzame, \u010do potrebujeme z\u00edska\u0165 a nevyber\u00e1me \u010das. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/5e080a1b88c156522af21bf00f3cd641.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A teraz sa pok\u00fasime vypo\u010d\u00edta\u0165 r\u00fdchlos\u0165 pohybu Jaya alebo Silent Boba. V ClickHouse n\u00e1m bude treba urobi\u0165 runningDifference, teda vypo\u010d\u00edta\u0165 rozdiel medzi p\u00e1rmi bodov a rozdeli\u0165 ich \u010dasom, aby sme z\u00edskali presn\u00fa r\u00fdchlos\u0165. Dotaz bude vyzera\u0165 asi takto.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/13102b04ba4cf0ff9c955c36801044d0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A uk\u00e1\u017ee pribli\u017ene tak\u00e9to hodnoty, teda Silent Bob alebo Jay rob\u00ed asi 1,8 kroku za sekundu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/1c328f99da6f160bdca23ab5f461bda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A v Prometheovi viete, ako to urobi\u0165 tie\u017e. Ove\u013ea jednoduch\u0161ie, ne\u017e to bolo predt\u00fdm.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/a7145785dee9fafcc8ab573e920cb88e.jpeg\" style=\"display:block;margin: 0 auto;\" \/>Aby to bolo v Grafana tak jednoduch\u00e9, pridal som tak\u00fdto obal, ktor\u00fd sa ve\u013emi podob\u00e1 na PromQL. Naz\u00fdva sa to Rate Macros, alebo ako chcete. V Grafana jednoducho nap\u00ed\u0161ete \u201erate\u201c, ale niekde v h\u013abke sa to transformuje na tak\u00fd ve\u013ek\u00fd dotaz. A nemus\u00edte sa na to ani pozera\u0165, je tam niekde, ale u\u0161etr\u00edte mno\u017estvo \u010dasu, preto\u017ee p\u00edsanie tak\u00fdch obrovsk\u00fdch SQL dotazov je v\u017edy n\u00e1kladn\u00e9. \u013dahko sa m\u00f4\u017eete pom\u00fdli\u0165 a potom dlho nech\u00e1pete, \u010do sa deje.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/511bb35469567b07412a10bb7c0b7312.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A toto je dotaz, ktor\u00fd sa ani nezmestil do jedn\u00e9ho sn\u00edmku a musel som ho rozdeli\u0165 na dve st\u013apce. Toto je tie\u017e dotaz v ClickHouse, ktor\u00fd rob\u00ed to ist\u00e9 rate, ale pre obe \u010dasov\u00e9 rady: aj pre Silent Boba, aj pre Jaya, aby sme mali na paneli dve \u010dasov\u00e9 rady. A to u\u017e je pod\u013ea m\u0148a ve\u013emi zlo\u017eit\u00e9. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/c9c1e6b58672069370153a151dceef3d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A v Prometheovi to bude sum(rate). Pre ClickHouse som vytvoril samostatn\u00fd makro, ktor\u00fd sa vol\u00e1 RateColumns, ktor\u00fd vyzer\u00e1 ako dotaz v Prometheovi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/9743c6a4b3de4aab7cfb5bd3fd50fcfd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pozreli sme sa na to a zd\u00e1 sa, \u017ee PromQL je v\u0161etko tak\u00e9 skvel\u00e9, ale m\u00e1 samozrejme aj obmedzenia.<\/p>\n<p><\/p>\n<p>S\u00fa to:<\/p>\n<p><\/p>\n<ul>\n<li>Obmedzen\u00fd SELECT.<\/li>\n<li>Obmedzen\u00e9 JOIN.<\/li>\n<li>\u017diadna podpora pre HAVING.<\/li>\n<\/ul>\n<p><\/p>\n<p>A ak ste s n\u00edm pracovali dlho, viete, \u017ee niekedy je ve\u013emi \u0165a\u017ek\u00e9 urobi\u0165 nie\u010do v PromQL, zatia\u013e \u010do v SQL m\u00f4\u017eete robi\u0165 takmer v\u0161etko, preto\u017ee v\u0161etky tieto varianty, o ktor\u00fdch sme teraz hovorili, by mohli by\u0165 vykonan\u00e9 v SQL. Ale bolo by pohodln\u00e9 to pou\u017e\u00edva\u0165? A to ma priv\u00e1dza k my\u0161lienke, \u017ee nie v\u017edy je najv\u00fdkonnej\u0161\u00ed jazyk najpohodlnej\u0161\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ec8786f1d72a1f8652fa631cdffc9c25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Preto niekedy treba vybra\u0165 jazyk pod\u013ea \u00faloh. Je to ako s\u00faboj Batmana so Supermanom. Je jasn\u00e9, \u017ee Superman je silnej\u0161\u00ed, ale Batman ho dok\u00e1zal porazi\u0165, preto\u017ee bol praktickej\u0161\u00ed a presne vedel, \u010do rob\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/59e5cb7e54ee14705a9e8a36db6f5541.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nasleduj\u00faca \u010das\u0165 \u2013 to je Roz\u0161\u00edrenie PromQL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/b806acf0e6c7c416614d3fd49004b4be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E\u0161te raz o VictoriaMetrics. \u010co je to VictoriaMetrics? Je to datab\u00e1za \u010dasov\u00fdch radov, je open source, distribujeme ju v single a cluster verzi\u00e1ch. Pod\u013ea na\u0161ich benchmarkov je najr\u00fdchlej\u0161ia na trhu a v oblasti kompresie podobne, t. j. \u017eiv\u00ed \u013eudia hl\u00e1sia kompresiu okolo 0,4 bajtov na bod, zatia\u013e \u010do u Prometheusa je to 1,2-1,4. <\/p>\n<p><\/p>\n<p>Nepodporujeme len Prometheus. Podporujeme aj InfluxDB, Graphite, OpenTSDB.<\/p>\n<p><\/p>\n<p>M\u00f4\u017eeme do n\u00e1s \"zapisova\u0165\", t. j. m\u00f4\u017eeme pren\u00e1\u0161a\u0165 star\u00e9 \u00fadaje. <\/p>\n<p><\/p>\n<p>A e\u0161te ide\u00e1lne fungujeme s Prometheusom a Grafanou, t. j. podporujeme PromQL engine. A v Grafane m\u00f4\u017eete jednoducho zmeni\u0165 Prometheus endpoint na VictoriaMetrics a v\u0161etky va\u0161e dashboardy bud\u00fa fungova\u0165 ako predt\u00fdm. <\/p>\n<p><\/p>\n<p>M\u00f4\u017eete v\u0161ak vyu\u017ei\u0165 aj \u010fal\u0161ie funkcie, ktor\u00e9 pon\u00faka VictoriaMetrics.<\/p>\n<p><\/p>\n<p>R\u00fdchlo prejdeme funkciami, ktor\u00e9 sme pridali.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/78e9c0ce91fad48ab859fc2cf06a0689.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Omit interval param \u2013 m\u00f4\u017eete presko\u010di\u0165 interval parametrov v Grafane. Ke\u010f nechcete dost\u00e1va\u0165 zvl\u00e1\u0161tne grafy pri pribl\u00ed\u017een\u00ed alebo oddialen\u00ed na paneli, je odpor\u00fa\u010dan\u00e9 pou\u017ei\u0165 premenn\u00fa <code>$__interval<\/code>. Je to vn\u00fatorn\u00e1 premenn\u00e1 Grafany a sama vyber\u00e1 rozsah d\u00e1t. VictoriaMetrics dok\u00e1\u017ee tie\u017e pochopi\u0165, ak\u00fd tento rozsah by mal by\u0165. Nemus\u00edte aktualizova\u0165 v\u0161etky va\u0161e dotazy. Bude to ove\u013ea jednoduch\u0161ie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/4094c7b8b5e6eef6134b5aa344ef7409.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Druh\u00e1 funkcia \u2013 to je intervalov\u00e9 odkazovanie. Tento interval m\u00f4\u017eete pou\u017ei\u0165 vo svojich v\u00fdrazoch. M\u00f4\u017eete ho n\u00e1sobi\u0165, deli\u0165, pren\u00e1\u0161a\u0165, odkazova\u0165 na neho.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/967ca6166e588987bd69c1e1953dca31.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010ealej je tu rodina funkci\u00ed rollup. Funkcia rollup transformuje ak\u00fdko\u013evek v\u00e1\u0161 \u010dasov\u00fd rad na tri samostatn\u00e9 \u010dasov\u00e9 rady. To s\u00fa min, max a avg. Pova\u017eujem to za ve\u013emi u\u017eito\u010dn\u00e9, preto\u017ee to m\u00f4\u017ee ob\u010das uk\u00e1za\u0165 nejak\u00e9 od\u013eahl\u00e9 hodnoty (anom\u00e1lie) a nepresnosti. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/d5ff7d6f6ae8f7550434a3dbbca09b20.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A ak jednoducho rob\u00edte irate alebo rate, pravdepodobne m\u00f4\u017eete vynecha\u0165 niektor\u00e9 pr\u00edpady, ke\u010f sa \u010dasov\u00fd rad spr\u00e1va inak, ne\u017e ste predpokladali. S touto funkciou je ove\u013ea jednoduch\u0161ie vidie\u0165, \u017ee max je ve\u013emi silno od avg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/a4e9f0d246fa33459597f7140e09538c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010ealej premenn\u00e1 default. Default znamen\u00e1, ak\u00fa hodnotu potrebujeme zobrazi\u0165 v Grafane, ak moment\u00e1lne nem\u00e1me \u010dasov\u00fd rad. Kedy sa to stane? Povedzme, \u017ee exportujete nejak\u00fa metriku ch\u00fdb. A m\u00e1te tak\u00e9 skvel\u00e9 aplik\u00e1cie, \u017ee ke\u010f ste za\u010dali, nem\u00e1te chyby a dokonca \u017eiadne chyby nem\u00e1te nasleduj\u00face tri hodiny alebo aj de\u0148. A m\u00e1te dashboardy, ktor\u00e9 ukazuj\u00fa vz\u0165ah medzi \u00faspechom a chybou. A bud\u00fa v\u00e1m zobrazova\u0165 ni\u010d, preto\u017ee nem\u00e1te metriku ch\u00fdb. A v default m\u00f4\u017eete uvies\u0165 \u010doko\u013evek.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/cb4e23199194006186ac6907d2335cf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Keep_last_Value \u2013 uchov\u00e1va posledn\u00fa hodnotu metriky, ak zmizla. Ak Prometheus po nasleduj\u00facom skenovan\u00ed nena\u0161iel metriku v priebehu 5 min\u00fat, tu zapam\u00e4t\u00e1me jej posledn\u00fa hodnotu a va\u0161e grafy sa op\u00e4\u0165 nerozpadn\u00fa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ca202f8a70f071cbd85b33b98cd28bb5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Scrape_interval \u2013 ukazuje, ako \u010dasto Prometheus zbiera d\u00e1ta o va\u0161ej metrike, s akou frekvenciou. Tu m\u00f4\u017eete vidie\u0165 vynechanie, napr\u00edklad. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/9e9f43c7e9ef9a24dcc0b43673558046.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLabel replace \u2013 popul\u00e1rna funkcia. Ale pova\u017eujeme ju za trochu zlo\u017eit\u00fa, preto\u017ee vy\u017eaduje mno\u017estvo argumentov. A mus\u00edte si nielen pam\u00e4ta\u0165 5 argumentov, ale aj ich poradie.<br \/>\n<img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/adfee335e9329f6b03d6f8a42ad8e7b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPreto, pre\u010do ich neurobi\u0165 jednoduch\u0161ie? T. j. rozdeli\u0165 na mal\u00e9 funkcie s jasnou syntaxou.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/e928549205018e7405cc2a81970a8514.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A teraz prich\u00e1dza to zauj\u00edmav\u00e9. Pre\u010do pova\u017eujeme toto za roz\u0161\u00edren\u00fd PromQL? Preto\u017ee podporujeme spolo\u010dn\u00e9 tabu\u013ekov\u00e9 v\u00fdrazy. M\u00f4\u017eete prejs\u0165 na QR k\u00f3d (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/wiki\/ExtendedPromQL\">https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/wiki\/ExtendedPromQL<\/a><\/noindex>), pozrie\u0165 si odkazy s pr\u00edkladmi, s playgroundom, kde m\u00f4\u017eete vykon\u00e1va\u0165 dotazy priamo vo VictoriaMetrics bez jej in\u0161tal\u00e1cie, jednoducho v prehliada\u010di.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/33259a4bcd1a92f2cab6e943b73502ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A \u010do to vlastne je? Tento dotaz vy\u0161\u0161ie \u2013 to je pomerne popul\u00e1rny dotaz. Mysl\u00edm, \u017ee v akomko\u013evek dashboarde v mnoh\u00fdch firm\u00e1ch pou\u017e\u00edvate rovnak\u00fd filter pre v\u0161etko. Zvy\u010dajne je to tak. Ale ke\u010f potrebujete prida\u0165 nejak\u00fd nov\u00fd filter, mus\u00edte aktualizova\u0165 ka\u017ed\u00fd panel, alebo stiahnu\u0165 dashboard, otvori\u0165 ho v JSON, robi\u0165 find replace, \u010do tie\u017e trv\u00e1 \u010das. Pre\u010do by sme nemohli ulo\u017ei\u0165 t\u00fato hodnotu do premennej a znovu ju pou\u017ei\u0165? To vyzer\u00e1 pod\u013ea m\u0148a ove\u013ea jednoduch\u0161ie a zrozumite\u013enej\u0161ie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/60aea73cf49934ef7d9a7928a8e2f8e7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Napr\u00edklad, ke\u010f mus\u00edm aktualizova\u0165 filtre v Grafane vo v\u0161etk\u00fdch dotazoch, a dashboard m\u00f4\u017ee by\u0165 pri tom obrovsk\u00fd alebo ich m\u00f4\u017ee by\u0165 aj nieko\u013eko. A ako by som chcel vyrie\u0161i\u0165 tento probl\u00e9m v Grafane?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/7cf9eb13219bbd9a5d3240bdda1839a2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rie\u0161im tento probl\u00e9m takto: vytvor\u00edm commonFilter a v \u0148om definujem tento filter, a potom ho znovu pou\u017e\u00edvam v dotazoch. Ale ak to teraz urob\u00edte rovnako, nebude to fungova\u0165, preto\u017ee Grafana v\u00e1m nedovol\u00ed pou\u017e\u00edva\u0165 premenn\u00e9 vo vn\u00fatri dotazov premi\u00e9rnych. A to je trochu zvl\u00e1\u0161tne.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/0b7a40976cb3eeda370518a242f78708.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A preto som vytvoril tak\u00fa variantu, ktor\u00e1 to umo\u017e\u0148uje. A ak v\u00e1s to zauj\u00edma alebo chcete tak\u00fa funkciu, podporte ju alebo dajte dislike, ak sa v\u00e1m t\u00e1to my\u0161lienka nep\u00e1\u010di. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grafana\/grafana\/pull\/16694\">https:\/\/github.com\/grafana\/grafana\/pull\/16694<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/68e3a408ff2b554cdfd61a2da4c75bc0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010ealej o roz\u0161\u00edrenom PromQL. Tu definujeme nielen premenn\u00fa, ale priamo cel\u00fa funkciu. A naz\u00fdvame ju ru (resource usage). A t\u00e1to funkcia prij\u00edma vo\u013en\u00e9 zdroje, obmedzenie zdrojov a filter. Zd\u00e1 sa, \u017ee syntax je celkom jednoduch\u00e1. A je ve\u013emi \u013eahk\u00e9 pou\u017ei\u0165 t\u00fato funkciu a vypo\u010d\u00edta\u0165 percento vo\u013enej pam\u00e4te u n\u00e1s. T. j. ko\u013eko m\u00e1me pam\u00e4te, ak\u00e9 obmedzenie a ako filtrova\u0165. To vyzer\u00e1 ove\u013ea pohodlnej\u0161ie, ak by ste to v\u0161etko p\u00edsali, znovu pou\u017e\u00edvaj\u00fac rovnak\u00e9 filtre, preto\u017ee by sa to premenilo na ve\u013ek\u00fd-ve\u013ek\u00fd dotaz.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/4ca66e18ac665fe1038493709530b82b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A tu je pr\u00edklad tak\u00e9ho ve\u013ek\u00e9ho dopytu. Poch\u00e1dza z ofici\u00e1lneho panelu NodeExporter pre Grafana. Ale pr\u00edli\u0161 dobre nerozumiem, \u010do sa tu deje. T. j., samozrejme, rozumiem, ak sa na to pozriete pozornej\u0161ie, ale mno\u017estvo z\u00e1tvoriek m\u00f4\u017ee okam\u017eite zn\u00ed\u017ei\u0165 motiv\u00e1ciu sna\u017ei\u0165 sa pochopi\u0165, \u010do sa tu deje. A pre\u010do to neu\u013eah\u010di\u0165 a nezjednodu\u0161i\u0165?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/50e01e7f0c1d03965b028266130413f0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Napr\u00edklad takto, pri\u010dom sa d\u00f4le\u017eit\u00e9 veci alebo \u010dasti zv\u00fdraznia v premenn\u00fdch. A potom sa vykon\u00e1 z\u00e1kladn\u00e1 matematika. Toto u\u017e viac pripom\u00edna programovanie, to je to, \u010do by som chcel vidie\u0165 v bud\u00facnosti v Grafane.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/81f957d89f97ebf686abdf969982d3ba.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tu je druh\u00fd pr\u00edklad, ako to m\u00f4\u017eeme urobi\u0165 e\u0161te jednoduch\u0161ie, keby sme u\u017e mali t\u00fato funkciu ru, a ona u\u017e existuje priamo vo VictoriaMetrics. A potom jednoducho pred\u00e1te cacheovan\u00fa hodnotu, ktor\u00fa ste vyhl\u00e1sili v CTE.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/415302741e14232228353db6ec57a2e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>U\u017e som hovoril o tom, ako je d\u00f4le\u017eit\u00e9 pou\u017e\u00edva\u0165 spr\u00e1vny programovac\u00ed jazyk. A asi v ka\u017edej spolo\u010dnosti sa v Grafane deje nie\u010do vlastn\u00e9. A ur\u010dite d\u00e1vate pr\u00edstup k Grafane svojim v\u00fdvoj\u00e1rom, ktor\u00ed robia nie\u010do vlastn\u00e9. A v\u0161etci to robia nejako inak. R\u00e1d by som to videl aspo\u0148 nejako jednotne, t. j. z\u00fa\u017ei\u0165 to na spolo\u010dn\u00fd \u0161tandard.<\/p>\n<p><\/p>\n<p>Predpokladajme, \u017ee m\u00e1te nielen syst\u00e9mov\u00fdch in\u017einierov, mo\u017eno m\u00e1te aj expertov, devops alebo SRE. M\u00f4\u017ee by\u0165, \u017ee m\u00e1te expertov, ktor\u00ed vedia, \u010do je monitoring, vedia, \u010do je Grafana, t. j. pracuj\u00fa s t\u00fdm roky a presne vedia, ako to robi\u0165 spr\u00e1vne. A u\u017e to p\u00edsali 100-kr\u00e1t a v\u0161etk\u00fdm to vysvetlili, ale pre\u010do si ich nikto nev\u0161\u00edma.<\/p>\n<p><\/p>\n<p>A \u010do keby mohli tieto znalosti priamo vlo\u017ei\u0165 do Grafany, aby ich mohli in\u00ed pou\u017e\u00edvatelia znova pou\u017ei\u0165? A ak by bolo potrebn\u00e9 vypo\u010d\u00edta\u0165 percento vo\u013enej pam\u00e4te, jednoducho by pou\u017eili funkciu. A \u010do ak by tvorcovia export\u00e9rov spolu so svoj\u00edm produktom poskytli aj s\u00fabor funkci\u00ed, ako pracova\u0165 s ich metrikami, preto\u017ee presne vedia, ak\u00e9 s\u00fa to metriky a ako ich spr\u00e1vne vypo\u010d\u00edta\u0165?<\/p>\n<p><\/p>\n<p>Toto vlastne neexistuje. To som urobil s\u00e1m. Je to podpora kni\u017en\u00edc v Grafane. Predpokladajme, \u017ee chlapci, ktor\u00ed vytvorili NodeExporter, urobili to, o \u010dom hovor\u00edm. A tie\u017e poskytli s\u00fabor funkci\u00ed. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/755391ee41fd2abf4cb74fad17cecaf0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T. j. vyzer\u00e1 to asi takto. Pripoj\u00edte t\u00fato kni\u017enicu do Grafany, prejdete do edit\u00e1cie a tu je ve\u013emi jednoducho nap\u00edsan\u00e9 v JSON, ako pracova\u0165 s touto metr\u00edkou. T. j. nejak\u00fd s\u00fabor funkci\u00ed, ich op\u00edsanie a do \u010doho sa rozvin\u00fa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/78a85dd219a421757807be895c173a39.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mysl\u00edm si, \u017ee by to mohlo by\u0165 u\u017eito\u010dn\u00e9, preto\u017ee v Grafana by ste to jednoducho zap\u00edsali. A Grafana v\u00e1m \"poved\u00e1\", \u017ee existuje tak\u00e1to funkcia z tejto kni\u017enice \u2013 po\u010fme to pou\u017ei\u0165. Mysl\u00edm si, \u017ee by to bolo naozaj skvel\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/6e6b2b459c574d95d56251cd5fae5586.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Trochu o VictoriaMetrics. Rob\u00edme ve\u013ea zauj\u00edmav\u00fdch vec\u00ed. Pre\u010d\u00edtajte si na\u0161e \u010dl\u00e1nky o kompresii, na\u0161e s\u00fa\u0165a\u017ee s in\u00fdmi aplik\u00e1ciami na \u010dasov\u00e9 rady, na\u0161e vysvetlenie, ako pracova\u0165 s PromQL, preto\u017ee v tom je e\u0161te ve\u013ea nov\u00e1\u010dikov, a takisto o vertik\u00e1lnej \u0161k\u00e1lovate\u013enosti a o konfront\u00e1cii so Thanosom.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 preklad prezent\u00e1cie Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/562829a25ee6131c7eaed8c561c6927c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ot\u00e1zky:<\/p>\n<p><\/p>\n<p><em>Za\u010dnem svoju ot\u00e1zku jednoduch\u00fdm pr\u00edbehom zo \u017eivota. Ke\u010f som prv\u00fdkr\u00e1t za\u010dal pou\u017e\u00edva\u0165 Grafanu, nap\u00edsal som ve\u013emi presved\u010div\u00fd dotaz s d\u013a\u017ekou 5 riadkov. Nakoniec som dostal ve\u013emi presved\u010div\u00fd graf. Tento graf takmer \u0161iel do produkcie. Ale pri bli\u017e\u0161om sk\u00faman\u00ed sa uk\u00e1zalo, \u017ee tento graf ukazuje absol\u00fatnu nezmysel, ktor\u00e1 nem\u00e1 ni\u010d spolo\u010dn\u00e9 s realitou, hoci \u010d\u00edsla sa nach\u00e1dzaj\u00fa v rozsahu, ktor\u00fd sme o\u010dak\u00e1vali vidie\u0165. A moja ot\u00e1zka. M\u00e1me kni\u017enice, m\u00e1me funkcie, ale ako p\u00ed\u0161eme testy pre Grafanu? Nap\u00edsali ste zlo\u017eit\u00fd dotaz, od ktor\u00e9ho z\u00e1vis\u00ed obchodn\u00e9 rozhodnutie \u2013 objedna\u0165 skuto\u010dn\u00fd kontajner serverov alebo nie. A ako vieme, \u017ee t\u00e1 funkcia, ktor\u00e1 kresl\u00ed graf, vyzer\u00e1 pravdivo. \u010eakujem.<\/em><\/p>\n<p><\/p>\n<p>\u010eakujem za ot\u00e1zku. Tu s\u00fa dve \u010dasti. Prv\u00e1 \u2013 m\u00e1m pocit, vych\u00e1dzaj\u00fac z mojej praxe, \u017ee v\u00e4\u010d\u0161ina pou\u017e\u00edvate\u013eov, ke\u010f sa pozer\u00e1 na svoje grafy, nech\u00e1pe, \u010do im ukazuj\u00fa. Nejak\u00fdm sp\u00f4sobom s\u00fa \u013eudia ve\u013emi dobr\u00ed v tom, aby si vymysleli ospravedlnenie akejko\u013evek anom\u00e1lie, ktor\u00e1 sa objavuje na grafoch, aj ke\u010f je to chyba vn\u00fatri funkcie. A druh\u00e1 \u010das\u0165 \u2013 m\u00e1m pocit, \u017ee pou\u017eitie tak\u00fdchto funkci\u00ed by ove\u013ea lep\u0161ie vyhovovalo rie\u0161eniu va\u0161ej probl\u00e9my, namiesto toho, aby ka\u017ed\u00fd z va\u0161ich v\u00fdvoj\u00e1rov robil svoj capacity planning a robil chyby s nejakou pravdepodobnos\u0165ou.<\/p>\n<p><\/p>\n<p><em>Ako skontrolova\u0165?<\/em><\/p>\n<p><\/p>\n<p>Ako skontrolova\u0165? Sn\u00e1\u010f nijako. <\/p>\n<p><\/p>\n<p><em>V podobe testu v Grafane.<\/em><\/p>\n<p><\/p>\n<p>\u010co m\u00e1 Grafana spolo\u010dn\u00e9? Grafana prev\u00e1dza tento dotaz priamo do DataSource.<\/p>\n<p><\/p>\n<p><em>Pridan\u00edm trochu do parametrov.<\/em><\/p>\n<p><\/p>\n<p>Nie, v Grafana sa ni\u010d neprid\u00e1va. M\u00f4\u017eu tam by\u0165 GET parametre, ako napr\u00edklad step. Nie je to jasne uveden\u00e9, ale m\u00f4\u017eete ho predefinova\u0165, alebo nemus\u00edte, ale prid\u00e1va sa automaticky. Tu nem\u00f4\u017eete nap\u00edsa\u0165 testy. Mysl\u00edm si, \u017ee by ste sa na Grafana nemali spolieha\u0165 ako na zdroj pravdy.<\/p>\n<p><\/p>\n<p><em>\u010eakujem za prezent\u00e1ciu! \u010eakujem za kompresiu! Spom\u00ednali ste mapovanie premennej v grafe, \u017ee v Grafana nemo\u017eno pou\u017ei\u0165 premenn\u00fa v premennej. Rozumiete, o \u010dom hovor\u00edm?<\/em><\/p>\n<p><\/p>\n<p>\u00c1no.<\/p>\n<p><\/p>\n<p><em>To bola spo\u010diatku ve\u013ek\u00e1 bolest' hlavy, ke\u010f som chcel vytvori\u0165 alert v Grafana. A tam treba robi\u0165 alert pre ka\u017ed\u00e9ho hostite\u013ea zvl\u00e1\u0161\u0165. Funguje tento n\u00e1stroj, ktor\u00fd ste vytvorili, pre alerty v Grafana?<\/em><\/p>\n<p><\/p>\n<p>Ak Grafana neoslovuje premenn\u00e9 nejak\u00fdm in\u00fdm sp\u00f4sobom, tak \u2013 \u00e1no, bude to fungova\u0165. Ale moja rada je, aby ste alertovanie v Grafana nepou\u017e\u00edvali v\u00f4bec, je lep\u0161ie pou\u017ei\u0165 alertmanager.<\/p>\n<p><\/p>\n<p><em>\u00c1no, pou\u017e\u00edvam ho, ale len sa mi to v Grafana zdalo jednoduch\u0161ie na nastavenie, ale \u010fakujem za radu!<\/em><\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/494034\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0420\u043e\u043c\u0430\u043d\u0430 \u0425\u0430\u0432\u0440\u043e\u043d\u0435\u043d\u043a\u043e &quot;ExtendedPromQL&quot; \u041a\u0440\u0430\u0442\u043a\u043e \u043e\u0431\u043e \u043c\u043d\u0435. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0420\u043e\u043c\u0430\u043d. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 CloudFlare, \u0436\u0438\u0432\u0443 \u0432 \u041b\u043e\u043d\u0434\u043e\u043d\u0435. \u041d\u043e \u0442\u0430\u043a\u0436\u0435 \u044f \u043c\u0435\u0439\u0442\u0435\u043d\u0435\u0440 VictoriaMetrics. \u0418 \u044f \u0430\u0432\u0442\u043e\u0440 ClickHouse \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Grafana \u0438 ClickHouse-proxy \u2013 \u044d\u0442\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f ClickHouse. \u041c\u044b \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u00bb \u0438 \u0432 \u043d\u0435\u0439 \u044f \u0431\u0443\u0434\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":75586,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-75585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0420\u043e\u043c\u0430\u043d\u0430 \u0425\u0430\u0432\u0440\u043e\u043d\u0435\u043d\u043a\u043e &quot;ExtendedPromQL&quot;\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u00abExtendedPromQL\u00bb \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0420\u043e\u043c\u0430\u043d\u0430 \u0425\u0430\u0432\u0440\u043e\u043d\u0435\u043d\u043a\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0420\u043e\u043c\u0430\u043d\u0430 \u0425\u0430\u0432\u0440\u043e\u043d\u0435\u043d\u043a\u043e &quot;ExtendedPromQL&quot;\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-27T05:42:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-27T05:42:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\"ExtendedPromQL\" \u2014 rozbor prezent\u00e1cie Romana Chavronenka | ProHoster","description":"Navrhujem obozn\u00e1mi\u0165 sa s prekladom prezent\u00e1cie Romana Chavronenka \"ExtendedPromQL\"","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u00abExtendedPromQL\u00bb \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0420\u043e\u043c\u0430\u043d\u0430 \u0425\u0430\u0432\u0440\u043e\u043d\u0435\u043d\u043a\u043e | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0420\u043e\u043c\u0430\u043d\u0430 \u0425\u0430\u0432\u0440\u043e\u043d\u0435\u043d\u043a\u043e &quot;ExtendedPromQL&quot;","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-27T05:42:28+00:00","article:modified_time":"2020-03-27T05:42:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"75585","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:54:47","updated":"2022-09-28 07:46:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/75585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=75585"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/75585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/75586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=75585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=75585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=75585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}