{"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\/cs\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","title":{"rendered":"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Doporu\u010duji se sezn\u00e1mit s p\u0159episem prezentace 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=\"P\u0159ehr\u00e1t 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=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/54a175d9c74c90d9d313f8ff71476638.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kr\u00e1tce o mn\u011b. Jmenuji se Roman. Pracuji v CloudFlare, \u017eiji v Lond\u00fdn\u011b. Ale tak\u00e9 jsem udr\u017eovatel VictoriaMetrics.<br \/>\nA jsem autorem <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/clickhouse-grafana\">ClickHouse plug-inu<\/a><\/noindex> pro Grafanu a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/chproxy\">ClickHouse-proxy<\/a><\/noindex> \u2013 to je mal\u00fd proxy pro ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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 prvn\u00ed \u010d\u00e1st\u00ed, kter\u00e1 se jmenuje \"Obt\u00ed\u017ee s p\u0159ekladem\" a budu mluvit o tom, \u017ee ka\u017ed\u00fd jazyk nebo dokonce jen jazyk komunikace \u2013 je velmi d\u016fle\u017eit\u00fd. Proto\u017ee to, jak p\u0159ed\u00e1v\u00e1te sv\u00e9 my\u0161lenky jin\u00e9mu \u010dlov\u011bku nebo syst\u00e9mu, jak formulujete svou \u017e\u00e1dost. Lid\u00e9 na internetu se h\u00e1daj\u00ed o tom, kter\u00fd jazyk je lep\u0161\u00ed \u2013 java nebo n\u011bjak\u00fd jin\u00fd. Pro sebe jsem se rozhodl, \u017ee je t\u0159eba vyb\u00edrat podle \u00fakolu, proto\u017ee v\u0161echno je to specifick\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ea21f52ba5c2d3507e0106715c4ab96d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za\u010dn\u011bme od za\u010d\u00e1tku. Co je to PromQL? PromQL \u2013 je to Jazyk dotaz\u016f pro Prometheus. To je zp\u016fsob, jak\u00fdm formulujeme dotazy v Prometheusu, abychom z\u00edskali \u010dasov\u00e9 \u0159ady dat, \u010dasov\u00e9 \u0159ady.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/56b1ef4cc04defdffeea8b2666fdc354.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Co jsou to \u010dasov\u00e9 \u0159ady dat? Pokud to bereme doslovn\u011b, tak to jsou t\u0159i parametry. <\/p>\n<p><\/p>\n<p>To je:<\/p>\n<p><\/p>\n<ul>\n<li>Na co se d\u00edv\u00e1me. <\/li>\n<li>Kdy se na to d\u00edv\u00e1me.<\/li>\n<li>A jakou hodnotu to ukazuje. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/358a193e889204d28debe1b74b93df3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokud se pod\u00edv\u00e1me na tento graf (tento graf z m\u00e9ho telefonu, kter\u00fd ukazuje statistiku m\u00fdch krok\u016f), tak zde m\u016f\u017eeme rychle odpov\u011bd\u011bt na tyto ot\u00e1zky. <\/p>\n<p><\/p>\n<p>Sledujeme kroky. Vid\u00edme hodnotu a vid\u00edme \u010das, kdy se na to d\u00edv\u00e1me. Tedy, kdy se d\u00edv\u00e1me na tento graf, m\u016f\u017eeme snadno \u0159\u00edct, \u017ee jsem v ned\u011bli u\u0161el p\u0159ibli\u017en\u011b 15 000 krok\u016f. To jsou \u010dasov\u00e9 \u0159ady dat. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/859299ee9d25a3419c869b3ed6db6e72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nyn\u00ed je rozd\u011bl\u00edme (p\u0159evedeme) na jin\u00fd model dat ve form\u011b tabulky. I zde m\u00e1me to, co n\u00e1s zaj\u00edm\u00e1. P\u0159idal jsem n\u011bkolik dal\u0161\u00edch \u00fadaj\u016f, kter\u00fdm budeme \u0159\u00edkat metadatov\u00e9 \u00fadaje, t. j. to nepro\u0161el j\u00e1, ale dva lid\u00e9, dejme tomu, Jay a Silent Bob. Tohle je to, co n\u00e1s zaj\u00edm\u00e1; co to ukazuje a kdy to ukazuje tuto hodnotu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/fd7b48ea3c25b57c13605e84c4a52a2c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNyn\u00ed se pokus\u00edme ulo\u017eit v\u0161echny tyto \u00fadaje do datab\u00e1ze. Pro p\u0159\u00edklad jsem vzal syntaxi ClickHouse. A zde vytv\u00e1\u0159\u00edme jednu tabulku, kter\u00e1 se naz\u00fdv\u00e1 \"Kroky\", tedy na co se d\u00edv\u00e1me. Zde je \u010das, kdy se na to d\u00edv\u00e1me; co to ukazuje a n\u011bjak\u00e1 metadata, kde budeme uchov\u00e1vat, kdo to je: Jay a Silent Bob.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/bd01f9dc0b29d34aacbb8f012710a94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A aby se pokusili to v\u0161echno vizualizovat, pou\u017eijeme Grafanu, proto\u017ee, za prv\u00e9, to vypad\u00e1 p\u011bkn\u011b.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/9f573241e9ae32e31d6d0b879115970b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tak\u00e9 budeme pou\u017e\u00edvat tento plugin. D\u016fvod\u016f je hned n\u011bkolik. Prvn\u00ed je, \u017ee jsem ho napsal. A p\u0159esn\u011b v\u00edm, jak je t\u011b\u017ek\u00e9 z\u00edskat \u010dasov\u00e9 \u0159ady z ClickHouse, abychom je mohli zobrazit v Grafana. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/29f2d72f9995afb54b23bb7b4230b840.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zobraz\u00edme je v Graph Panel. To je nejpopul\u00e1rn\u011bj\u0161\u00ed panel v Grafana, kter\u00fd ukazuje z\u00e1vislost hodnoty na \u010dase, tak\u017ee pot\u0159ebujeme pouze dva parametry.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/d820f63944ce0112660337b44a6c1f36.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNapi\u0161me si nejjednodu\u0161\u0161\u00ed dotaz \u2013 jak zobrazit statistiku krok\u016f v Grafana, p\u0159i\u010dem\u017e tyto \u00fadaje ukl\u00e1d\u00e1me v ClickHouse, v t\u00e9 tabulce, kterou jsme vytvo\u0159ili. Nap\u00ed\u0161eme takov\u00fd jednoduch\u00fd dotaz. Vybereme z krok\u016f. Vybereme hodnotu a vybereme \u010das t\u011bchto hodnot, tedy ty t\u0159i parametry, o kter\u00fdch jsme hovo\u0159ili.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ad7895105050178de5bc8a154da7e6e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A v\u00fdsledkem bude takov\u00fdto graf. Kdo v\u00ed, pro\u010d je tak podivn\u00fd?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/4a8108737e834cf35b7834be7b4db719.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Spr\u00e1vn\u011b, mus\u00edme se\u0159adit podle \u010dasu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/d37343c7a6a811e2012f1cbae4b9a5d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nakonec dostaneme u\u017e lep\u0161\u00ed, ale st\u00e1le podivn\u00fd graf. Kdo v\u00ed, pro\u010d? Spr\u00e1vn\u011b, jsou tam dva \u00fa\u010dastn\u00edci, a v Grafana pos\u00edl\u00e1me dv\u011b \u010dasov\u00e9 \u0159ady, proto\u017ee pokud se pod\u00edv\u00e1me na datov\u00fd model znovu, ka\u017ed\u00e1 \u010dasov\u00e1 \u0159ada je unik\u00e1tn\u00ed kombinac\u00ed n\u00e1zvu a v\u0161ech kl\u00ed\u010dov\u00fdch hodnot labels.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/f19bf1a9f43ae8de22af6bf7b494902f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Proto mus\u00edme vybrat konkr\u00e9tn\u00edho \u010dlov\u011bka. Vybereme Jaye.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/b6a714d5d6ce4d4b27634da9414aa6f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nakresl\u00edme to znovu. Nyn\u00ed u\u017e graf vypad\u00e1 spolehliv\u011b. Te\u010f to je norm\u00e1ln\u00ed graf a v\u0161e funguje dob\u0159e.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/2a93b4cd548239c9314c3283c5b9f488.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pravd\u011bpodobn\u011b v\u00edte, jak ud\u011blat n\u011bco podobn\u00e9ho, ale v Prometheus pomoc\u00ed PromQL. P\u0159esn\u011b takto. O n\u011bco jednodu\u0161eji. A je\u0161t\u011b to v\u0161echno rozlo\u017e\u00edme. Brali jsme kroky a filtrujeme podle Jaye. Nebudeme uv\u00e1d\u011bt, \u017ee pot\u0159ebujeme z\u00edskat hodnotu, a nevyb\u00edr\u00e1me \u010das. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/5e080a1b88c156522af21bf00f3cd641.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A te\u010f zkus\u00edme spo\u010d\u00edtat rychlost pohybu Jaye nebo Silent Boba. V ClickHouse budeme muset prov\u00e9st runningDifference, tedy spo\u010d\u00edtat rozd\u00edl mezi dvojicemi bod\u016f a vyd\u011blit je \u010dasem, abychom z\u00edskali p\u0159esnou rychlost. Dotaz bude vypadat p\u0159ibli\u017en\u011b takto.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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 p\u0159ibli\u017en\u011b takov\u00e9to hodnoty, tedy p\u0159ibli\u017en\u011b 1,8 kroku za sekundu d\u011bl\u00e1 Silent Bob nebo Jay.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/1c328f99da6f160bdca23ab5f461bda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A v Prometheus v\u00edte, jak to ud\u011blat tak\u00e9. Mnohem jednodu\u0161eji, ne\u017e to bylo p\u0159edt\u00edm.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/a7145785dee9fafcc8ab573e920cb88e.jpeg\" style=\"display:block;margin: 0 auto;\" \/>Aby to bylo stejn\u011b snadn\u00e9 i v Grafan\u011b, p\u0159idal jsem tento obal, kter\u00fd vypad\u00e1 velmi podobn\u011b jako PromQL. Naz\u00fdv\u00e1 se Rate Macros, nebo jak chcete. V Grafan\u011b jednodu\u0161e nap\u00ed\u0161ete \u201erate\u201c, ale n\u011bkde uvnit\u0159 se to transformuje do takov\u00e9ho velk\u00e9ho dotazu. A na n\u011bj se nemus\u00edte ani d\u00edvat, je tam n\u011bkde, ale u\u0161et\u0159\u00edte spoustu \u010dasu, proto\u017ee psan\u00ed takov\u00fdch obrovsk\u00fdch SQL dotaz\u016f je v\u017edy n\u00e1kladn\u00e9. Snadno se m\u016f\u017eete m\u00fdlit a pak dlouho netu\u0161\u00edte, co se d\u011bje.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/511bb35469567b07412a10bb7c0b7312.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A tohle je dotaz, kter\u00fd se neve\u0161el ani na jeden sn\u00edmek a musel jsem ho rozd\u011blit na dva sloupce. To je tak\u00e9 dotaz v ClickHouse, kter\u00fd d\u011bl\u00e1 tot\u00e9\u017e rate, ale pro ob\u011b \u010dasov\u00e9 \u0159ady: pro Silent Boba a pro Jaye, abychom na panelu m\u011bli dv\u011b \u010dasov\u00e9 \u0159ady. A to u\u017e je, podle m\u00e9ho n\u00e1zoru, velmi slo\u017eit\u00e9. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/c9c1e6b58672069370153a151dceef3d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A co se t\u00fd\u010de Promethea, to bude sum (rate). Pro ClickHouse jsem ud\u011blal samostatn\u00fd makro, kter\u00e9 se naz\u00fdv\u00e1 RateColumns a vypad\u00e1 jako dotaz v Prometheus.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/9743c6a4b3de4aab7cfb5bd3fd50fcfd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pod\u00edvali jsme se a vypad\u00e1 to, \u017ee PromQL je skv\u011bl\u00fd, ale m\u00e1 samoz\u0159ejm\u011b sv\u00e1 omezen\u00ed.<\/p>\n<p><\/p>\n<p>To je:<\/p>\n<p><\/p>\n<ul>\n<li>Omezen\u00e9 SELECT.<\/li>\n<li>Omezen\u00e9 JOIN.<\/li>\n<li>Bez podpory HAVING.<\/li>\n<\/ul>\n<p><\/p>\n<p>A pokud jste s t\u00edm pracovali dlouho, v\u00edte, \u017ee n\u011bkdy je velmi t\u011b\u017ek\u00e9 n\u011bco ud\u011blat v PromQL, zat\u00edmco v SQL m\u016f\u017eete d\u011blat t\u00e9m\u011b\u0159 cokoliv, proto\u017ee v\u0161echny tyto varianty, o kter\u00fdch jsme mluvili, by \u0161ly ud\u011blat v SQL. Ale bylo by pohodln\u00e9 to pou\u017e\u00edvat? A to m\u011b p\u0159iv\u00e1d\u00ed k my\u0161lence, \u017ee ne v\u017edy ten nejsiln\u011bj\u0161\u00ed jazyk m\u016f\u017ee b\u00fdt nejpohodln\u011bj\u0161\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/ec8786f1d72a1f8652fa631cdffc9c25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Proto je n\u011bkdy pot\u0159eba vyb\u00edrat jazyk podle \u00fakol\u016f. Je to jako bitva Batmana se Supermanem. Je jasn\u00e9, \u017ee Superman je siln\u011bj\u0161\u00ed, ale Batman ho dok\u00e1zal porazit, proto\u017ee byl prakti\u010dt\u011bj\u0161\u00ed a p\u0159esn\u011b v\u011bd\u011bl, co d\u011bl\u00e1.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/59e5cb7e54ee14705a9e8a36db6f5541.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A dal\u0161\u00ed \u010d\u00e1st \u2013 to je roz\u0161i\u0159ov\u00e1n\u00ed PromQL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/b806acf0e6c7c416614d3fd49004b4be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Je\u0161t\u011b jednou o VictoriaMetrics. Co je VictoriaMetrics? Je to datab\u00e1ze \u010dasov\u00fdch \u0159ad, je open-source, distribujeme jej\u00ed single i clusterov\u00e9 verze. Podle na\u0161ich benchmark\u016f je to nejrychlej\u0161\u00ed, co je na trhu, a co se t\u00fd\u010de komprese, tak\u00e9 srovnateln\u011b, tj. \u017eiv\u00ed lid\u00e9 hl\u00e1s\u00ed kompresi okolo 0,4 bajtu na bod, zat\u00edmco u Prometheuse je to 1,2-1,4. <\/p>\n<p><\/p>\n<p>Nepodporujeme pouze Prometheus. Podporujeme tak\u00e9 InfluxDB, Graphite, OpenTSDB.<\/p>\n<p><\/p>\n<p>M\u016f\u017eeme do n\u00e1s \"ps\u00e1t\", t. j. m\u016f\u017eeme p\u0159en\u00e1\u0161et star\u00e9 \u00fadaje. <\/p>\n<p><\/p>\n<p>A tak\u00e9 perfektn\u011b fungujeme s Prometheus a Grafana, tj. podporujeme motor PromQL. V Grafan\u011b m\u016f\u017eete jednodu\u0161e zm\u011bnit koncov\u00fd bod Prometheus na VictoriaMetrics a v\u0161echny va\u0161e panely budou fungovat, jak byly nastaveny. <\/p>\n<p><\/p>\n<p>Ale m\u016f\u017eete vyu\u017e\u00edt i dal\u0161\u00ed funkce, kter\u00e9 nab\u00edz\u00ed VictoriaMetrics.<\/p>\n<p><\/p>\n<p>Rychle projdeme funkcemi, kter\u00e9 jsme p\u0159idali.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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\u016f\u017eete vynechat intervaln\u00ed parametry v Grafan\u011b. Kdy\u017e nechcete dost\u00e1vat podivn\u00e9 grafy p\u0159i zoomov\u00e1n\u00ed v panelu, doporu\u010duje se pou\u017e\u00edvat prom\u011bnnou <code>{$__interval}<\/code>. Tato prom\u011bnn\u00e1 je intern\u00ed v Grafan\u011b a ona sama vyb\u00edr\u00e1 rozsah dat. A VictoriaMetrics dok\u00e1\u017ee pochopit, jak\u00fd tento rozsah m\u00e1 b\u00fdt. A nemus\u00edte aktualizovat v\u0161echny va\u0161e dotazy. Bude to mnohem jednodu\u0161\u0161\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/4094c7b8b5e6eef6134b5aa344ef7409.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Druh\u00e1 funkce \u2013 je to intervaln\u00ed odkazov\u00e1n\u00ed. M\u016f\u017eete tento interval pou\u017e\u00edvat ve sv\u00fdch v\u00fdrazech. M\u016f\u017eete jej n\u00e1sobit, d\u011blit, p\u0159ed\u00e1vat, odkazovat na n\u011bj.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/967ca6166e588987bd69c1e1953dca31.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>D\u00e1le rodina funkc\u00ed rollup. Rollup funkce transformuj\u00ed jak\u00fdkoli v\u00e1\u0161 \u010dasov\u00fd s\u00e9rie do t\u0159\u00ed odd\u011blen\u00fdch \u010dasov\u00fdch s\u00e9ri\u00ed. To je min, max a avg. Mysl\u00edm, \u017ee je to velmi praktick\u00e9, proto\u017ee to ob\u010das m\u016f\u017ee uk\u00e1zat n\u011bjak\u00e9 anom\u00e1lie a nep\u0159esnosti. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/d5ff7d6f6ae8f7550434a3dbbca09b20.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pokud d\u011bl\u00e1te irate nebo rate, pravd\u011bpodobn\u011b m\u016f\u017eete p\u0159ehl\u00e9dnout n\u011bkter\u00e9 p\u0159\u00edpady, kdy \u010dasov\u00fd s\u00e9rie se chov\u00e1 jinak, ne\u017e jste p\u0159edpokl\u00e1dali. S touto funkc\u00ed je mnohem jednodu\u0161\u0161\u00ed vid\u011bt nap\u0159\u00edklad, \u017ee max je velmi odli\u0161n\u00fd od avg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/a4e9f0d246fa33459597f7140e09538c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>D\u00e1le prom\u011bnn\u00e1 default. Default \u2013 to znamen\u00e1, jakou hodnotu chceme vykreslit v Grafan\u011b, pokud nem\u00e1me \u010dasov\u00fd s\u00e9rie v danou chv\u00edli. Kdy se to m\u016f\u017ee st\u00e1t? Dejme tomu, \u017ee exportujete n\u011bjakou metriku chyb. A m\u00e1te tak skv\u011blou aplikaci, \u017ee kdy\u017e jste za\u010dali, nem\u00e1te \u017e\u00e1dn\u00e9 chyby a dokonce nem\u00e1te \u017e\u00e1dn\u00e9 chyby ani za dal\u0161\u00ed t\u0159i hodiny nebo dokonce den. A m\u00e1te panely, kter\u00e9 ukazuj\u00ed pom\u011br mezi \u00fasp\u011bchy a chybami. A ty v\u00e1m nebudou nic ukazovat, proto\u017ee nem\u00e1te metriky chyb. A v defaultu m\u016f\u017eete uv\u00e9st cokoliv.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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\u00e1v\u00e1 posledn\u00ed hodnotu metriky, pokud zmizela. Pokud ji Prometheus po dal\u0161\u00ed dob\u011b shr\u00e1b\u00e1n\u00ed nenajde po dobu 5 minut, zapamatujeme si jej\u00ed posledn\u00ed hodnotu a va\u0161e grafy se znovu neporouchaj\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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, jak \u010dasto Prometheus sb\u00edr\u00e1 data ohledn\u011b va\u0161\u00ed metriky, jakou frekvenc\u00ed. Zde m\u016f\u017eete vid\u011bt vynech\u00e1n\u00ed, nap\u0159\u00edklad. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/9e9f43c7e9ef9a24dcc0b43673558046.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLabel replace \u2013 obl\u00edben\u00e1 funkce. Ale pova\u017eujeme ji za trochu slo\u017eitou, proto\u017ee p\u0159ij\u00edm\u00e1 celkem argument\u016f. A mus\u00edte si nejen pamatovat 5 argument\u016f, ale tak\u00e9 si zapamatovat jejich po\u0159ad\u00ed.<br \/>\n<img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/adfee335e9329f6b03d6f8a42ad8e7b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPro\u010d je tedy neud\u011blat jednodu\u0161\u0161\u00ed? T. j. rozd\u011blit je na men\u0161\u00ed funkce s p\u0159ehlednou syntaxi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/e928549205018e7405cc2a81970a8514.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A te\u010f to nejzaj\u00edmav\u011bj\u0161\u00ed. Pro\u010d pova\u017eujeme toto za roz\u0161\u00ed\u0159en\u00fd PromQL? Proto\u017ee podporujeme spole\u010dn\u00e9 tabulkov\u00e9 v\u00fdrazy. M\u016f\u017eete se pod\u00edvat 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>), prohl\u00e9dnout si odkazy s p\u0159\u00edklady a playground, kde m\u016f\u017eete prov\u00e1d\u011bt dotazy p\u0159\u00edmo ve VictoriaMetrics bez jej\u00edho nainstalov\u00e1n\u00ed, jednodu\u0161e v prohl\u00ed\u017ee\u010di.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/33259a4bcd1a92f2cab6e943b73502ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A co to vlastn\u011b je? Ten dotaz naho\u0159e \u2013 to je docela popul\u00e1rn\u00ed dotaz. Mysl\u00edm, \u017ee v ka\u017ed\u00e9m dashboardu ve spoust\u011b firem pou\u017e\u00edv\u00e1te stejn\u00fd filtr pro v\u0161echno. Obvykle to tak b\u00fdv\u00e1. Ale kdy\u017e pot\u0159ebujete p\u0159idat nov\u00fd filtr, mus\u00edte aktualizovat ka\u017edou panelu, nebo st\u00e1hnout dashboard, otev\u0159\u00edt ho v JSON, prov\u00e9st find replace, co\u017e tak\u00e9 zabere \u010das. Pro\u010d si neuchovat tuto hodnotu ve prom\u011bnn\u00e9 a nevyu\u017e\u00edt ji znovu? To vypad\u00e1, podle m\u00e9ho n\u00e1zoru, mnohem jednodu\u0161eji a srozumiteln\u011bji.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/60aea73cf49934ef7d9a7928a8e2f8e7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nap\u0159\u00edklad, kdy\u017e mus\u00edm aktualizovat filtry v Grafan\u011b ve v\u0161ech dotazech, a dashboard m\u016f\u017ee b\u00fdt obrovsk\u00fd, nebo jich m\u016f\u017ee b\u00fdt dokonce n\u011bkolik. A jak bych cht\u011bl tento probl\u00e9m vy\u0159e\u0161it v Grafan\u011b?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/7cf9eb13219bbd9a5d3240bdda1839a2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tento probl\u00e9m \u0159e\u0161\u00edm takto: vytvo\u0159\u00edm commonFilter a v n\u011bm definuji tento filtr, a pak ho p\u0159e pou\u017e\u00edv\u00e1m v dotazech. Ale pokud ud\u011bl\u00e1te nyn\u00ed to sam\u00e9, nebude to fungovat, proto\u017ee Grafana v\u00e1m neumo\u017e\u0148uje pou\u017e\u00edvat prom\u011bnn\u00e9 uvnit\u0159 prom\u011bnn\u00fdch dotaz\u016f. A to je trochu divn\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/0b7a40976cb3eeda370518a242f78708.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A proto jsem vytvo\u0159il takovou variantu, kter\u00e1 to umo\u017e\u0148uje. A pokud v\u00e1s to zaj\u00edm\u00e1 nebo byste takovou funkci cht\u011bli, podpo\u0159te to nebo dejte dislike, pokud se v\u00e1m takov\u00e1 my\u0161lenka nel\u00edb\u00ed. <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=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/68e3a408ff2b554cdfd61a2da4c75bc0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>D\u00e1le o roz\u0161\u00ed\u0159en\u00e9m PromQL. Zde definujeme nejen prom\u011bnnou, ale p\u0159\u00edmo celou funkci. A naz\u00fdv\u00e1me ji ru (resource usage). Tato funkce p\u0159ij\u00edm\u00e1 voln\u00e9 zdroje, omezen\u00ed podle zdroje a filtr. Vypad\u00e1 to, \u017ee syntaxi je celkem jednoduch\u00e1. A je velmi snadn\u00e9 tuto funkci pou\u017e\u00edt a spo\u010d\u00edtat procento voln\u00e9 pam\u011bti u n\u00e1s. T. j. kolik pam\u011bti m\u00e1me, jak\u00e9 je omezen\u00ed a jak filtrovat. Vypad\u00e1 to mnohem pohodln\u011bji, pokud byste to v\u0161echno psali, p\u0159i\u010dem\u017e byste znovu pou\u017e\u00edvali stejn\u00e9 filtry, proto\u017ee by se to prom\u011bnilo v obrovsk\u00fd dotaz.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/4ca66e18ac665fe1038493709530b82b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A tady je p\u0159\u00edklad takov\u00e9ho velk\u00e9ho dotazu. Poch\u00e1z\u00ed z ofici\u00e1ln\u00edho dashboardu NodeExporter pro Grafana. Ale moc nerozum\u00edm tomu, co se tady d\u011bje. Tedy, samoz\u0159ejm\u011b rozum\u00edm, pokud se na to pod\u00edv\u00e1m bl\u00ed\u017ee, ale mno\u017estv\u00ed z\u00e1vorek m\u016f\u017ee okam\u017eit\u011b sn\u00ed\u017eit motivaci rozkl\u00ed\u010dovat, co se tady d\u011bje. A pro\u010d by to nemohlo b\u00fdt jednodu\u0161\u0161\u00ed a p\u0159ehledn\u011bj\u0161\u00ed?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/50e01e7f0c1d03965b028266130413f0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nap\u0159\u00edklad takto, kdy\u017e vyzdvihneme podstatn\u00e9 v\u011bci nebo \u010d\u00e1sti do prom\u011bnn\u00fdch. A pak provedeme svou z\u00e1kladn\u00ed matematiku. To u\u017e vypad\u00e1 v\u00edce jako programov\u00e1n\u00ed, to je to, co bych cht\u011bl vid\u011bt v budoucnu v Grafana.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/81f957d89f97ebf686abdf969982d3ba.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toto je druh\u00fd p\u0159\u00edklad, jak bychom to mohli ud\u011blat je\u0161t\u011b jednodu\u0161eji, kdybychom u\u017e m\u011bli tuto funkci ru, kter\u00e1 u\u017e existuje p\u0159\u00edmo ve VictoriaMetrics. A pak jen p\u0159ed\u00e1te ulo\u017eenou hodnotu, kterou jste vyhl\u00e1sili v CTE.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/415302741e14232228353db6ec57a2e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>U\u017e jsem mluvil o tom, jak d\u016fle\u017eit\u00e9 je pou\u017e\u00edvat spr\u00e1vn\u00fd programovac\u00ed jazyk. A pravd\u011bpodobn\u011b v ka\u017ed\u00e9 firm\u011b v Grafana vznik\u00e1 n\u011bco sv\u00e9ho. A pravd\u011bpodobn\u011b tak\u00e9 d\u00e1v\u00e1te p\u0159\u00edstup k Grafana sv\u00fdm v\u00fdvoj\u00e1\u0159\u016fm, a v\u00fdvoj\u00e1\u0159i d\u011blaj\u00ed n\u011bco sv\u00e9ho. A v\u0161ichni to d\u011blaj\u00ed r\u016fzn\u011b. Cht\u011bl bych, aby to n\u011bjak odpov\u00eddalo standardu, tedy vracelo se k obecn\u00e9mu \u0161tandartu.<\/p>\n<p><\/p>\n<p>P\u0159edpokl\u00e1dejme, \u017ee m\u00e1te nejen syst\u00e9mov\u00e9 in\u017een\u00fdry, mo\u017en\u00e1 m\u00e1te dokonce i experty, devopsy nebo SRE. Mo\u017en\u00e1 m\u00e1te experty, kte\u0159\u00ed v\u011bd\u00ed, co je monitoring, v\u011bd\u00ed, co je Grafana, tedy s t\u00edm pracuj\u00ed l\u00e9ta a opravdu v\u011bd\u00ed, jak to d\u011blat spr\u00e1vn\u011b. A u\u017e to psali 100kr\u00e1t a v\u0161em vysv\u011btlovali, ale z n\u011bjak\u00e9ho d\u016fvodu nikdo neposlouch\u00e1.<\/p>\n<p><\/p>\n<p>A co kdyby tyto znalosti mohli p\u0159\u00edmo vlo\u017eit do Grafana, aby je mohli ostatn\u00ed u\u017eivatel\u00e9 znovu vyu\u017e\u00edt? A kdyby bylo t\u0159eba spo\u010d\u00edtat procento voln\u00e9 pam\u011bti, prost\u011b by pou\u017eili funkci. A co kdyby tv\u016frci export\u00e9r\u016f spolu se sv\u00fdm produktem tak\u00e9 poskytovali sadu funkc\u00ed, jak pracovat s jejich metrikami, proto\u017ee p\u0159esn\u011b v\u011bd\u00ed, co jsou to za metriky a jak je spr\u00e1vn\u011b po\u010d\u00edtat?<\/p>\n<p><\/p>\n<p>Toto ve skute\u010dnosti neexistuje. Toto jsem ud\u011blal s\u00e1m. To je podpora knihoven v Grafana. P\u0159edstavte si, \u017ee kluci, kte\u0159\u00ed vytvo\u0159ili NodeExporter, ud\u011blali to, o \u010dem mluv\u00edm. A tak\u00e9 poskytli sadu funkc\u00ed. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/755391ee41fd2abf4cb74fad17cecaf0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tedy to vypad\u00e1 p\u0159ibli\u017en\u011b takto. P\u0159ipoj\u00edte tuto knihovnu v Grafana, p\u0159ejdete do \u00fapravy a zde je velmi jednodu\u0161e v JSON pops\u00e1no, jak pracovat s touto metrikou. Tedy n\u011bjak\u00e1 sada funkc\u00ed, jejich popis a do \u010deho se rozv\u00edjej\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky Romana Chavronenka\" src=\"\/wp-content\/uploads\/2020\/03\/78a85dd219a421757807be895c173a39.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mysl\u00edm, \u017ee by to mohlo b\u00fdt u\u017eite\u010dn\u00e9, proto\u017ee pak byste v Grafana psali pouze takto. A Grafana v\u00e1m \"\u0159ekne\", \u017ee existuje takov\u00e1 funkce z takov\u00e9 knihovny \u2013 poj\u010fme ji pou\u017e\u00edt. Mysl\u00edm, \u017ee by to bylo skv\u011bl\u00e9.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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. D\u011bl\u00e1me spoustu zaj\u00edmav\u00fdch v\u011bc\u00ed. P\u0159e\u010dt\u011bte si na\u0161e \u010dl\u00e1nky o kompresi, o na\u0161ich sout\u011b\u017e\u00edch s jin\u00fdmi aplikacemi pro \u010dasov\u00e9 \u0159ady, na\u0161e vysv\u011btlen\u00ed, jak pracovat s PromQL, proto\u017ee zde je st\u00e1le spousta nov\u00e1\u010dk\u016f, a tak\u00e9 o vertik\u00e1ln\u00ed \u0161k\u00e1lovatelnosti a o sout\u011b\u017een\u00ed s Thanos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u201eExtendedPromQL\u201c \u2013 p\u0159epis p\u0159edn\u00e1\u0161ky 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\u010dnu svou ot\u00e1zku jednoduch\u00fdm \u017eivotn\u00edm p\u0159\u00edb\u011bhem. Kdy\u017e jsem poprv\u00e9 za\u010dal pou\u017e\u00edvat Grafana, napsal jsem velmi p\u0159esv\u011bd\u010div\u00fd dotaz dlouh\u00fd 5 \u0159\u00e1dk\u016f. V\u00fdsledkem byl velmi p\u0159esv\u011bd\u010div\u00fd graf. Tento graf skoro \u0161el do produkce. Ale p\u0159i bli\u017e\u0161\u00edm zkoum\u00e1n\u00ed se uk\u00e1zalo, \u017ee tento graf ukazuje absolutn\u00ed nesmysl, kter\u00fd nem\u00e1 \u017e\u00e1dn\u00fd vztah k realit\u011b, p\u0159esto\u017ee \u010d\u00edsla spadaj\u00ed do rozsahu, kter\u00fd jsme o\u010dek\u00e1vali vid\u011bt. A moje ot\u00e1zka. M\u00e1me knihovny, m\u00e1me funkce, ale jak p\u00ed\u0161eme testy pro Grafana? Napsali jste slo\u017eit\u00fd dotaz, od kter\u00e9ho z\u00e1vis\u00ed podnikov\u00e9 rozhodnut\u00ed \u2013 objednat skute\u010dn\u00fd kontejner server\u016f nebo neobjedn\u00e1vat. A jak v\u00edme, \u017ee funkce, kter\u00e1 kresl\u00ed graf, vypad\u00e1 jako pravda. D\u011bkuji.<\/em><\/p>\n<p><\/p>\n<p>D\u011bkuji za ot\u00e1zku. Tady jsou dv\u011b \u010d\u00e1sti. Prvn\u00ed \u2013 m\u00e1m dojem, na z\u00e1klad\u011b sv\u00e9 praxe, \u017ee v\u011bt\u0161ina u\u017eivatel\u016f, kdy\u017e se d\u00edv\u00e1 na sv\u00e9 grafy, nech\u00e1pe, co jim ukazuj\u00ed. Z n\u011bjak\u00e9ho d\u016fvodu jsou lid\u00e9 velmi dob\u0159\u00ed v tom, aby vymysleli omluvu pro jakoukoli anom\u00e1lii, kter\u00e1 se na grafech objevuje, i kdy\u017e je to chyba uvnit\u0159 funkce. A druh\u00e1 \u010d\u00e1st \u2013 mysl\u00edm, \u017ee pou\u017eit\u00ed takov\u00fdch funkc\u00ed by mnohem l\u00e9pe poslou\u017eilo k \u0159e\u0161en\u00ed va\u0161\u00ed probl\u00e9mu, m\u00edsto toho, aby ka\u017ed\u00fd z va\u0161ich v\u00fdvoj\u00e1\u0159\u016f d\u011blal sv\u00e9 pl\u00e1nov\u00e1n\u00ed kapacity a chyboval s n\u011bjakou pravd\u011bpodobnost\u00ed.<\/p>\n<p><\/p>\n<p><em>Jak zkontrolovat?<\/em><\/p>\n<p><\/p>\n<p>Jak zkontrolovat? Asi nijak. <\/p>\n<p><\/p>\n<p><em>Ve form\u011b testu v Grafana.<\/em><\/p>\n<p><\/p>\n<p>Co m\u00e1 Grafana spole\u010dn\u00e9ho? Grafana p\u0159en\u00e1\u0161\u00ed tento dotaz p\u0159\u00edmo do DataSource.<\/p>\n<p><\/p>\n<p><em>P\u0159id\u00e1n\u00edm mal\u00e9ho mno\u017estv\u00ed do parametr\u016f.<\/em><\/p>\n<p><\/p>\n<p>Ne, v Grafan\u011b se nic nep\u0159id\u00e1v\u00e1. Mohou zde b\u00fdt parametry GET, jako nap\u0159\u00edklad step. Ten nen\u00ed jednozna\u010dn\u011b uveden, ale m\u016f\u017eete ho p\u0159epsat, m\u016f\u017eete ho nep\u0159epsat, ale automaticky se p\u0159id\u00e1v\u00e1. Zde nebudete ps\u00e1t testy. Mysl\u00edm, \u017ee na Grafanu se jako na zdroj pravdy spol\u00e9hat nevyplat\u00ed.<\/p>\n<p><\/p>\n<p><em>D\u011bkuji za prezentaci! D\u011bkuji za kompresi! Zmi\u0148ovali jste mapov\u00e1n\u00ed prom\u011bnn\u00e9 v grafu, \u017ee v Grafan\u011b nelze pou\u017e\u00edt prom\u011bnnou v prom\u011bnn\u00e9. Rozum\u00edte, o \u010dem mluv\u00edm?<\/em><\/p>\n<p><\/p>\n<p>Ano.<\/p>\n<p><\/p>\n<p><em>To byla p\u016fvodn\u011b velk\u00e1 bolest hlavy, kdy\u017e jsem cht\u011bl vytvo\u0159it upozorn\u011bn\u00ed v Grafan\u011b. A tam je pot\u0159eba d\u011blat upozorn\u011bn\u00ed pro ka\u017ed\u00fd host zvl\u00e1\u0161\u0165. Tohle, co jste ud\u011blali, funguje pro upozorn\u011bn\u00ed v Grafan\u011b?<\/em><\/p>\n<p><\/p>\n<p>Pokud Grafana neka\u017ed\u00ed prom\u011bnn\u00e9 n\u011bjak jinak, pak \u2013 ano, bude to fungovat. Ale moje rada je v\u016fbec nepou\u017e\u00edvat upozor\u0148ov\u00e1n\u00ed v Grafan\u011b, m\u011bli byste rad\u011bji pou\u017e\u00edt alertmanager.<\/p>\n<p><\/p>\n<p><em>Ano, pou\u017e\u00edv\u00e1m ho, ale v Grafan\u011b se mi to zd\u00e1lo snadn\u011bj\u0161\u00ed na nastaven\u00ed, ale d\u00edky 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.3 - 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\/cs\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\u201eExtendedPromQL\u201c \u2013 rozbor prezentace Romana Chavronenka | ProHoster","description":"Doporu\u010duji se sezn\u00e1mit s p\u0159episem p\u0159edn\u00e1\u0161ky Romana Chavronenka \"ExtendedPromQL\"","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/75585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=75585"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/75585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/75586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=75585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=75585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=75585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}