"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Mwen sijere ou li transkripsyon rapò Roman Khavronenko "ExtendedPromQL"

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Yon ti tan sou mwen. Non mwen se Roman. Mwen travay nan CloudFlare epi mwen ap viv nan Lond. Men, mwen menm tou yon moun ki kenbe VictoriaMetrics.
Epi mwen se otè a Plugin ClickHouse pou Grafana ak Klike sou House-proxy se yon ti prokurasyon pou ClickHouse.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Nou pral kòmanse ak premye pati a, ki rele "Difikilte nan tradiksyon" epi nan li mwen pral pale sou lefèt ke nenpòt lang oswa menm jis yon lang nan kominikasyon trè enpòtan. Paske sa a se fason ou transmèt panse ou bay yon lòt moun oswa sistèm, ki jan ou fòmile yon demann. Moun sou entènèt la diskite sou ki lang ki pi bon - java oswa kèk lòt. Pou tèt mwen, mwen deside ke mwen bezwen chwazi dapre travay la, paske tout bagay sa yo se espesifik.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ann kòmanse depi nan kòmansman an. ki sa ki PromQL? PromQL la vle di Prometheus Query Language. Men ki jan nou fòme demann nan Prometheus pou jwenn done seri tan.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ki sa ki done seri tan? Literalman, sa yo se twa paramèt.

Sa yo se:

  • Kisa nap gade?
  • Lè nou gade li.
  • Ak ki valè li montre?

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Si w gade tablo sa a (tablo sa a soti nan telefòn mwen an ki montre estatistik etap mwen an), li ka byen vit reponn kesyon sa yo.

Nou gade etap yo. Nou wè siyifikasyon an epi nou wè tan an lè nou gade li. Sa vle di, gade dyagram sa a, ou ka byen fasil di ke nan Dimanch mwen te mache sou 15 etap. Sa a se done seri tan.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Koulye a, kite a "divize" (konvèti) yo nan yon lòt modèl done nan fòm lan nan yon tab. Isit la nou gen tou sa nou ap gade. Isit la mwen te ajoute yon ti done adisyonèl, ke nou pral rele meta-done, sa vle di se pa m 'ki te ale nan sa a, men de moun, pou egzanp, Jay ak Silent Bob. Se sa n ap gade; ki sa li montre ak ki lè li montre valè sa a.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko
Koulye a, ann eseye estoke tout done sa yo nan yon baz done. Pou egzanp, mwen te pran sentaks ClickHouse la. Epi isit la nou kreye yon tab ki rele "Etap", sa vle di sa n ap gade. Gen yon tan lè nou gade li; sa li montre ak kèk meta done kote nou pral estoke ki moun li ye: Jay ak Silent Bob.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

E pou nou eseye visualize tout bagay sa yo, nou pral sèvi ak Grafana paske, anvan tout bagay, li bèl.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Nou pral sèvi ak plugin sa a tou. Gen de rezon pou sa. Premye a se paske mwen te ekri li. Epi mwen konnen egzakteman ki jan li difisil pou rale done seri tan ki soti nan ClickHouse pou montre li nan Grafana.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Nou pral montre li nan Panèl Grafik la. Sa a se panèl ki pi popilè nan Grafana, ki montre depandans yon valè sou tan, kidonk nou sèlman bezwen de paramèt.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko
Ann ekri rechèch ki pi senp la - ki jan yo montre estatistik etap nan Grafana, estoke done sa yo nan ClickHouse, nan tablo nou te kreye a. Epi nou ekri demann sa a senp. Nou chwazi nan etap. Nou chwazi yon valè epi chwazi tan valè sa yo, sa vle di menm twa paramèt nou te pale de yo.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Epi kòm yon rezilta, nou pral jwenn yon graf tankou sa a. Ki moun ki konnen poukisa li etranj konsa?

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Se vre, nou bezwen triye pa tan.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ak nan fen a nou pral jwenn yon pi bon, men yo toujou etranj orè. Ki moun ki konnen poukisa? Se vre, gen de patisipan, e nou nan Grafana bay de seri tan, paske si ou gade nan modèl done a ankò, Lè sa a, chak seri tan se yon konbinezon inik nan non ak tout etikèt kle-valè.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Se poutèt sa, nou bezwen chwazi yon moun espesifik. Nou chwazi Jay.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Epi ann desine ankò. Kounye a graf la sanble ak verite a. Koulye a, sa a se yon orè nòmal ak tout bagay ap travay byen.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Epi pwobableman ou konnen ki jan fè apeprè menm bagay la, men nan Prometheus atravè PromQL. Yon bagay tankou sa a. Yon ti kras pi senp. Epi ann kraze tout bagay. Nou te pran Etap. Epi filtre pa Jay. Nou pa espesifye isit la ke nou bezwen jwenn yon valè epi nou pa chwazi yon tan.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Koulye a, ann eseye kalkile vitès mouvman Jay oswa Silent Bob. Nan ClickHouse nou pral bezwen fè runningDifference, sa vle di kalkile diferans ki genyen ant pè pwen epi divize yo pa tan pou jwenn vitès egzak la. Demann lan pral sanble yon bagay tankou sa a.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Epi li pral montre apeprè valè sa yo, sa vle di Silent Bob oswa Jay pran apeprè 1,8 etap pou chak segonn.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ak nan Prometheus ou konnen ki jan fè sa tou. Pi fasil pase sa li te ye anvan.

"ExtendedPromQL" - transkripsyon rapò Roman KhavronenkoEpi pou fè li tou fasil pou fè nan Grafana, mwen te ajoute wrapper sa a, ki sanble anpil ak PromQL. Li rele Macros Pousantaj oswa kèlkeswa sa ou vle rele li. Nan Grafana ou senpleman ekri "to", men yon kote nan fon li transfòme nan gwo demann sa a. Epi ou pa menm bezwen gade nan li, li la yon kote, men ou ekonomize anpil tan, paske ekri demann SQL sa yo se toujou chè. Ou ka byen fasil fè yon erè epi Lè sa a, pa konprann sa k ap pase pou yon tan long.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ak sa a se yon demann ki pa t 'menm anfòm nan yon sèl glisad e mwen te menm te fann li nan de kolòn. Sa a se tou yon demann nan ClickHouse, ki fè menm pousantaj, men pou tou de seri tan: Silent Bob ak Jay, pou nou gen de seri tan sou panèl la. Ak sa a se deja trè difisil, nan opinyon mwen.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ak dapre Prometheus li pral sòm (pousantaj). Pou ClickHouse, mwen te fè yon makro separe ki rele RateColumns, ki sanble ak yon rechèch nan Prometheus.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Nou gade li epi li sanble ke PromQL tèlman fre, men li gen, nan kou, limit.

Sa yo se:

  • Limite SELECT.
  • Borderline JOIN.
  • Pa gen sipò.

Men, si ou te travay avèk li pou yon tan long, Lè sa a, ou konnen ke pafwa li trè difisil fè yon bagay nan PromQL, men nan SQL ou ka fè prèske tout bagay, paske tout opsyon sa yo ke nou jis te pale sou yo ta ka fè nan SQL. . Men, èske li ta bon pou itilize li? Epi sa fè m panse ke lang ki pi pwisan an pa toujou pi pratik.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Se poutèt sa, pafwa ou bezwen chwazi yon lang pou travay la. Se tankou Batman goumen devni selèb. Li klè ke devni selèb pi fò, men Batman te kapab defèt li paske li pi pratik e li te konnen egzakteman sa li t ap fè.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Ak pwochen pati a se Pwolonje PromQL.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Yon fwa ankò sou VictoriaMetrics. Ki sa ki VictoriaMetrics? Sa a se yon baz done seri tan, li nan OpenSource, nou distribye vèsyon sèl ak gwoup li yo. Dapre referans nou yo, li pi vit pase nenpòt bagay ki sou mache a kounye a ak konpresyon an se menm jan an, sa vle di moun reyèl rapòte konpresyon nan apeprè 0,4 bytes pou chak pwen, pandan y ap Prometheus a se 1,2-1,4.

Nou sipòte plis pase jis Prometheus. Nou sipòte InfluxDB, Graphite, OpenTSDB.

Ou ka "ekri" nou, se sa ki, ou ka transfere ansyen done.

Epi nou menm tou nou travay pafètman ak Prometheus ak Grafana, sa vle di nou sipòte motè PromQL la. Ak nan Grafana ou ka tou senpleman chanje pwen final Prometheus an VictoriaMetrics ak tout tablodbò ou yo ap travay menm jan yo te fè.

Men, ou ka itilize tou karakteristik adisyonèl ke VictoriaMetrics bay.

Nou pral byen vit ale nan karakteristik yo nou te ajoute.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Omit paramèt entèval - ou ka omèt paramèt entèval nan Grafana. Lè ou pa vle jwenn graf etranj lè w ap rale nan / soti nan panèl la, li rekòmande pou itilize varyab la. $__interval. Sa a se yon chanjman Grafana entèn epi li chwazi seri done a tèt li. Ak VictoriaMetrics tèt li ka konprann ki sa ranje sa a ta dwe. Epi ou pa bezwen mete ajou tout demann ou yo. Li pral pi fasil.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Dezyèm fonksyon an se referans entèval. Ou ka itilize entèval sa a nan ekspresyon ou yo. Ou ka miltipliye, divize, transfere, al gade nan li.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Apre sa se fanmi fonksyon rollup. Fonksyon Rollup transfòme nenpòt nan seri tan ou an twa seri tan separe. Sa yo se min, max ak mwayèn. Mwen jwenn sa a trè pratik paske pafwa li ka montre kèk outliers ak inexactitudes.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Men, si w ap jis fè irate oswa pousantaj, Lè sa a, ou pral pwobableman manke kèk ka kote seri tan an pa konpòte jan ou espere. Avèk fonksyon sa a li pi fasil pou wè, an n di ke max se anpil soti nan avg.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Apre sa se varyab default la. Default - sa vle di ki valè nou bezwen trase nan Grafana si nou pa gen yon seri tan nan moman an. Kilè sa rive? Ann di w ap ekspòte kèk mezi erè. Epi ou gen yon aplikasyon fre ke lè ou kòmanse, ou pa gen okenn erè e menm pa gen okenn erè pou pwochen twa èdtan yo oswa menm yon jou. Epi ou gen tablodbò ki montre relasyon ki soti nan siksè nan erè. Epi yo pral montre w anyen paske ou pa gen yon metrik erè. Ak nan default ou ka presize anyen.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Keep_last_Value – sove dènye valè metrik la si li manke. Si Prometheus pa jwenn li nan 5 minit apre pwochen grate a, Lè sa a, isit la nou pral sonje dènye valè li yo ak tablo ou yo pa pral kraze ankò.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Scrape_interval - montre konbyen fwa Prometheus kolekte done sou metrik ou a, ak ki frekans. Isit la ou ka wè yon pas, pou egzanp.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko
Ranplase etikèt se yon karakteristik popilè. Men, nou panse li se yon ti kras konplike paske li pran agiman antye. Epi ou bezwen pa sèlman sonje 5 agiman, men tou, sonje sekans yo.
"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko
Se poutèt sa, poukisa pa fè yo pi senp? Sa vle di, kraze li an ti fonksyon ak sentaks konprann.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Epi, koulye a pati nan plezi. Poukisa nou panse sa a se pwolonje PromQL? Paske nou sipòte Common Table Expressions. Ou ka swiv kòd QR la (https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL), gade lyen ak egzanp, ki soti nan lakou rekreyasyon an, kote ou ka kouri demann dirèkteman nan VictoriaMetrics san yo pa enstale li tou senpleman nan navigatè a.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

E kisa sa ye? Demann sa a pi wo a se yon demann jistis popilè. Mwen panse ke nan nenpòt tablodbò nan anpil konpayi ou itilize menm filtè a pou tout bagay. Anjeneral konsa. Men, lè ou bezwen ajoute kèk nouvo filtè, ou dwe mete ajou chak panèl, oswa telechaje tablodbò a, louvri li nan JSON, jwenn ranplase, ki tou pran tan. Poukisa nou pa estoke valè sa a nan yon varyab epi reitilize li? Sa a sanble, nan opinyon mwen, pi senp ak pi klè.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Pou egzanp, lè mwen bezwen mete ajou filtè nan Grafana nan tout demann, ak tablodbò a ka gwo oswa ka menm gen plizyè nan yo. Ak ki jan mwen ta renmen rezoud pwoblèm sa a nan Grafana?

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Mwen rezoud pwoblèm sa a nan fason sa a: mwen fè yon commonFilter epi defini filtè sa a nan li, ak Lè sa a, reitilize li nan demann. Men, si ou fè menm bagay la kounye a, li p ap travay paske Grafana pa pèmèt ou sèvi ak varyab andedan varyab rechèch. Epi li se yon ti kras etranj.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Se konsa, mwen te fè yon opsyon ki pèmèt ou fè sa. Men, si w enterese oswa vle yon karakteristik sa a, Lè sa a, sipòte li oswa pa renmen li si ou pa renmen lide sa a. https://github.com/grafana/grafana/pull/16694

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Plis enfòmasyon sou PromQL pwolonje. Isit la nou defini non sèlman yon varyab, men yon fonksyon tout antye. Epi nou rele li ru (itilizasyon resous). Ak fonksyon sa a aksepte resous gratis, limitasyon resous ak filtre. Sentaks la sanble senp. Epi li trè fasil yo sèvi ak fonksyon sa a ak kalkile pousantaj nan memwa gratis nou genyen. Sa vle di, konbyen memwa nou genyen, ki sa ki limit la ak ki jan yo filtre. Li sanble pi pratik si ou te ekri li tout, reitilize menm filtè yo, paske li ta tounen yon gwo, gwo rechèch.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

E la i en legzanp sa enn gran demann. Li soti nan tablodbò ofisyèl NodeExporter pou Grafana. Men, mwen apèn konprann sa k ap pase isit la. Sa se, nan kou, mwen konprann si ou gade ak anpil atansyon, men kantite parantèz ka imedyatman diminye motivasyon nan konprann sa k ap pase isit la. Epi poukisa pa fè li pi senp ak pi klè?

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Pou egzanp, tankou sa a, separe bagay enpòtan oswa pati nan varyab. Apre sa, fè matematik de baz ou. Sa a deja plis tankou pwogramasyon, se sa mwen ta renmen wè nan lavni nan Grafana.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Men yon dezyèm egzanp sou fason nou ta ka fè sa menm pi fasil si nou te deja gen fonksyon ru sa a, epi li deja egziste dirèkteman nan VictoriaMetrics. Epi ou Lè sa a, tou senpleman pase valè a kachèt ke ou te deklare nan CTE la.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Mwen te deja pale sou ki jan li enpòtan yo sèvi ak lang nan pwogramasyon dwat. Epi, pwobableman, chak konpayi nan Grafana gen yon bagay diferan k ap pase. Epi pwobableman ou tou bay aksè a Grafana devlopè ou yo, ak devlopè yo fè pwòp bagay yo. Epi yo tout fè li yon fason diferan. Men, mwen te vle li yo dwe yon jan kanmenm menm bagay la tou, se sa ki, diminye li nan yon estanda komen.

Ann di ou pa menm gen jis enjenyè sistèm, petèt ou menm gen ekspè, devops oswa SRE. Petèt ou gen ekspè ki konnen ki sa siveyans ye, ki konnen ki sa Grafana ye, se sa ki, yo te travay avèk li pou ane epi yo konnen egzakteman ki jan yo fè li byen. Apre sa, yo te deja ekri sa a 100 fwa epi eksplike li bay tout moun, men pou kèk rezon pesonn pa koute.

E si yo ta ka mete konesans sa a dirèkteman nan Grafana pou lòt itilizatè yo ka reitilize karakteristik yo? Men, si yo bezwen kalkile pousantaj nan memwa gratis, yo ta tou senpleman aplike fonksyon an. E si kreyatè yo nan ekspòtatè, ansanm ak pwodwi yo, tou bay yon seri fonksyon sou kòman yo travay ak mezi yo, paske yo konnen egzakteman ki sa mezi sa yo ye ak ki jan yo kalkile yo kòrèkteman?

Sa pa vreman egziste. Sa a se sa mwen te fè tèt mwen. Sa a se sipò bibliyotèk la nan Grafana. Ann di mesye ki te fè NodeExporter te fè sa mwen te pale sou yo. Epi yo tou bay yon seri fonksyon.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Sa vle di, li sanble yon bagay tankou sa a. Ou konekte bibliyotèk sa a ak Grafana, ou antre nan koreksyon epi li ekri trè tou senpleman nan JSON ki jan yo travay ak metrik sa a. Sa vle di, kèk seri fonksyon, deskripsyon yo ak sa yo tounen.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Mwen panse sa ta ka itil, paske lè sa a nan Grafana ou ta ekri jis konsa. Ak Grafana "di" ou ke gen yon tèl ak yon fonksyon nan tèl ak tèl yon bibliyotèk - ann sèvi ak li. Mwen panse ke sa ta trè fre.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Yon ti kras sou VictoriaMetrics. Nou fè anpil bagay enteresan. Li atik nou yo sou konpresyon, sou konpetisyon nou yo ak lòt aplikasyon done seri tan, eksplikasyon nou sou fason pou travay ak PromQL, paske gen toujou yon anpil nan débutan nan sa a, osi byen ke sou évolutivité vètikal ak sou konfwontasyon ak Thanos.

"ExtendedPromQL" - transkripsyon rapò Roman Khavronenko

Kesyon:

Mwen pral kòmanse kesyon mwen an ak yon istwa lavi ki senp. Lè mwen te kòmanse itilize Grafana, mwen te ekri yon rechèch trè konvenkan ki te 5 liy longè. Rezilta final la se yon graf trè konvenkan. Orè sa a prèske antre nan pwodiksyon an. Men, apre yon enspeksyon pi pre, li te tounen soti ke graf sa a montre istwa san sans absoli ki pa gen anyen fè ak reyalite, byenke nimewo yo tonbe nan seri a ke nou te espere wè. E mon kestyon. Nou gen bibliyotèk, nou gen fonksyon, men ki jan nou ekri tès pou Grafana? Ou te ekri yon demann konplèks sou ki yon desizyon biznis depann - bay lòd pou yon veso reyèl nan serveurs oswa ou pa bay lòd. Epi kòm nou konnen, fonksyon sa a ki trase graf la sanble ak verite a. Mèsi.

Mèsi pou kesyon an. Gen de pati. Premyèman, mwen jwenn enpresyon, dapre eksperyans mwen, ke pifò itilizatè yo, lè yo gade tablo yo, pa konprann sa yo montre yo. Pou kèk rezon, moun yo trè bon nan vini ak yon eskiz pou nenpòt anomali ki rive nan graf, menm si se yon erè nan yon fonksyon. Ak dezyèm pati a - li sanble m 'ki itilize fonksyon sa yo ta dwe yon pi bon apwòch rezoud pwoblèm ou an, olye pou yo chak nan devlopè ou fè pwòp planifikasyon kapasite yo ak fè erè ak kèk pwobabilite.

Ki jan yo tcheke?

Ki jan yo tcheke? Pwobableman pa.

Kòm yon tès nan Grafana.

Ki sa Grafana gen pou wè ak li? Grafana tradui demann sa a dirèkteman nan DataSource la.

Ajoute yon ti kras nan paramèt yo.

Non, pa gen anyen ki ajoute nan Grafana. Ka gen paramèt GET, tankou, di, etap. Li pa espesifye klèman, men ou ka pase sou tèt li, oswa ou ka pa pase sou li, men li ajoute otomatikman. Ou pa pral ekri tès isit la. Mwen pa panse nou ta dwe konte sou Grafana kòm yon sous verite isit la.

Mèsi pou rapò a! Mèsi pou konpresyon an! Ou te mansyone kat yon varyab nan yon graf, ke nan Grafana ou pa kapab itilize yon varyab nan yon varyab. Èske w konnen sa mwen vle di?

Wi.

Sa a te okòmansman yon tèt fè mal lè mwen te vle kreye yon alèt nan Grafana. Epi gen ou bezwen fè yon alèt pou chak lame separeman. Bagay sa a ou te fè, èske li travay pou alèt nan Grafana?

Si Grafana pa jwenn aksè nan varyab yon fason diferan, Lè sa a, wi, li pral travay. Men, konsèy mwen an se pa sèvi ak alèt nan Grafana ditou, ou pi bon nan lè l sèvi avèk alertmanager.

Wi, mwen sèvi ak li, men li jis te sanble pi fasil yo mete kanpe nan Grafana, men mèsi pou konsèy la!

Sous: www.habr.com

Add nouvo kòmantè