{"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\/it\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","title":{"rendered":"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Ti invito a prendere visione della trascrizione della presentazione di Roman Khavronenko \"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=\"Guarda il video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/54a175d9c74c90d9d313f8ff71476638.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Brevemente su di me. Mi chiamo Roman. Lavoro in CloudFlare e vivo a Londra. Ma sono anche maintainer di VictoriaMetrics.<br \/>\nE sono l'autore <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/clickhouse-grafana\">del plugin ClickHouse<\/a><\/noindex> per Grafana e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/chproxy\">ClickHouse-proxy<\/a><\/noindex> \u00e8 un piccolo proxy per ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/fc1aa56b144def5db9fcee844d5016f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Inizieremo con la prima parte, che si chiama \"Le difficolt\u00e0 della traduzione\", in cui parler\u00f2 del fatto che qualsiasi lingua, o anche semplicemente il linguaggio comunicativo, \u00e8 estremamente importante. Perch\u00e9 \u00e8 ci\u00f2 che usiamo per trasmettere pensieri ad un'altra persona o a un sistema, come formuliamo una richiesta. La gente su internet discute su quale lingua sia migliore: java o un'altra. Personalmente ho deciso che bisogna scegliere in base al compito, perch\u00e9 tutto questo \u00e8 specifico.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/ea21f52ba5c2d3507e0106715c4ab96d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cominciamo dall'inizio. Cos'\u00e8 PromQL? PromQL \u00e8 il Prometheus Query Language. \u00c8 il modo in cui formiamo le query in Prometheus per ottenere dati sulle serie temporali.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/56b1ef4cc04defdffeea8b2666fdc354.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cosa sono i dati delle serie temporali? Se lo prendiamo letteralmente, ci sono tre parametri. <\/p>\n<p><\/p>\n<p>Essi sono:<\/p>\n<p><\/p>\n<ul>\n<li>A cosa stiamo guardando. <\/li>\n<li>Quando lo stiamo guardando.<\/li>\n<li>E quale valore mostra. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/358a193e889204d28debe1b74b93df3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se guardiamo questo grafico (questo grafico proviene dal mio telefono, che mostra le statistiche dei miei passi), possiamo rapidamente rispondere a queste domande. <\/p>\n<p><\/p>\n<p>Stiamo guardando ai passi. Vediamo un valore e vediamo il tempo in cui lo stiamo osservando. Cio\u00e8, guardando questo grafico \u00e8 facile dire che domenica ho fatto circa 15.000 passi. Questi sono dati delle serie temporali. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/859299ee9d25a3419c869b3ed6db6e72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ora diamo \"un senso\" (trasformiamo) a questi dati in un altro modello, sotto forma di tabella. Qui abbiamo anche ci\u00f2 che stiamo esaminando. Qui ho aggiunto alcuni dati extra, che ci piace chiamare metadati, cio\u00e8 non sono stati elaborati da me, ma da due persone, ad esempio, Jay e Silent Bob. Ecco ci\u00f2 che stiamo esaminando; cosa mostra e quando mostra questo valore. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/fd7b48ea3c25b57c13605e84c4a52a2c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nOra proviamo a memorizzare tutti questi dati in un database. Per esempio, ho preso la sintassi di ClickHouse. Qui creiamo una tabella chiamata \"Steps\", cio\u00e8, ci\u00f2 a cui stiamo guardando. Qui c'\u00e8 il tempo in cui lo stiamo osservando; cosa mostra e alcuni metadati, dove memorizzeremo chi sono: Jay e Silent Bob.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/bd01f9dc0b29d34aacbb8f012710a94f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E per cercare di visualizzare tutto questo, useremo Grafana, perch\u00e9, prima di tutto, \u00e8 bello.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/9f573241e9ae32e31d6d0b879115970b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Utilizzeremo anche questo plugin. Ci sono due motivi per cui. Il primo \u00e8 che l'ho scritto io. E so bene quanto sia difficile estrarre dati di serie temporali da ClickHouse per mostrarli in Grafana. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/29f2d72f9995afb54b23bb7b4230b840.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mostreremo nel Graph Panel. \u00c8 il pannello pi\u00f9 popolare in Grafana, che mostra la dipendenza dei valori nel tempo, quindi abbiamo bisogno solo di due parametri.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/d820f63944ce0112660337b44a6c1f36.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nScriviamo la query pi\u00f9 semplice: come mostrare le statistiche dei passi in Grafana, memorizzando questi dati in ClickHouse, nella tabella che abbiamo creato. Scriviamo quindi una query semplice. Selezioniamo dai passi. Selezioniamo il valore e selezioniamo il tempo di questi valori, cio\u00e8 gli stessi tre parametri di cui abbiamo parlato.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/ad7895105050178de5bc8a154da7e6e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ed ecco il grafico che otterremo. Chi sa perch\u00e9 \u00e8 cos\u00ec strano?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/4a8108737e834cf35b7834be7b4db719.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Esatto, dobbiamo ordinare per tempo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/d37343c7a6a811e2012f1cbae4b9a5d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E alla fine otterremo un grafico un po' migliore, ma ancora strano. Chi sa perch\u00e9? Giusto, ci sono due partecipanti, e in Grafana forniamo due serie temporali, perch\u00e9 se analizziamo di nuovo il modello dei dati, ogni serie temporale \u00e8 una combinazione unica di nome e tutte le chiavi-valori delle etichette.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/f19bf1a9f43ae8de22af6bf7b494902f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quindi dobbiamo scegliere una persona specifica. Scegliamo Jay.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/b6a714d5d6ce4d4b27634da9414aa6f6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E disegniamo di nuovo. Ora il grafico sembra reale. Ora \u00e8 un grafico normale e tutto funziona bene.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/2a93b4cd548239c9314c3283c5b9f488.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E probabilmente sapete come fare pi\u00f9 o meno la stessa cosa, ma in Prometheus attraverso PromQL. Circa in questo modo. Un po' pi\u00f9 semplice. E ancora lo divideremo tutto. Abbiamo preso Steps. E filtriamo per Jay. Qui non specifichiamo che abbiamo bisogno di ottenere il valore e non selezioniamo il tempo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/5e080a1b88c156522af21bf00f3cd641.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ora proviamo a calcolare la velocit\u00e0 di movimento di Jay o Silent Bob. In ClickHouse dovremo fare runningDifference, cio\u00e8 calcolare la differenza tra coppie di punti e dividerle per il tempo, per ottenere la velocit\u00e0 esatta. La query assomiglier\u00e0 a qualcosa del genere.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/13102b04ba4cf0ff9c955c36801044d0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E mostrer\u00e0 valori simili a questi, cio\u00e8 Silent Bob o Jay fanno circa 1,8 passi al secondo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/1c328f99da6f160bdca23ab5f461bda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E in Prometheus sapete anche come farlo. \u00c8 molto pi\u00f9 semplice rispetto a prima.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/a7145785dee9fafcc8ab573e920cb88e.jpeg\" style=\"display:block;margin: 0 auto;\" \/>E per rendere tutto ci\u00f2 ancora pi\u00f9 semplice da fare in Grafana, ho aggiunto un wrapper del genere, che assomiglia molto a PromQL. Si chiama Rate Macros, o come preferite chiamarlo. In Grafana si usa semplicemente \"rate\", ma da qualche parte in profondit\u00e0 si trasforma in una grande query. E non c'\u00e8 bisogno neanche di guardarla, \u00e8 l\u00ec da qualche parte, ma risparmi un sacco di tempo, perch\u00e9 scrivere tali enormi query SQL \u00e8 sempre oneroso. Puoi facilmente commettere un errore e poi non capire a lungo cosa stia succedendo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/511bb35469567b07412a10bb7c0b7312.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ecco una query che nemmeno \u00e8 riuscita a stare in un solo slide e ho dovuto dividerla in due colonne. Questa \u00e8 anche una query in ClickHouse, che fa lo stesso rate, ma su entrambe le serie temporali: sia su Silent Bob che su Jay, per avere due serie temporali nel nostro pannello. E questo \u00e8 gi\u00e0 molto complicato, a mio avviso. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/c9c1e6b58672069370153a151dceef3d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E per Prometheus sar\u00e0 sum (rate). Per ClickHouse ho creato un macro separato che si chiama RateColumns, che appare come una query in Prometheus.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/9743c6a4b3de4aab7cfb5bd3fd50fcfd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Abbiamo dato un'occhiata e sembrava che PromQL fosse fantastico, ma ha sicuramente delle limitazioni.<\/p>\n<p><\/p>\n<p>Essi sono:<\/p>\n<p><\/p>\n<ul>\n<li>SELECT limitato.<\/li>\n<li>JOIN limitati.<\/li>\n<li>Nessun supporto per HAVING.<\/li>\n<\/ul>\n<p><\/p>\n<p>E se hai lavorato a lungo con esso, sai che a volte \u00e8 molto difficile fare qualcosa in PromQL, mentre in SQL si pu\u00f2 fare quasi tutto, perch\u00e9 tutte queste opzioni che abbiamo appena discusso possono essere realizzate in SQL. Ma sarebbe comodo usarle? Questo mi fa pensare che non sempre il linguaggio pi\u00f9 potente sia il pi\u00f9 comodo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/ec8786f1d72a1f8652fa631cdffc9c25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pertanto, a volte \u00e8 necessario scegliere il linguaggio in base alle esigenze. \u00c8 come la battaglia tra Batman e Superman. \u00c8 chiaro che Superman \u00e8 pi\u00f9 forte, ma Batman \u00e8 riuscito a sconfiggerlo perch\u00e9 \u00e8 pi\u00f9 pratico e sapeva esattamente cosa stava facendo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/59e5cb7e54ee14705a9e8a36db6f5541.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E la parte successiva \u00e8 l'estensione di PromQL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/b806acf0e6c7c416614d3fd49004b4be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ancora su VictoriaMetrics. Cos'\u00e8 VictoriaMetrics? \u00c8 un database di serie temporali, \u00e8 open source, distribuiamo le sue versioni singole e in cluster. Secondo i nostri benchmark, \u00e8 il pi\u00f9 veloce attualmente disponibile sul mercato e offre anche una compressione simile, cio\u00e8 persone reali riportano compressioni di circa 0,4 byte per punto, mentre per Prometheus \u00e8 di 1,2-1,4. <\/p>\n<p><\/p>\n<p>Non supportiamo solo Prometheus. Supportiamo InfluxDB, Graphite, OpenTSDB.<\/p>\n<p><\/p>\n<p>Possiamo \"scrivere\" in noi, cio\u00e8 possiamo trasferire dati storici. <\/p>\n<p><\/p>\n<p>E in pi\u00f9 lavoriamo perfettamente con Prometheus e Grafana, cio\u00e8 supportiamo il motore PromQL. E in Grafana puoi semplicemente cambiare l'endpoint di Prometheus in VictoriaMetrics e tutte le tue dashboard funzioneranno come prima. <\/p>\n<p><\/p>\n<p>Ma puoi utilizzare anche funzioni aggiuntive fornite da VictoriaMetrics.<\/p>\n<p><\/p>\n<p>Dar\u00f2 rapidamente uno sguardo alle funzionalit\u00e0 che abbiamo aggiunto.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/78e9c0ce91fad48ab859fc2cf06a0689.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ometti il parametro dell'intervallo \u2013 puoi saltare il parametro dell'intervallo in Grafana. Quando non vuoi ottenere grafici strani durante lo zoom in\/out nel pannello, \u00e8 consigliabile utilizzare la variabile <code>$__interval<\/code>. Questa \u00e8 una variabile interna di Grafana che seleziona autonomamente l'intervallo di dati. E VictoriaMetrics pu\u00f2 capire da sola quale deve essere questo intervallo. Non dovrai aggiornare tutte le tue query. Sar\u00e0 molto pi\u00f9 facile.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/4094c7b8b5e6eef6134b5aa344ef7409.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La seconda funzione \u00e8 il riferimento all'intervallo. Puoi utilizzare questo intervallo nelle tue espressioni. Puoi moltiplicare, dividere, passare e fare riferimento ad esso.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/967ca6166e588987bd69c1e1953dca31.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Poi abbiamo la famiglia delle funzioni rollup. Le funzioni rollup trasformano qualsiasi tuo time series in tre time series separate: min, max e avg. Considero che sia molto comodo, perch\u00e9 a volte pu\u00f2 mostrare alcuni outliers (anomalia) e imprecisioni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/d5ff7d6f6ae8f7550434a3dbbca09b20.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E se semplicemente fai irate o rate, probabilmente potresti trascurare alcuni casi in cui il time series si comporta diversamente da quanto previsto. Con questa funzione \u00e8 molto pi\u00f9 semplice vedere, ad esempio, che il max si discosta notevolmente dall\u2019avg.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/a4e9f0d246fa33459597f7140e09538c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Avanti, la variabile default. Default significa quale valore dobbiamo disegnare in Grafana, se non abbiamo un time series in quel momento. Quando accade? Supponiamo che tu stia esportando una qualche metrica sugli errori. E hai un'app cos\u00ec fantastica che, quando hai iniziato, non hai errori e nemmeno errori nei tre orari successivi o anche nel giorno successivo. E hai cruscotti che mostrano il rapporto tra successi ed errori. E ti mostreranno nulla, perch\u00e9 non hai una metrica sugli errori. Ma in default puoi specificare qualsiasi cosa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/cb4e23199194006186ac6907d2335cf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Keep_last_Value \u2013 mantiene l'ultimo valore della metrica, se \u00e8 scomparsa. Se Prometheus non riesce a trovarla entro 5 minuti dalla successiva scansione, ricorderemo il suo ultimo valore e i tuoi grafici non si romperanno di nuovo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/ca202f8a70f071cbd85b33b98cd28bb5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Scrape_interval \u2013 mostra con quale frequenza Prometheus raccoglie i dati sulla tua metrica, che frequenza ha. Qui puoi vedere un salto, ad esempio. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/9e9f43c7e9ef9a24dcc0b43673558046.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLabel replace \u2013 \u00e8 una funzione popolare. Ma riteniamo che sia un po' complessa, perch\u00e9 richiede molti argomenti. E non solo devi ricordare 5 argomenti, ma devi anche ricordarne l'ordine.<br \/>\n<img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/adfee335e9329f6b03d6f8a42ad8e7b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nQuindi, perch\u00e9 non semplificarli? Cio\u00e8, suddividerli in funzioni pi\u00f9 piccole con una sintassi chiara.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/e928549205018e7405cc2a81970a8514.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E ora viene la parte interessante. Perch\u00e9 consideriamo questo PromQL esteso? Perch\u00e9 supportiamo le Common Table Expressions. Puoi scansionare il codice QR (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/wiki\/ExtendedPromQL\">https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/wiki\/ExtendedPromQL<\/a><\/noindex>), guardare i link con esempi, con playground, dove puoi eseguire query direttamente in VictoriaMetrics senza installarla, semplicemente nel browser.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/33259a4bcd1a92f2cab6e943b73502ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E che cos'\u00e8 esattamente? Questa query in alto \u00e8 una query piuttosto popolare. Penso che in qualsiasi dashboard di molte aziende tu stia utilizzando lo stesso filtro per tutto. Di solito \u00e8 cos\u00ec. Ma quando devi aggiungere un nuovo filtro, devi aggiornare ogni pannello, oppure scaricare la dashboard, aprirla in JSON, fare trova e sostituisci, il che richiede tempo. Perch\u00e9 non mantenere quel valore in una variabile e riutilizzarlo? Questo sembra, dal mio punto di vista, molto pi\u00f9 semplice e comprensibile.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/60aea73cf49934ef7d9a7928a8e2f8e7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ad esempio, quando devo aggiornare i filtri in Grafana in tutte le query, e la dashboard pu\u00f2 essere enorme o potrebbero esserci anche pi\u00f9 dashboard. E come vorrei risolvere questo problema in Grafana?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/7cf9eb13219bbd9a5d3240bdda1839a2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Affronto questo problema in questo modo: creo un commonFilter e in esso definisco questo filtro, poi lo riutilizzo nelle query. Ma se ora fai lo stesso, non funzioner\u00e0, perch\u00e9 Grafana non ti consente di usare variabili all'interno delle variabili di query. Ed \u00e8 un po' strano.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/0b7a40976cb3eeda370518a242f78708.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E quindi ho creato un'opzione che lo consente. E se sei interessato o desideri una funzionalit\u00e0 del genere, supportami o metti un non mi piace se questa idea non ti piace. <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 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/68e3a408ff2b554cdfd61a2da4c75bc0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Proseguendo con PromQL esteso. Qui definiamo non solo una variabile, ma un'intera funzione. E la chiamiamo ru (resource usage). Questa funzione accetta le risorse disponibili, un limite di risorse e un filtro. Sembrerebbe che la sintassi sia tutta semplice. Ed \u00e8 molto facile usare questa funzione e calcolare la percentuale di memoria disponibile. Cio\u00e8, quanta memoria abbiamo, qual \u00e8 il limite e come filtrare. Sembra molto pi\u00f9 comodo se scrivessi tutto questo, riutilizzando gli stessi filtri, perch\u00e9 si trasformerebbe in una grande e complessa query.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/4ca66e18ac665fe1038493709530b82b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ecco un esempio di una richiesta cos\u00ec grande. Proviene dal cruscotto ufficiale di NodeExporter per Grafana. Ma non capisco bene cosa stia succedendo qui. Cio\u00e8, certo, lo capisco se ci si fa attenzione, ma il numero di parentesi pu\u00f2 subito ridurre la motivazione a capire cosa succede. E perch\u00e9 non renderlo pi\u00f9 semplice e chiaro?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/50e01e7f0c1d03965b028266130413f0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ad esempio, in questo modo, evidenziando le cose o le parti significative in variabili. E poi effettuando la propria matematica di base. Questo \u00e8 gi\u00e0 pi\u00f9 simile alla programmazione, \u00e8 quello che vorrei vedere in futuro in Grafana.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/81f957d89f97ebf686abdf969982d3ba.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ecco un secondo esempio di come potremmo semplificare ulteriormente, se avessimo gi\u00e0 questa funzione ru, che \u00e8 gi\u00e0 disponibile direttamente in VictoriaMetrics. E quindi si passa semplicemente il valore memorizzato nella cache che si \u00e8 dichiarato nel CTE.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/415302741e14232228353db6ec57a2e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ho gi\u00e0 parlato di quanto sia importante utilizzare il linguaggio di programmazione giusto. E probabilmente, in ogni azienda, si fanno cose diverse in Grafana. E probabilmente concedete anche l'accesso a Grafana ai vostri sviluppatori, che fanno qualcosa di loro. E tutti lo fanno in modo un po' diverso. Sarebbe bello se si potesse fare in modo uniforme, cio\u00e8 ridurlo a uno standard comune.<\/p>\n<p><\/p>\n<p>Supponiamo che tu abbia non solo ingegneri di sistema, magari hai anche esperti, devops o SRE. Magari hai esperti che sanno cos'\u00e8 il monitoraggio, sanno cos'\u00e8 Grafana, cio\u00e8 lavorano con questo da anni e sanno esattamente come fare le cose nel modo giusto. E lo hanno gi\u00e0 scritto 100 volte e spiegato a tutti, ma per qualche motivo nessuno ascolta.<\/p>\n<p><\/p>\n<p>E se potessero mettere direttamente queste conoscenze in Grafana, affinch\u00e9 altri utenti potessero riutilizzare le funzioni? E se fosse necessario calcolare la percentuale di memoria libera, semplicemente applicerebbero la funzione. E se i creatori degli exporter, insieme al loro prodotto, fornissero anche un insieme di funzioni su come lavorare con le loro metriche, perch\u00e9 sanno esattamente di che metriche si tratta e come calcolarle correttamente?<\/p>\n<p><\/p>\n<p>In realt\u00e0, questo non esiste. Questo l'ho fatto io stesso. \u00c8 il supporto delle librerie in Grafana. Supponiamo che i ragazzi che hanno fatto NodeExporter abbiano creato ci\u00f2 di cui ho parlato. E abbiano anche fornito un insieme di funzioni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/755391ee41fd2abf4cb74fad17cecaf0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cio\u00e8, appare pi\u00f9 o meno cos\u00ec. Colleghi questa libreria in Grafana, apri il modo di modifica e qui c'\u00e8 scritto molto semplicemente in JSON come lavorare con questa metrica. Cio\u00e8, un insieme di funzioni, la loro descrizione e in cosa si traducono.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/78a85dd219a421757807be895c173a39.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Penso che potrebbe essere utile, perch\u00e9 in quel caso scriveresti semplicemente in Grafana. E Grafana ti \"dice\" che c'\u00e8 una funzione di questa libreria \u2013 usiamola. Mi sembra che sarebbe davvero fantastico.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/6e6b2b459c574d95d56251cd5fae5586.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Un po' su VictoriaMetrics. Facciamo molte cose interessanti. Leggi i nostri articoli sulla compressione, sulle nostre competizioni con altre applicazioni di dati a serie temporale, la nostra spiegazione su come lavorare con PromQL, perch\u00e9 ci sono ancora molti principianti, e anche sulla scalabilit\u00e0 verticale e sulla competizione con Thanos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00abExtendedPromQL\u00bb \u2014 interpretazione della relazione di Roman Khavronenko\" src=\"\/wp-content\/uploads\/2020\/03\/562829a25ee6131c7eaed8c561c6927c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Domande:<\/p>\n<p><\/p>\n<p><em>Inizier\u00f2 la mia domanda con una semplice storia di vita. Quando ho iniziato a usare Grafana per la prima volta, ho scritto una query molto convincente di cinque righe. Alla fine \u00e8 venuto fuori un grafico molto convincente. Questo grafico \u00e8 quasi entrato in produzione. Ma a un esame pi\u00f9 attento, si \u00e8 scoperto che questo grafico mostra un'assurdit\u00e0 assoluta, senza alcun legame con la realt\u00e0, anche se i numeri rientrano nell'intervallo che ci aspettavamo di vedere. E la mia domanda \u00e8: abbiamo le librerie, abbiamo le funzioni, ma come scriviamo test per Grafana? Hai scritto una query complessa su cui dipende una decisione aziendale \u2013 ordinare un vero contenitore di server o non ordinare. E come sappiamo che questa funzione, che disegna il grafico, assomiglia alla verit\u00e0. Grazie.<\/em><\/p>\n<p><\/p>\n<p>Grazie per la domanda. Ci sono due parti. La prima \u2013 ho l'impressione, basandomi sulla mia esperienza, che la maggior parte degli utenti, quando guarda i propri grafici, non capisce cosa stiano mostrando. Per qualche motivo, le persone sono molto brave a inventare scuse per qualsiasi anomalia che si verifica nei grafici, anche se \u00e8 un errore all'interno della funzione. E la seconda parte \u2013 mi sembra che l'utilizzo di funzioni come queste si adattasse molto meglio alla soluzione del tuo problema, piuttosto che ogni tuo sviluppatore faccia la propria pianificazione della capacit\u00e0 e commetta errori con una certa probabilit\u00e0.<\/p>\n<p><\/p>\n<p><em>Come verificare?<\/em><\/p>\n<p><\/p>\n<p>Come verificare? Probabilmente, non si pu\u00f2. <\/p>\n<p><\/p>\n<p><em>Sotto forma di test in Grafana.<\/em><\/p>\n<p><\/p>\n<p>Che c'entra Grafana? Grafana traduce questa query direttamente nel DataSource.<\/p>\n<p><\/p>\n<p><em>Aggiungendo un po' ai parametri.<\/em><\/p>\n<p><\/p>\n<p>No, in Grafana non vengono aggiunti elementi. Ci possono essere parametri GET, come ad esempio step. Non \u00e8 specificato esplicitamente, ma puoi sovrascriverlo, puoi anche non farlo, ma viene aggiunto automaticamente. Qui non potrai scrivere dei test. Penso che non sia il caso di fare affidamento su Grafana come fonte di verit\u00e0.<\/p>\n<p><\/p>\n<p><em>Grazie per la relazione! Grazie per la compressione! Hai menzionato il mapping della variabile nel grafico, che in Grafana non si pu\u00f2 utilizzare una variabile dentro un'altra variabile. Capisci a cosa mi riferisco?<\/em><\/p>\n<p><\/p>\n<p>S\u00ec.<\/p>\n<p><\/p>\n<p><em>Era inizialmente un problema quando volevo creare un alert in Grafana. E l\u00ec bisogna fare alert per ogni singolo host. Quella cosa che hai fatto, funziona per gli alert in Grafana?<\/em><\/p>\n<p><\/p>\n<p>Se Grafana non gestisce le variabili in modo diverso, allora s\u00ec, funzioner\u00e0. Ma il mio consiglio \u00e8 di non usare affatto l'alerting in Grafana, \u00e8 meglio utilizzare Alertmanager.<\/p>\n<p><\/p>\n<p><em>S\u00ec, lo utilizzo, ma semplicemente in Grafana \u00e8 sembrato pi\u00f9 facile configurarli, ma grazie per il consiglio!<\/em><\/p>\n<p>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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 trascrizione della relazione di Roman Khavronenko | ProHoster","description":"Ti invitiamo a prendere visione della trascrizione della relazione di Roman Khavronenko \"ExtendedPromQL\"","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/extendedpromql-rasshifrovka-doklada-romana-havronenko","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/75585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=75585"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/75585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/75586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=75585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=75585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=75585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}