Ini ndinokurudzira kuti uverenge zvinyorwa zve Roman Khavronenko's report "ExtendedPromQL"
Muchidimbu pamusoro pangu. Zita rangu ndinonzi Roman. Ini ndinoshanda kuCloudFlare uye ndinogara muLondon. Asi ini zvakare ndiri muchengeti weVictoriaMetrics.
Uye ndini munyori
Tichatanga nechikamu chekutanga, chinodaidzwa kuti βMatambudziko eShanduroβ uye mariri ndichataura nezvenyaya yekuti chero mutauro kana kunyange mutauro wekutaurirana wakakosha. Nekuti aya ndiwo matauriro aunoita pfungwa dzako kune mumwe munhu kana system, magadzirirwo aunoita chikumbiro. Vanhu vari paInternet vanopokana pamusoro pekuti ndeupi mutauro uri nani - java kana mumwewo. Ini pachangu, ndakasarudza kuti ndinofanira kusarudza maererano nebasa, nokuti izvi zvose zvakananga.
Ngatitangei kubva pakutanga. Chii chinonzi PromQL? PromQL iPrometheus Query Mutauro. Aya ndiwo maitiro atinoita mibvunzo muPrometheus kuti uwane data yenguva.
Chii chinonzi time series data? Chaizvoizvo, aya maparameter matatu.
Izvi ndezvekuti:
- Tiri kutarisa chii?
- Kana tikazvitarisa.
- Uye inoratidzira ukoshii?
Kana iwe ukatarisa ichi chati (iyi chati inobva pafoni yangu inoratidza nhanho dzangu nhamba), inogona kukurumidza kupindura iyi mibvunzo.
Tinotarisa pamatanho. Tinoona zvazvinoreva uye tinoona nguva yatinozvitarisa. Ndiko, kutarisa dhiyagiramu iyi, unogona kutaura zviri nyore kuti neSvondo ndakafamba nhanho dzinenge gumi neshanu. Iyi inguva yedata data.
Iye zvino ngati "paradzanise" (shandura) kuti ive imwe data data muchimiro chetafura. Pano tinewo zvatiri kutarisa. Pano ini ndakawedzera imwe data yakawedzera, yatichadana meta-data, i.e. handisi ini ndakapfuura neizvi, asi vanhu vaviri, semuenzaniso, Jay naSilent Bob. Izvi ndizvo zvatiri kutarisa; rinoratidzei uye rinoratidza kukosha ikoko riini.
Zvino ngatiedzei kuchengeta iyi data yese mudhatabhesi. Semuenzaniso, ndakatora iyo ClickHouse syntax. Uye pano tinogadzira tafura imwe inonzi "Matanho", i.e. zvatiri kutarisa. Pane nguva yatinozvitarisa; zvazvinoratidza uye imwe meta data kwatichachengeta kuti ndiani: Jay naSilent Bob.
Uye kuyedza kuona zvese izvi, tichashandisa Grafana nekuti, chekutanga pane zvese, yakanaka.
Tichashandisawo plugin iyi. Pane zvikonzero zviviri zveizvi. Chekutanga ndechekuti ndakachinyora. Uye ini ndinonyatsoziva kuti zvakaoma sei kudhonza data data kubva kuClickHouse kuiratidza muGrafana.
Tichazviratidzira muGrafu Panel. Iri ndiro rinonyanya kufarirwa mapaneru muGrafana, rinoratidza kutsamira kwekukosha nenguva, saka isu tinongoda ma paramita maviri chete.
Ngatinyorei mubvunzo wakareruka - maitiro ekuratidza nhanho nhamba muGrafana, kuchengetedza iyi data muClickHouse, mutafura yatakagadzira. Uye isu tinonyora ichi chikumbiro chiri nyore. Tinosarudza kubva pamatanho. Isu tinosarudza kukosha uye tinosarudza nguva yezvinokosha izvi, i.e. maparamita matatu akafanana atakataura nezvawo.
Uye semhedzisiro, isu tichawana girafu rakadai. Ndiani anoziva kuti nei achishamisa?
Ndizvozvo, tinofanira kuronga nenguva.
Uye pakupedzisira tichawana iri nani, asi ichiri kushamisa hurongwa. Ndiani anoziva chikonzero nei? Ndizvozvo, kune vatori vechikamu vaviri, uye isu kuGrafana tinopa nguva mbiri dzakatevedzana, nokuti kana iwe ukatarisa pamuenzaniso wedata zvakare, ipapo nguva imwe neimwe yakatevedzana isanganiswa yakasiyana-siyana yezita uye mazita ose e-key-value.
Nokudaro, tinofanira kusarudza munhu chaiye. Tinosarudza Jay.
Uye ngatidhirowe zvakare. Iye zvino girafu rinoratidzika sechokwadi. Iye zvino iyi inguva yakajairwa uye zvese zviri kushanda nemazvo.
Uye iwe unogona kunge unoziva kuita zvakangoita chinhu chimwe chete, asi muPrometheus kuburikidza nePromQL. Chinhu chakadai. Zviri nyore zvishoma. Uye ngatiputse zvose pasi. Takatora Matanho. Uye sefa naJay. Hatisi kutsanangura pano kuti tinoda kuwana kukosha uye hatisi kusarudza nguva.
Zvino ngatiedzei kuverenga kumhanya kwekufamba kwaJay kana Silent Bob. MuClickHouse isu tichada kuita runningDifference, kureva kuverenga mutsauko pakati pemapoinzi emapoinzi uye tigovagovera nenguva kuti tiwane kumhanya chaiko. Chikumbiro chichaita seizvi.
Uye icharatidza zvingangoita izvi zvakakosha, kureva kuti Silent Bob kana Jay anotora angangoita nhanho 1,8 pasekondi.
Uye muPrometheus iwe unoziva kuita izvi zvakare. Zviri nyore kupfuura zvazvaive kare.
Uye kuita kuti zvive nyore kuita muGrafana, ndakawedzera iyi wrapper, inotaridzika chaizvo yakafanana nePromQL. Inonzi Rate Macros kana chero chaunoda kuidaidza. MuGrafana unongonyora "chiyero", asi pane imwe nzvimbo yakadzika inoshandura kuita ichi chikumbiro chikuru. Uye iwe haufanirwe kutombozvitarisa, iripo kumwe kunhu, asi unochengetedza nguva yakawanda, nekuti kunyora mikuru yakadai yeSQL mibvunzo inogara ichidhura. Unogona kukanganisa nyore nyore uye wobva watadza kunzwisisa zviri kuitika kwenguva yakareba.
Uye ichi chikumbiro chaisatombokwana mune imwe siraidhi uye ndakatozoipatsanura kuita makoramu maviri. Ichi zvakare chikumbiro muClickHouse, iyo inoita chiyero chakafanana, asi kune ese ari maviri akateedzana: Silent Bob naJay, kuti isu tive nekaviri nguva dzakateerana pane panhi. Uye izvi zvatove zvakaoma zvikuru, mumaonero angu.
Uye maererano naPrometheus ichava sum (chiyero). YeClickHouse, ndakagadzira yakaparadzana macro inonzi RateColumns, inoita senge mubvunzo muPrometheus.
Isu takazvitarisa uye zvinoita sekunge PromQL inotonhorera, asi ine, hongu, isingakwanisi.
Izvi ndezvekuti:
- Limited SELECT.
- Borderline JOINs.
- HAPANA KUVA nerutsigiro.
Uye kana wakashanda nayo kwenguva yakareba, saka iwe unoziva kuti dzimwe nguva zvakaoma zvikuru kuita chimwe chinhu muPromQL, asi muSQL unogona kuita zvinenge zvese, nokuti zvose izvi zvingasarudzwa zvatichangobva kutaura zvinogona kuitwa muSQL. . Asi zvingava nyore kuishandisa here? Uye izvi zvinondiita kuti ndifunge kuti mutauro une simba zvakanyanya ungasave wakanyanya kunaka.
Nokudaro, dzimwe nguva unoda kusarudza mutauro webasa racho. Zvakafanana naBatman achirwa naSuperman. Zviri pachena kuti Superman ane simba, asi Batman akakwanisa kumukunda nokuti anonyanya kushanda uye aiziva chaizvo zvaaiita.
Uye chikamu chinotevera chiri Kuwedzera PromQL.
Zvekare zvakare nezve VictoriaMetrics. Chii chinonzi VictoriaMetrics? Iyi inguva yakatevedzana dhatabhesi, iri muOpenSource, isu tinogovera yayo imwechete uye sumbu shanduro. Zvinoenderana nemabhenji edu, inokurumidza kupfuura chero chinhu chiri pamusika izvozvi uye kudzvanywa kwakafanana, i.e. vanhu chaivo vanoshuma kudzvanywa kweanosvika 0,4 bytes poindi, nepo Prometheus iri 1,2-1,4.
Isu tinotsigira zvinopfuura Prometheus chete. Isu tinotsigira InfluxDB, Graphite, OpenTSDB.
Iwe unogona "kunyora" kwatiri, ndiko kuti, unogona kutamisa data yekare.
Uye isu tinoshandawo zvakakwana nePrometheus naGrafana, kureva kuti tinotsigira injini yePromQL. Uye muGrafana unogona kungochinja Prometheus endpoint kuVictoriaMetrics uye ese madhibhodhi ako anoshanda sezvavakaita.
Asi iwe unogona zvakare kushandisa mamwe maficha ayo VictoriaMetrics anopa.
Tichakurumidza kuenda kuburikidza nemaitiro atakawedzera.
Omit interval param - unogona kusiya maparamita epakati muGrafana. Paunenge usingadi kuwana magirafu asinganzwisisike paunenge uchiswedera mukati / kunze mupaneti, zvinokurudzirwa kushandisa shanduko. $__interval
. Iyi ishanduko yemukati yeGrafana uye inosarudza iyo data renji pachayo. Uye VictoriaMetrics pachayo inogona kunzwisisa kuti chiyero ichi chinofanira kunge chiri chii. Uye haufanire kuvandudza zvese zvaunokumbira. Zvichava nyore zvikuru.
Basa rechipiri ireferensi yenguva. Unogona kushandisa nguva iyi mumatauriro ako. Iwe unogona kuwanda, kupatsanura, kutamisa, kunongedzera kwairi.
Inotevera ndeye rollup basa mhuri. Iyo Rollup basa inoshandura chero yako yenguva yakatevedzana kuita matatu akaparadzana nguva akateedzana. Aya ndiwo min, max uye avg. Ini ndinoona izvi zviri nyore nekuti dzimwe nguva zvinogona kuratidza zvimwe zvekunze uye zvisizvo.
Uye kana iwe uchingoita kutsamwa kana chiyero, saka ungangopotsa dzimwe nyaya apo iyo nguva yakatevedzana isingaite sezvawaitarisira. Nebasa iri zviri nyore kuona, ngatiti max akanyanya kubva avg.
Inotevera ndeye default variable. Default - izvi zvinoreva kukosha kwatinoda kudhirowa muGrafana kana tisina nguva yakatevedzana parizvino. Izvi zvinoitika rinhi? Ngatitii uri kuendesa kunze kumwe kukanganisa metrics. Uye iwe une inotonhorera application zvekuti paunotanga, hauna zvikanganiso uye kana zvikanganiso zvemaawa matatu anotevera kana kunyange zuva. Uye iwe une madhibhodhi anoratidza hukama kubva pakubudirira kusvika pakukanganisa. Uye hapana chavanokuratidza nekuti hauna metric yekukanganisa. Uye mukutadza iwe unogona kutsanangura chero chinhu.
Keep_last_Value - inochengetedza kukosha kwekupedzisira kwemetric kana isipo. Kana Prometheus akasaiwana mukati me5 maminetsi mushure meiyo inotevera scrape, saka pano isu ticharangarira kukosha kwayo kwekupedzisira uye machati ako haaparare zvakare.
Scrape_interval - inoratidza kangani Prometheus inounganidza data pane metric yako, uye neakawanda sei. Pano iwe unogona kuona kupasa, semuenzaniso.
Label replacement chinhu chakakurumbira. Asi isu tinofunga kuti zvakati kuomesesa nekuti zvinotora nharo dzese. Uye iwe haufanirwe kungoyeuka 5 nharo chete, asiwo yeuka kutevedzana kwavo.
Naizvozvo, wadii kuita kuti zvive nyore? Ndiko kuti, iparadze kuita diki mabasa ane inonzwisisika syntax.
Uye zvino chikamu chinonakidza. Sei tichifunga kuti iyi yakawedzerwa PromQL? Nekuti isu tinotsigira Common Table Expressions. Unogona kutevera QR kodhi (
Uye chii ichi? Chikumbiro chiri pamusoro ichi chikumbiro chine mukurumbira. Ini ndinofunga mune chero dashboard mumakambani mazhinji unoshandisa iyo yakafanana sefa kune zvese. Kazhinji zvakadaro. Asi kana iwe uchida kuwedzera imwe sefa nyowani, iwe unofanirwa kugadzirisa yega pani, kana kurodha dashboard, vhura muJSON, tsvaga kutsiva, izvo zvinotorawo nguva. Wadii kuchengeta kukosha uku mukuchinja uye kuishandisa zvakare? Izvi zvinotaridzika, mumaonero angu, zvakanyanya nyore uye zvakajeka.
Semuyenzaniso, pandinenge ndichida kugadzirisa mafirita muGrafana mune zvese zvikumbiro, uye dashboard inogona kunge yakakura kana panogona kunge paine akati wandei. Uye ndingade sei kugadzirisa dambudziko iri muGrafana?
Ini ndinogadzirisa dambudziko iri nenzira iyi: Ini ndinogadzira commonFilter uye ndinotsanangura iyi sefa mairi, uye ndoishandisa zvakare mumibvunzo. Asi kana iwe ukaita zvimwe chete izvozvi, hazvishande nekuti Grafana haakubvumidze kushandisa zvinosiyana mukati memubvunzo zvakasiyana. Uye zvinoshamisa zvishoma.
Uye saka ndakagadzira sarudzo inobvumidza iwe kuita izvi. Uye kana iwe uchifarira kana uchida chimiro chakadaro, saka chitsigire kana kusachifarira kana iwe usingade iyi pfungwa.
Zvimwe pamusoro pePromQL yakawedzerwa. Pano tinotsanangura kwete chete shanduko, asi basa rose. Uye isu tinoidaidza kuti ru (kushandisa zviwanikwa). Uye basa iri rinogamuchira zviwanikwa zvemahara, zviwanikwa zvinodzora uye sefa. Syntax inoita kunge iri nyore. Uye zviri nyore kwazvo kushandisa basa iri uye kuverenga chikamu chemahara ndangariro yatinayo. Ndiko kuti, ingani ndangariro yatinayo, chii chinogumira uye sei kusefa. Zvinotaridzika zviri nyore kana ukazvinyora zvese, uchishandisazve mafirita mamwe chete, nekuti zvinoshanduka kuita mubvunzo muhombe, muhombe.
Uye heino muenzaniso wechikumbiro chikuru, chikuru. Inobva kune yepamutemo NodeExporter dashboard yeGrafana. Asi handisi kunzwisisa zviri kuitika pano. Ndiko, hongu, ndinonzwisisa kana iwe ukanyatsotarisa, asi nhamba yevabereki inogona kuderedza pakarepo kukurudzira kunzwisisa zviri kuitika pano. Uye wadii kuita kuti zvive nyore uye zvakajeka?
Semuyenzaniso, sezvizvi, kupatsanura zvakakosha kana zvikamu kuita zvinosiyana. Wozoita masvomhu ako ekutanga. Izvi zvatonyanya kufanana nehurongwa, izvi ndizvo zvandinoda kuona mune ramangwana muGrafana.
Heino muenzaniso wechipiri wekuti tingaite sei kuti izvi zvinyanye kuve nyore kana isu tatova neru shandiso, uye yatovepo zvakananga muVictoriaMetrics. Uye iwe wobva wangopfuudza iyo cached kukosha yawakazivisa muCTE.
Ndakatotaura nezvekukosha kwazvakaita kushandisa mutauro wemapurogiramu chaiwo. Uye, pamwe, kambani yese muGrafana ine chimwe chinhu chakasiyana chiri kuitika. Uye iwe unogona zvakare kupa mukana kuGrafana kune vako vanogadzira, uye vanogadzira vanoita zvavo zvinhu. Uye vose vanozviita neimwe nzira. Asi ini ndaida kuti ive neimwe nzira, ndiko kuti, kuidzikisa kune yakajairika mwero.
Ngatiti iwe hauna kana mainjiniya ehurongwa chete, pamwe unotova nenyanzvi, devops kana SRE. Pamwe une nyanzvi dzinoziva chinonzi monitoring, vanoziva chinonzi Grafana, kureva kuti vanga vachishanda nayo kwemakore uye vanonyatsoziva maitirwo acho. Uye vakatonyora izvi ka100 uye vakatsanangura kumunhu wese, asi nekuda kwechimwe chikonzero hapana anoteerera.
Ko kana vakakwanisa kuisa ruzivo urwu zvakananga muGrafana kuitira kuti vamwe vashandisi vashandise zvakare maficha? Uye kana ivo vaida kuverenga chikamu chemahara memory, vaingoshandisa basa racho. Ko kana vagadziri vevanotengesa kunze kwenyika, pamwe nechigadzirwa chavo, vakapawo seti yemabasa ekushanda nemametric avo, nekuti vanonyatsoziva kuti aya mametrics chii uye kuti angaaverenga sei nemazvo?
Izvi hazvipo chaizvo. Izvi ndizvo zvandakaita ini. Iyi itsigiro yeraibhurari muGrafana. Toti vakomana vakaita NodeExporter vakaita zvandakataura nezvazvo. Uye vakapawo seti yemabasa.
Ndiko kuti, zvinotaridzika seizvi. Iwe unobatanidza raibhurari iyi kuGrafana, unoenda mukugadzirisa uye zvakanyorwa zvakapusa muJSON maitiro ekushanda neiyi metric. Kureva, mamwe seti yemabasa, tsananguro yavo uye zvavanoshandura kuita.
Ndinofunga izvi zvinogona kubatsira, nekuti ipapo muGrafana unganyora saizvozvo. Uye Grafana "anokuudza" kuti kune rakadaro uye rakadaro basa kubva kune rakadaro uye rakadaro raibhurari - ngatishandisei. Ndinofunga kuti zvingave zvakanaka.
Zvishoma nezve VictoriaMetrics. Tinoita zvinhu zvakawanda zvinofadza. Verenga zvinyorwa zvedu nezve compression, nezve makwikwi edu nedzimwe nguva dzakateedzana data application, tsananguro yedu yekushanda nePromQL, nekuti pachine vazhinji vanotanga mune izvi, pamwe nezve vertical scalability uye nezve kunetsana naThanos.
Mibvunzo:
Ndichatanga mubvunzo wangu nenyaya yeupenyu yakapfava. Pandakatanga kushandisa Grafana, ndakanyora mubvunzo une simba waive wakareba mitsetse mishanu. Mhedzisiro yacho igirafu inogutsa zvikuru. Iyi purogiramu yave kuda kupinda mukugadzirwa. Asi pakunyatsotarisisa, zvakazoitika kuti girafu iyi inoratidza zvisina musoro zvisina chekuita nechokwadi, kunyangwe manhamba achiwira mukati meiyo yataitarisira kuona. Uye mubvunzo wangu. Tine maraibhurari, tine mabasa, asi tinonyora sei bvunzo dzeGrafana? Iwe wakanyora chikumbiro chakaoma pane icho bhizinesi sarudzo inotsamira - kuraira mudziyo chaiwo wemaseva kana kusaraira. Uye sezvatinoziva, basa iri rinodhirowa girafu rakafanana nechokwadi. Ndatenda.
Ndatenda nemubvunzo. Pane zvikamu zviviri. Kutanga, ndinowana fungidziro, zvichienderana neruzivo rwangu, kuti vashandisi vazhinji, pavanotarisa machati avo, havanzwisise zvavari kuvaratidza. Nechimwe chikonzero, vanhu vakanaka kwazvo pakuuya nechikonzero chechero kusanzwisisika kunoitika mumagirafu, kunyangwe iri kukanganisa mukati mebasa. Uye chikamu chechipiri - zvinoratidzika kwandiri kuti kushandisa mabasa akadaro ingava nzira iri nani yekugadzirisa dambudziko rako, panzvimbo yekuti mumwe nemumwe wevagadziri vako vaite yavo yekugona kuronga uye kuita zvikanganiso neimwe mukana.
Maitiro ekutarisa?
Nzira yekuongorora? Zvimwe kwete.
Semuyedzo muGrafana.
Grafana inei nazvo? Grafana anoshandura chikumbiro ichi zvakananga kuDataSource.
Kuwedzera zvishoma kune parameters.
Kwete, hapana chinowedzerwa kuGrafana. Panogona kunge paine GET paramita, senge, toti, nhanho. Hazvina kutaurwa zvakajeka, asi iwe unogona kuzvidarika, kana kuti haugone kuzvidarika, asi zvinowedzerwa otomatiki. Iwe hausi kuzonyora bvunzo pano. Handifunge kuti tinofanira kuvimba neGrafana sesosi yechokwadi pano.
Ndatenda nemushumo! Ndatenda nekumanikidza! Wataura kumepu kusiyanisa mugirafu, kuti muGrafana haugone kushandisa shanduko mukati mekusiyana. Unoziva zvandiri kureva here?
Hongu.
Izvi pakutanga zvairwadza musoro pandakada kugadzira yambiro muGrafana. Uye ipapo iwe unofanirwa kuita yambiro kune yega yega saiti zvakasiyana. Chinhu chawagadzira ichi, chinoshanda kune chenjedzo muGrafana?
Kana Grafana ikasawana zvinosiyana zvakasiyana, hongu, zvichashanda. Asi zano rangu nderekuti usashandise yambiro muGrafana zvachose, uri nani kushandisa alertmanager.
Hongu, ndinoishandisa, asi zvakangoita sezviri nyore kumisikidza muGrafana, asi ndatenda nezano!
Source: www.habr.com