{"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\/et\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","title":{"rendered":"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Soovitan tutvuda Romana Khavronenko ettekande \"ExtendedPromQL\" t\u00f5lgendusega.<\/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=\"M\u00e4ngi videot\" 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 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/54a175d9c74c90d9d313f8ff71476638.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00fchidalt minust. Minu nimi on Romain. T\u00f6\u00f6toime CloudFlare'is, elan Londonis. Olen ka VictoriaMetrics'i hooldaja.<br \/>\nJa ma olen autor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/clickhouse-grafana\">ClickHouse'i pluginast<\/a><\/noindex> Grafana jaoks ja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/chproxy\">ClickHouse-proxy<\/a><\/noindex> \u2013 see on v\u00e4ike proxy ClickHouse'i jaoks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/fc1aa56b144def5db9fcee844d5016f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kasutame esimest osa, mis kannab nime \"T\u00f5lke keerukused\", kus r\u00e4\u00e4gin, et iga keel v\u00f5i isegi lihtsalt suhtlemiskeel on v\u00e4ga oluline. Sest see on viis, kuidas edastate oma m\u00f5tteid teisele inimesele v\u00f5i s\u00fcsteemile, kuidas te esitate p\u00e4ringu. Internetis vaieldakse selle \u00fcle, milline keel on parem \u2013 java v\u00f5i m\u00f5ni muu. Otsustasin, et tuleb valida vastavalt \u00fclesandele, sest k\u00f5ik see on spetsiifiline.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/ea21f52ba5c2d3507e0106715c4ab96d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alustame algusest. Mis on PromQL? PromQL on Prometheuse p\u00e4ringukeel. See on viis, kuidas me vormistame p\u00e4ringud Prometheuses, et saada ajaseeria andmeid.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/56b1ef4cc04defdffeea8b2666fdc354.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis on ajaseeria andmed? Kui v\u00f5tta s\u00f5nas\u00f5naliselt, siis need on kolm parameetrit. <\/p>\n<p><\/p>\n<p>Need on:<\/p>\n<p><\/p>\n<ul>\n<li>Millele me vaatame. <\/li>\n<li>Millal me sellele vaatame.<\/li>\n<li>Ja milline v\u00e4\u00e4rtus n\u00e4itab. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/358a193e889204d28debe1b74b93df3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui vaadata seda diagrammi (see diagramm on minu telefonist, mis n\u00e4itab minu samblaste statistikat), siis saame kiiresti sellele k\u00fcsimusele vastata. <\/p>\n<p><\/p>\n<p>Me vaatame samme. N\u00e4eme v\u00e4\u00e4rtust ja aega, mil me sellele vaatame. Seega, vaadates seda diagrammi, on lihtne \u00f6elda, et p\u00fchap\u00e4eval k\u00f5ndisin umbes 15 000 sammu. Need on ajaseeria andmed. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/859299ee9d25a3419c869b3ed6db6e72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd, laske meil \"lahutada\" (muuta) need teise andmemudelisse tabelina. Siin on meil samuti see, millele me vaatame. Siia olen natuke lisandunud t\u00e4iendavaid andmeid, mida me nimetame metaandmeteks, st selle pole teinud mina, vaid kaks inimest, n\u00e4iteks Jay ja Silent Bob. See on see, millele me vaatame; mis see n\u00e4itab ja millal see v\u00e4\u00e4rtus kuvatakse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/fd7b48ea3c25b57c13605e84c4a52a2c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00fc\u00fcd proovime salvestada k\u00f5ik need andmed andmebaasi. N\u00e4iteks v\u00f5tsin ClickHouse'i s\u00fcntaksi. Siin loome \u00fche tabeli, mis kannab nime \"Steps\", st millele me vaatame. Siin on aeg, mil me sellele vaatame; mida see n\u00e4itab ja m\u00f5ned metaandmed, kus me salvestame, kes see on: Jay ja Silent Bob.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/bd01f9dc0b29d34aacbb8f012710a94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja et proovida seda k\u00f5ike visualiseerida, kasutame Grafana't, sest eelk\u00f5ige on see ilus.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/9f573241e9ae32e31d6d0b879115970b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me kasutame ka seda pistikprogrammi. Selleks on kaks p\u00f5hjust. Esiteks, sest mina selle kirjutasin. Ja ma tean t\u00e4pselt, kui keeruline on time series andmete eraldamine ClickHouse'ist, et neid Grafanas n\u00e4idata. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/29f2d72f9995afb54b23bb7b4230b840.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e4tkeme Graph Panelis. See on k\u00f5ige populaarsem paneel Grafanas, mis kuvab v\u00e4\u00e4rtuse s\u00f5ltuvust ajast, seega vajame ainult kahte parameetrit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/d820f63944ce0112660337b44a6c1f36.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKirjutame k\u00f5ige lihtsama p\u00e4ringu \u2014 kuidas n\u00e4idata samme Grafanas, mille andmed on salvestatud ClickHouse'i, tabelisse, mille me l\u00f5ime. Ja me kirjutame sellise lihtsa p\u00e4ringu. Valime sammudest. Valime v\u00e4\u00e4rtuse ja valime nende v\u00e4\u00e4rtuste aja, st samad kolm parameetrit, millest me r\u00e4\u00e4kisime.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/ad7895105050178de5bc8a154da7e6e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja tulemuseks saame sellise graafiku. Kas keegi teab, miks see nii kummaline on?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/4a8108737e834cf35b7834be7b4db719.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00d5ige, tuleb sorteerida ajas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/d37343c7a6a811e2012f1cbae4b9a5d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja l\u00f5puks saame juba parem, aga ikka kummalise graafiku. Kas keegi teab, miks? \u00d5ige, seal on kaks osalejat, ja me saame Grafanas kaks time series, sest kui vaatame t\u00fcpoloogiat veel kord, siis iga time series on ainulaadne kombinatsioon nimest ja k\u00f5igist v\u00f5tme-v\u00e4\u00e4rtuse labelitest.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/f19bf1a9f43ae8de22af6bf7b494902f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seega peame valima konkreetse isiku. Valime Jay.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/b6a714d5d6ce4d4b27634da9414aa6f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja joonistame uuesti. N\u00fc\u00fcd n\u00e4eb graafik v\u00e4lja nagu t\u00f5de. N\u00fc\u00fcd on see normaalne graafik ja k\u00f5ik t\u00f6\u00f6tab h\u00e4sti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/2a93b4cd548239c9314c3283c5b9f488.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja ilmselt teate, kuidas teha umbes sama ka Prometheuses l\u00e4bi PromQL. Umbes nii. Veidi lihtsam. Ja veel jagame selle k\u00f5ik. Me v\u00f5tsime Steps. Ja filtreerime Jay j\u00e4rgi. Me ei n\u00e4ita siin, et me tahame saada v\u00e4\u00e4rtust ja me ei vali aega. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/5e080a1b88c156522af21bf00f3cd641.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aga n\u00fc\u00fcd proovime arvutada Jay v\u00f5i Silent Bob'i liikuvuse kiirus. ClickHouse'is peame tegema runningDifference, st arvutama paaride punktide erinevuse ja jagama nad ajaga, et saada t\u00e4pne kiirus. P\u00e4ring n\u00e4eb v\u00e4lja umbes nii.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/13102b04ba4cf0ff9c955c36801044d0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja see n\u00e4itab umbes selliseid v\u00e4\u00e4rtusi, st umbes 1,8 sammu sekundis teeb Silent Bob v\u00f5i Jay.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/1c328f99da6f160bdca23ab5f461bda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja Prometheuses teate, kuidas seda teha samuti. Oluliselt lihtsam, kui see oli varem.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/a7145785dee9fafcc8ab573e920cb88e.jpeg\" style=\"display:block;margin: 0 auto;\" \/>Ja et see oleks Grafanas lihtne, lisasin ma sellise m\u00e4hise, mis sarnaneb PromQL-iga. Seda nimetatakse Rate Macros v\u00f5i kuidas iganes soovite. Grafanas kirjutate lihtsalt \u201erate\u201d, kuid kuskil s\u00fcgaval muudetakse see suureks p\u00e4ringuks. Teie ei pea isegi sellele vaatama, see on seal kuskil, kuid s\u00e4\u00e4state rohkesti aega, sest selliste suurte SQL-p\u00e4ringute kirjutamine on alati aegan\u00f5udev. Te v\u00f5ite kergesti eksida ja hiljem kaua aru saada, mis toimub.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/511bb35469567b07412a10bb7c0b7312.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja see on p\u00e4ring, mis ei mahtunud isegi \u00fchele slaidile ja pidin selle jagama kaheks veeruks. See on samuti p\u00e4ring ClickHouse'is, mis teeb sama rate'i, kuid m\u00f5lema aega seeria kohta: nii Silent Bobi kui ka Jay kohta, et meil oleks paneelil kaks aega seeriat. Ja see on juba v\u00e4ga keeruline, minu arvates. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/c9c1e6b58672069370153a151dceef3d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja Prometheusele on see sum (rate). ClickHouse'i jaoks tegin ma eraldi makro, mida nimetatakse RateColumns, mis n\u00e4eb v\u00e4lja nagu p\u00e4ring Prometheuses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/9743c6a4b3de4aab7cfb5bd3fd50fcfd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me vaatasime ja tundus, et PromQL on t\u00f5eliselt \u00e4ge, kuid sellel on loomulikult omad piirangud.<\/p>\n<p><\/p>\n<p>Need on:<\/p>\n<p><\/p>\n<ul>\n<li>Piiratud SELECT.<\/li>\n<li>Piiratud JOIN.<\/li>\n<li>Puudub HAVING tugi.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ja kui olete sellega kaua t\u00f6\u00f6tanud, siis teate, et m\u00f5nikord on PromQL'is midagi teha v\u00e4ga raske, samas kui SQL-is saab teha praktiliselt k\u00f5ike, sest k\u00f5ik need variandid, millest me praegu r\u00e4\u00e4kisime, oleks saanud teostada SQL-is. Kuid kas oleks mugav seda kasutada? Ja see viib mind m\u00f5tlema, et mitte alati ei pruugi k\u00f5ige v\u00f5imsam keel olla k\u00f5ige mugavam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/ec8786f1d72a1f8652fa631cdffc9c25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seet\u00f5ttu tuleb m\u00f5nikord valida keel \u00fclesannete j\u00e4rgi. See on nagu Batmani ja Supermani lahing. Selge, et Superman on tugevam, kuid Batman suutis ta v\u00f5ita, sest ta on praktilisem ja teadis t\u00e4pselt, mida teeb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/59e5cb7e54ee14705a9e8a36db6f5541.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja j\u00e4rgmine osa on Extending PromQL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/b806acf0e6c7c416614d3fd49004b4be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Veel kord VictoriaMetricsist. Mis on VictoriaMetrics? See on ajalooliste andmete baas, mis on OpenSource, me jagame selle single- ja klastriversioone. Meie benchmarkide kohaselt on see kiireim, mis turul praegu on ja kompressioon on samuti sarnane, st elavad inimesed teatavad kompressioonist umbes 0,4 bait\/punkt, kui Prometheuse puhul on see 1,2-1,4. <\/p>\n<p><\/p>\n<p>Me toetame mitte ainult Prometheust. Me toetame InfluxDB-d, Graphite'i, OpenTSDB-d.<\/p>\n<p><\/p>\n<p>Meisse saab \"kirjutada\", st vanu andmeid saab edastada. <\/p>\n<p><\/p>\n<p>Ja me t\u00f6\u00f6tame ideaalselt Prometheuse ja Grafanaga, st toetame PromQL mootorit. Ja Grafanas v\u00f5ite lihtsalt vahetada Prometheuse l\u00f5pp-punkti VictoriaMetricsi vastu, ja teie k\u00f5ik armatuurlaud toimib nagu enne. <\/p>\n<p><\/p>\n<p>Kuid saate kasutada ka t\u00e4iendavaid funktsioone, mida VictoriaMetrics pakub.<\/p>\n<p><\/p>\n<p>Vaatame kiiresti funktsioone, mille me oleme lisanud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/78e9c0ce91fad48ab859fc2cf06a0689.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Omandage interval'i parameeter \u2013 saate Grafanas vahe parameetreid vahele j\u00e4tta. Kui te ei soovi saada kummalisi graafikuid, kui zoomite sisse\/v\u00e4lja paneelil, siis on soovitatav kasutada muutujat <code>$__interval<\/code>. See on Grafana sisemine muutuja ja see valib ise andmete vahemiku. Ja VictoriaMetrics suudab ise m\u00f5ista, milline see vahemik olema peab. Te ei pea uuendama oma p\u00e4ringuid. See on palju lihtsam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/4094c7b8b5e6eef6134b5aa344ef7409.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine funktsioon on intervalli viitamine. Saate seda intervalli kasutada oma v\u00e4ljendites. Saate seda korrutada, jagada, edastada ja viidata sellele.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/967ca6166e588987bd69c1e1953dca31.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Edasi liikudes rollup funktsioonide kogum. Rollup funktsioon muudab teie ajaseeriad kolmeks eraldi ajaseeriaks. Need on min, max ja avg. Arvan, et see on v\u00e4ga mugav, kuna see v\u00f5ib m\u00f5nikord n\u00e4idata teatud k\u00f5rvalekaldeid ja ebat\u00e4psusi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/d5ff7d6f6ae8f7550434a3dbbca09b20.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja kui te lihtsalt teete irate v\u00f5i rate, siis on t\u00f5en\u00e4oline, et v\u00f5ite m\u00f5nda juhtumit k\u00f5rvale j\u00e4tta, kui ajaseeria k\u00e4itub mitte nii, nagu te oletate. Selle funktsiooniga on palju lihtsam n\u00e4ha, et n\u00e4iteks max on palju k\u00f5rgem kui avg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/a4e9f0d246fa33459597f7140e09538c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Edasi muutuja default. Default t\u00e4hendab, millist v\u00e4\u00e4rtust peame Grafanas joonistama, kui meil ei ole ajaseeriat hetkel. Millal see juhtub? Oletame, et ekspordite m\u00f5nda veateavet. Ja teil on nii suur rakendus, et kui te alustate, siis ei ole teil vigu ja isegi kolme tunni jooksul v\u00f5i isegi p\u00e4eva jooksul ei ole vigu. Ja teil on armatuurlaud, mis n\u00e4itab suhete suhet edus ja vigades. Ja nad n\u00e4itavad teile mitte midagi, kuna teil ei ole veateavet. Default's saate m\u00e4\u00e4rata \u00fcksk\u00f5ik mida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/cb4e23199194006186ac6907d2335cf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Keep_last_Value \u2013 salvestab viimase m\u00f5\u00f5tme v\u00e4\u00e4rtuse, kui see kaob. Kui Prometheus ei leia j\u00e4rgmisel h\u00e4\u00e4lestamisel seda viie minuti jooksul, siis salvestame selle viimase v\u00e4\u00e4rtuse ja teie graafikud ei purune uuesti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/ca202f8a70f071cbd85b33b98cd28bb5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Scrape_interval \u2013 n\u00e4itab, kui tihti Prometheus kogub andmeid teie m\u00f5\u00f5diku kohta, kui sageli. Siit on n\u00e4iteks v\u00f5imalik n\u00e4ha l\u00fcnki. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/9e9f43c7e9ef9a24dcc0b43673558046.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLabel replace \u2013 populaarne funktsioon. Kuid meie arvates on see pisut keeruline, kuna see v\u00f5tab terveid argumente. Ja peate mitte ainult meeles pidama 5 argumenti, vaid ka nende j\u00e4rjekorda.<br \/>\n<img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/adfee335e9329f6b03d6f8a42ad8e7b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSeet\u00f5ttu, miks mitte teha neid lihtsamaks? St. jagada v\u00e4ikesteks funktsioonideks, millel on arusaadav s\u00fcntaks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/e928549205018e7405cc2a81970a8514.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja n\u00fc\u00fcd tuleb huvitav osa. Miks me arvame, et see on extended PromQL? Sest toetame \u00dchislauda. Sa saad skaneerida QR-koodi (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/wiki\/ExtendedPromQL\">https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/wiki\/ExtendedPromQL<\/a><\/noindex>), vaadata n\u00e4idiste linke, m\u00e4nguv\u00e4ljakku, kus saad teostada p\u00e4ringuid otse VictoriaMetrics'is ilma selle installimata lihtsalt brauseris.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/33259a4bcd1a92f2cab6e943b73502ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja mis see siis on? See \u00fclalpool olev p\u00e4ring \u2013 see on \u00fcsna populaarne p\u00e4ring. Ma arvan, et igas andmevisualiseerimises paljudes ettev\u00f5tetes kasutad sama filtrit k\u00f5igi jaoks. Tavaliselt nii. Aga kui pead lisama mingi uue filtri, tuleb iga paneel uuendada v\u00f5i laadida andmevisualiseerimine alla, avada JSON-is, teha find replace, mis ka v\u00f5tab aega. Miks mitte hoida seda v\u00e4\u00e4rtust muutujas ja taaskasutada seda? See tundub minu arvates palju lihtsam ja arusaadavam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/60aea73cf49934ef7d9a7928a8e2f8e7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4iteks, kui mul on vaja uuendada filtreid Grafanas k\u00f5igis p\u00e4ringutes, ja andmevisualiseerimine v\u00f5ib olla tohutu v\u00f5i neid v\u00f5ib olla isegi mitu. Ja kuidas ma sooviksin seda probleemi Grafanas lahendada?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/7cf9eb13219bbd9a5d3240bdda1839a2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lahendan selle probleemi nii: teen commonFilteri ja m\u00e4\u00e4ratlen selles filtris, ning seej\u00e4rel taaskasutada seda p\u00e4ringutes. Kuid kui sa teed n\u00fc\u00fcd samamoodi, ei toimi see, sest Grafana ei luba sul kasutada muutujaid sisemistes p\u00e4ringumuutujates. Ja see on veidi kummaline.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/0b7a40976cb3eeda370518a242f78708.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja seet\u00f5ttu tegin sellise variandi, mis lubab seda teha. Ja kui see huvitab sind v\u00f5i soovid sellist funktsiooni, siis toeta v\u00f5i hinda negatiivselt, kui sulle ei meeldi selline idee. <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 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/68e3a408ff2b554cdfd61a2da4c75bc0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Edasi extended PromQL'i kohta. Siin m\u00e4\u00e4ratleme mitte ainult muutuja, vaid lausa terve funktsiooni. Ja nimetame selle ru (resource usage). See funktsioon v\u00f5tab vastu vabad ressursid, ressursi piirangu ja filtri. S\u00fcntaks tundub olema lihtne. Ja on v\u00e4ga lihtne kasutada seda funktsiooni ning arvutada meie vabade m\u00e4lu protsent. St. kui palju meil on m\u00e4lu, mis on piirang ja kuidas filtreerida. See tundub oluliselt mugavam, sest kirjutades k\u00f5ik kasutada sama filtrit, see muutuks suureks-p\u00e4devaks p\u00e4ringuks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/4ca66e18ac665fe1038493709530b82b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja, ja n\u00e4ide sellisest suurest p\u00e4ringust. See on ametlikust NodeExporter'i juhtpaneelist Grafanas. Aga ma ei saa aru, mis siin toimub. T. e., muidugi, ma saan aru, kui t\u00e4helepanelikult vaadata, aga sulgede arv v\u00f5ib kohe motivatsiooni alandada m\u00f5ista, mis siin toimub. Ja miks mitte teha seda lihtsamaks ja selgemaks?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/50e01e7f0c1d03965b028266130413f0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4iteks nii, tuues esile olulised asjad v\u00f5i osad muutujatesse. Ja siis tehes oma baasmatemaatika. See on juba rohkem nagu programmeerimine, see on see, mida ma tahaksin tulevikus Grafanas n\u00e4ha.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/81f957d89f97ebf686abdf969982d3ba.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on teine n\u00e4ide, kuidas saame seda veelgi lihtsamaks teha, kui meil oleks see funktsioon ru, ja see on juba olemas VictoriaMetrics'is. Ja siis edastate lihtsalt vahem\u00e4lus oleva v\u00e4\u00e4rtuse, mille olete CTE's kuulutanud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/415302741e14232228353db6ec57a2e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ma olen juba r\u00e4\u00e4kinud, kui oluline on kasutada \u00f5iget programmeerimiskeelt. Ja ilmselt igas ettev\u00f5ttes toimub Grafanas midagi oma. Ja ilmselt annate ka oma arendajatele juurdep\u00e4\u00e4su Grafanale, ja arendajad teevad midagi oma. Ja k\u00f5ik nad teevad seda kuidagi erinevalt. Ja oleks hea, kui saaks kuidagi \u00fchtsemalt, t. e. viia see \u00fchise standardini.<\/p>\n<p><\/p>\n<p>Eeldame, et teil on mitte ainult s\u00fcsteemiinsenerid, v\u00f5ib-olla on teil isegi eksperdid, devops'id v\u00f5i SRE'd. V\u00f5ib-olla on teil eksperdid, kes teavad, mis asi on j\u00e4lgimine, teavad, mis asi on Grafana, t. e. nad on sellega t\u00f6\u00f6tanud aastaid ja teavad t\u00e4pselt, kuidas \u00f5igesti teha. Ja nad on seda juba 100 korda kirjutanud ja k\u00f5igile seletanud, aga mingil p\u00f5hjusel keegi ei kuula.<\/p>\n<p><\/p>\n<p>Ja mis siis, kui nad saaksid need teadmised otse Grafanasse panna, et teised kasutajad saaksid funktsioone taaskasutada? Ja kui peaks arvutama vaba m\u00e4lu protsendi, siis nad lihtsalt rakendaksid funktsiooni. Aga mis siis, kui eksportijate tegijad kaasneksid oma tootega ka funktsioonide kogumitega, kuidas t\u00f6\u00f6tada nende m\u00f5\u00f5tmetega, sest nad teavad t\u00e4pselt, mis need m\u00f5\u00f5tmed on ja kuidas neid \u00f5igesti arvutada?<\/p>\n<p><\/p>\n<p>Seda tegelikult ei eksisteeri. Selle tegin mina ise. See on toetuse raamatukogude jaoks Grafanas. Eeldame, et poisid, kes tegid NodeExporter'i, tegid seda, millest ma r\u00e4\u00e4kisin. Ja pakkusid ka funktsioonide kogumit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/755391ee41fd2abf4cb74fad17cecaf0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See, it looks something like this. You connect this library in Grafana, you go into editing, and here it\u2019s very simply written in JSON how to work with this metric. That is, it\u2019s some set of functions, their descriptions, and how they unfold.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/78a85dd219a421757807be895c173a39.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Minu arvates v\u00f5iks see olla kasulik, sest siis kirjutaksite Grafanas lihtsalt nii. Ja Grafana \"\u00fctleb\" teile, et on olemas selline funktsioon sellisest raamatukogust \u2013 kasutame seda. Tundub, et see oleks v\u00e4ga \u00e4ge.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/6e6b2b459c574d95d56251cd5fae5586.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A bit about VictoriaMetrics. We are doing a lot of interesting things. Read our articles about compression, about our competitions with other time series data applications, our explanations on how to work with PromQL, because there are still many newcomers, as well as about vertical scalability and our confrontation with Thanos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 Romani Havronenko ettekande kokkuv\u00f5te\" src=\"\/wp-content\/uploads\/2020\/03\/562829a25ee6131c7eaed8c561c6927c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00fcsimused:<\/p>\n<p><\/p>\n<p><em>I will start my question with a simple life story. When I first started using Grafana, I wrote a very convincing query that was five lines long. In the end, I got a very convincing graph. This graph almost went into production. But upon closer inspection, it turned out that this graph shows absolute nonsense, having nothing to do with reality, although the numbers fall within the range we expected to see. And my question is. We have libraries, we have functions, but how do we write tests for Grafana? You wrote a complex query that depends on a business decision \u2013 whether to order a real container of servers or not. And how do we know that this function, which draws the graph, resembles the truth? Thank you.<\/em><\/p>\n<p><\/p>\n<p>Thanks for the question. There are two parts. First \u2013 I have the impression, based on my practice, that most users, when looking at their graphs, do not understand what they are showing. For some reason, people are very good at coming up with justifications for any anomalies that occur on the graphs, even if it\u2019s an error inside the function. And the second part \u2013 it seems to me that using such functions would suit your problem much better, instead of each of your developers doing their own capacity planning and being wrong with some probability.<\/p>\n<p><\/p>\n<p><em>How to check?<\/em><\/p>\n<p><\/p>\n<p>How to check? Probably, no way. <\/p>\n<p><\/p>\n<p><em>In the form of a test in Grafana.<\/em><\/p>\n<p><\/p>\n<p>What does Grafana have to do with it? Grafana translates this query directly into the DataSource.<\/p>\n<p><\/p>\n<p><em>Adding a little bit to the parameters.<\/em><\/p>\n<p><\/p>\n<p>Ei, Grafanas ei lisata midagi. Seal v\u00f5ivad olla GET-parameetrid, nagu n\u00e4iteks step. Seda ei \u00f6elda selgelt, kuid saate selle \u00fcletada, v\u00f5ite mitte \u00fcletada, kuid see lisatakse automaatselt. Te ei kirjuta siia teste. Ma arvan, et ei tasu Grafanat t\u00f5e allikana usaldada.<\/p>\n<p><\/p>\n<p><em>Ait\u00e4h ettekande eest! Ait\u00e4h kompresseerimise eest! Te mainisite, et grafikus ei saa kasutada muutujaid muutuja sees, kas saate aru, millest ma r\u00e4\u00e4gin?<\/em><\/p>\n<p><\/p>\n<p>Jah.<\/p>\n<p><\/p>\n<p><em>See oli algselt peavalu, kui ma tahtsin Grafanas hoiatust teha. Ja seal tuleb hoiatust teha iga hosti jaoks eraldi. Kas see, mille te tegite, t\u00f6\u00f6tab hoiatuste jaoks Grafanas?<\/em><\/p>\n<p><\/p>\n<p>Kui Grafana ei k\u00e4sitle muutujaid kuidagi teisiti, siis jah, see t\u00f6\u00f6tab. Kuid minu soovitus on mitte kasutada Grafanas hoiatamist \u00fcldse, teil on parem kasutada alertmanagerit.<\/p>\n<p><\/p>\n<p><em>Jah, ma kasutan seda, aga lihtsalt tundus Grafanas seadistamine kergem, aga ait\u00e4h n\u00e4pun\u00e4ite eest!<\/em><\/p>\n<p>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\u00abExtendedPromQL\u00bb \u2014 Romani Khavronenko ettekande de\u0161ifreerimine | ProHoster","description":"Tutvustan Romain Khavroenko raporti \"ExtendedPromQL\" sisukokkuv\u00f5tet.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/75585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=75585"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/75585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/75586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=75585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=75585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=75585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}