Ina ba da shawarar karanta kwafin rahoton Roman Khavronenko "ExtendedPromQL"
A takaice game da ni. Sunana Roman. Ina aiki da CloudFlare kuma ina zaune a London. Amma kuma ni ma'aikacin VictoriaMetrics ne.
Kuma ni ne marubucin
Za mu fara da kashi na farko, wanda ake kira "Masu Matsalolin Fassarawa" kuma a cikinsa zan yi magana game da gaskiyar cewa kowane harshe ko ma harshen sadarwa kawai yana da mahimmanci. Domin wannan shine yadda kuke isar da tunanin ku ga wani mutum ko tsarin, yadda kuke tsara buƙata. Mutanen da ke Intanet suna jayayya game da wane harshe ya fi kyau - java ko wani. Don kaina, na yanke shawarar cewa wajibi ne a zabi wani aiki, saboda duk wannan yana da takamaiman.
Bari mu fara daga farkon. Menene PromQL? PromQL shine Harshen Query Prometheus. Wannan shine yadda muke samar da tambayoyi a cikin Prometheus don samun bayanan jerin lokaci, jerin lokaci.
Menene jerin bayanan lokaci? A zahiri, waɗannan sigogi uku ne.
Wannan shi ne:
- Me muke kallo.
- Idan muka duba.
- Kuma menene darajar ta nuna.
Idan ka kalli wannan ginshiƙi (wannan ginshiƙi daga wayata yake, wanda ke nuna ƙididdiga na matakai na), to anan zaku iya amsa waɗannan tambayoyin cikin sauri.
Muna kallon matakai. Muna ganin ma'anar kuma muna ganin lokacin da muke kallo. Wato duban wannan zane, cikin sauki za ka iya cewa a ranar Lahadi na yi tafiya kusan matakai 15. Wannan shine bayanan jerin lokaci.
Yanzu bari mu "karya" (canza) su zuwa wani samfurin bayanai a cikin nau'i na tebur. A nan ma muna da abin da muke kallo. Anan na ƙara ƙarin bayanai kaɗan, waɗanda za mu kira meta-data, wato, ba ni ne na shiga ba, amma mutane biyu, misali, Jay da Silent Bob. Wannan shi ne abin da muke kallo; abin da yake nunawa da kuma lokacin da ya nuna wannan darajar.
Yanzu bari mu yi kokarin adana duk wadannan bayanai a cikin database. Misali, na dauki ma'anar ClickHouse. Kuma a nan muna ƙirƙirar tebur guda ɗaya mai suna "Mataki", watau abin da muke kallo. Akwai lokacin a nan da muke kallonsa; abin da yake nunawa da wasu meta-data inda za mu adana ko wanene: Jay da Silent Bob.
Kuma don ƙoƙarin ganin shi duka, za mu yi amfani da Grafana, saboda, da farko, yana da kyau.
Hakanan za mu yi amfani da wannan plugin. Akwai dalilai guda biyu na wannan. Na farko saboda na rubuta shi. Kuma na san ainihin yadda yake da wuya a cire bayanan jerin lokaci daga ClickHouse don nunawa a Grafana.
Za mu nuna a cikin Zane Panel. Wannan shine mafi mashahuri panel a cikin Grafana kuma yana nuna ƙima tsakanin lokaci, don haka kawai muna buƙatar sigogi biyu.
Bari mu rubuta tambaya mafi sauƙi - yadda ake nuna kididdigar mataki a Grafana, adana bayanan nan a ClickHouse, a cikin teburin da muka ƙirƙira. Kuma muna rubuta irin wannan tambaya mai sauƙi. Muna zaɓar daga matakai. Muna zaɓar ƙima kuma mu zaɓi lokacin waɗannan ƙimar, watau sigogi guda uku waɗanda muka yi magana akai.
Kuma a sakamakon haka, muna samun wannan jadawali. Wa ya san dalilin da ya sa yake da ban mamaki?
Haka ne, kuna buƙatar daidaita ta lokaci.
Kuma a ƙarshe muna samun mafi kyau, amma har yanzu m jadawalin. Wa ya san dalili? Haka ne, akwai mahalarta guda biyu, kuma muna ba da jerin lokuta biyu a cikin Grafana, domin idan muka sake tuntuɓar tsarin bayanai, to kowane jerin lokaci shine haɗuwa na musamman na suna da duk alamar maɓalli-daraja.
Saboda haka, muna bukatar mu zaɓi takamaiman mutum. Mun zabi Jay.
Kuma zana sake. Yanzu jadawali yayi kama da gaskiya. Yanzu shi ne jadawalin al'ada kuma komai yana aiki da kyau.
Kuma, tabbas, kun san yadda ake yi game da abu ɗaya, amma a cikin Prometheus ta hanyar PromQL. Kusan kamar wannan. Dan sauki. Kuma bari mu karya shi duka. Mun dauki Matakai. Kuma tace Jay. Ba mu bayyana a nan cewa muna buƙatar samun ƙima kuma ba mu zaɓi lokaci ba.
Yanzu bari mu yi ƙoƙarin ƙididdige saurin motsi na Jay ko Silent Bob. A cikin ClickHouse, za mu buƙaci yin guduDifference, watau, ƙididdige bambanci tsakanin maki biyu kuma raba su ta lokaci don samun ainihin gudun. Buƙatun zai yi kama da wani abu kamar haka.
Kuma zai nuna kusan wadannan dabi'u, watau kusan matakai 1,8 a cikin dakika daya yayi Silent Bob ko Jay.
Kuma a cikin Prometheus kun san yadda ake yin shi ma. Mafi sauki fiye da da.
Kuma don sauƙaƙe yin shi a cikin Grafana, na ƙara irin wannan abin rufewa wanda yayi kama da PromQL. Ana kiransa Rate Macros, ko duk abin da kuke so a kira shi. A cikin Grafana, kawai kuna rubuta “ƙididdigar”, amma wani wuri mai zurfi yana canzawa zuwa irin wannan babban buƙatun. Kuma ba ma sai ka kalle shi ba, a can wani wuri ne, amma ka tanadi lokaci mai yawa, domin rubuta irin wadannan manyan tambayoyin SQL kullum yana da tsada. Kuna iya yin kuskure cikin sauƙi sannan kuma ku kasa fahimtar abin da ke faruwa na dogon lokaci.
Kuma wannan ita ce tambayar da ko da ba ta dace da faifai ɗaya ba, har ma na raba ta gida biyu. Wannan kuma buƙatu ce a cikin ClickHouse, wanda ke yin ƙimar iri ɗaya, amma ga jerin lokuta biyu: Silent Bob da Jay, saboda muna da jerin lokuta biyu akan kwamitin. Kuma wannan ya riga ya yi wahala, a ganina.
Kuma bisa ga Prometheus zai zama jimla (daraja). Don ClickHouse Na yi wani macro daban mai suna RateColumns wanda yayi kama da tambayar Prometheus.
Mun duba kuma da alama PromQL yana da kyau sosai, amma yana da, ba shakka, iyakoki.
Wannan shi ne:
- Zabi mai iyaka.
- Gefen JOINs.
- Babu goyon baya.
Idan kuma kun dade kuna aiki da shi, to ku sani cewa wani lokacin yin wani abu yana da wahala a cikin PromQL, kuma a cikin SQL kuna iya yin kusan komai, saboda duk waɗannan zaɓuɓɓukan da muka yi magana akai ana iya yin su a cikin SQL. . Amma zai dace a yi amfani da shi? Kuma wannan ya sa na yi tunanin cewa ba koyaushe yare mafi ƙarfi zai iya zama mafi dacewa ba.
Don haka, wani lokacin kuna buƙatar zaɓar yare don ayyuka. Yana kama da yaƙi tsakanin Batman da Superman. A bayyane yake cewa Superman ya fi karfi, amma Batman ya iya kayar da shi saboda ya fi dacewa kuma ya san ainihin abin da yake yi.
Kuma kashi na gaba shine Extending PromQL.
Har yanzu game da VictoriaMetrics. Menene VictoriaMetrics? Wannan jerin bayanai ne na lokaci, yana cikin OpenSource, muna rarraba nau'ikansa guda ɗaya da tari. Bisa ga ma'auni na mu, shi ne ya fi sauri a kasuwa a yanzu kuma yana kama da matsi, watau mutane masu rai suna ba da rahoton matsawa na kimanin 0,4 bytes a kowace aya, lokacin da Prometheus yana da 1,2-1,4.
Muna goyon bayan ba kawai Prometheus ba. Muna goyan bayan InfluxDB, Graphite, OpenTSDB.
Kuna iya "rubuta" a cikin mu, wato, kuna iya canja wurin tsoffin bayanai.
Kuma muna aiki daidai da Prometheus da Grafana, watau muna tallafawa injin PromQL. Kuma a cikin Grafana, kawai kuna iya canza ƙarshen ƙarshen Prometheus zuwa VictoriaMetrics kuma duk dashboard ɗin ku za su yi aiki kamar yadda suka yi.
Amma zaka iya amfani da ƙarin kwakwalwan kwamfuta da VictoriaMetrics ke bayarwa.
Za mu yi sauri cikin abubuwan da muka ƙara.
Cire tazarar param - zaku iya tsallake tazarar siga a Grafana. Lokacin da ba ka son samun m jadawali lokacin zuƙowa-a/fita a cikin panel, ana ba da shawarar amfani da m $__interval
. Wannan canjin Grafana ne na ciki kuma yana zaɓar kewayon bayanai da kansa. Kuma VictoriaMetrics na iya fahimtar abin da wannan kewayon ya kamata. Kuma ba lallai ne ka sabunta duk buƙatunka ba. Zai fi sauƙi.
Aiki na biyu shine tantance tazara. Kuna iya amfani da wannan tazara a cikin maganganunku. Kuna iya ninka, raba, canja wuri, koma zuwa gare shi.
Na gaba shine dangin aikin naɗawa. Aikin jujjuyawa yana canza kowane jerin lokutan ku zuwa jerin lokuta daban-daban guda uku. Waɗannan su ne min, max da matsakaita. Ina ganin ya dace sosai, saboda wani lokacin yana iya nuna wasu abubuwan da ba su dace ba (ananoma) da rashin daidaito.
Kuma idan kawai kuna yin fushi ko ƙididdigewa, to ƙila za ku iya rasa wasu lokuta inda jerin lokutan ba su yi yadda kuka yi niyya ba. Yana da sauƙin gani tare da wannan aikin, bari mu ce max ya ragu sosai.
Na gaba shine madaidaicin tsoho. Default - wannan yana nufin wace ƙimar da muke buƙatar zana a Grafana idan ba mu da jerin lokaci a yanzu. Yaushe yake faruwa? Bari mu ce kuna fitar da wasu ma'aunin kuskure. Kuma kuna da irin wannan aikace-aikacen mai sanyi wanda idan kun fara, ba ku da kurakurai ko da kurakurai na tsawon sa'o'i uku masu zuwa ko ma yini ɗaya. Kuma kuna da dashboards waɗanda ke nuna alaƙa daga nasara zuwa kuskure. Kuma ba za su nuna maka komai ba saboda ba ka da ma'aunin kuskure. Kuma a cikin tsoho zaka iya ƙayyade wani abu.
Keep_last_Value - yana adana ƙimar ƙarshe na ma'aunin idan ya ɓace. Idan Prometheus bayan scrape na gaba bai same shi a cikin mintuna 5 ba, a nan za mu tuna da ƙimarsa ta ƙarshe kuma sigogin ku ba za su sake karyewa ba.
Scrape_interval - yana nuna sau nawa Prometheus ke tattara bayanai akan ma'aunin ku, tare da wace mita. Anan zaka iya ganin hanyar wucewa, misali.
Maye gurbin lakabin sanannen fasali ne. Amma muna ganin yana da ɗan rikitarwa saboda yana ɗaukar mahawara ta lamba. Kuma kuna buƙatar ba kawai ku tuna da muhawarar 5 ba, amma kuma ku tuna da jerin su.
Saboda haka, me ya sa ba a sauƙaƙe su ba? Wato raba shi cikin ƙananan ayyuka tare da bayyanannen ma'ana.
Kuma yanzu mafi ban sha'awa. Me yasa muke tunanin an tsawaita PromQL? Domin muna goyon bayan Common Table Expressions. Kuna iya bin lambar QR (
Kuma menene? Wannan buƙatar daga sama sanannen buƙace ce. Ina tsammanin a cikin kowane dashboard a cikin kamfanoni da yawa kuna amfani da tace iri ɗaya don komai. Yawancin haka. Amma idan kana buƙatar ƙara sabon tacewa, dole ne ka sabunta kowane panel, ko zazzage dashboard, buɗe shi a cikin JSON, yi neman maye gurbin, wanda kuma yana ɗaukar lokaci. Me yasa ba a adana wannan ƙimar a cikin mai canzawa kuma sake amfani da shi ba? Ya dubi, a ganina, ya fi sauƙi kuma mafi fili.
Misali, lokacin da nake buƙatar sabunta masu tacewa a cikin Grafana a cikin duk buƙatun, kuma dashboard ɗin na iya zama babba ko kuma ana iya samun da yawa daga cikinsu. Kuma ta yaya zan so in magance wannan matsalar a Grafana?
Ina magance wannan matsalar kamar haka: Na yi wani gama gari na gama gari sannan in ayyana wannan tacewa a ciki, sannan na sake amfani da shi a cikin tambayoyi. Amma idan kun yi haka a yanzu, ba zai yi aiki ba saboda Grafana baya ba ku damar amfani da masu canji a cikin masu canjin tambaya. Kuma yana da ɗan ban mamaki.
Don haka na yi wani zaɓi wanda zai ba ku damar yin wannan. Kuma idan kuna sha'awar ko kuna son irin wannan fasalin, to ku goyi bayan ko ƙi idan ba ku son wannan ra'ayin.
Ƙarin bayani game da PromQL ya tsawaita. Anan muna ayyana ba kawai mai canzawa ba, amma kai tsaye gabaɗayan aiki. Kuma muna kiransa ru (amfani da albarkatu). Kuma wannan aikin yana karɓar albarkatun kyauta, iyakacin albarkatu, da tacewa. Ma'anar kalma tana da sauƙi. Kuma yana da sauƙin amfani da wannan aikin da ƙididdige yawan adadin ƙwaƙwalwar ajiyar da muke da shi. Wato yawan ƙwaƙwalwar ajiyar da muke da ita, menene iyaka da yadda ake tacewa. Zai fi kyau idan za ku rubuta shi duka ta hanyar amfani da matattara iri ɗaya, saboda zai zama babban tambaya mai girma.
Kuma ga misalin irin wannan babban buƙatu mai girma. Ya fito ne daga dashboard NodeExporter na hukuma don Grafana. Amma ni ban fahimci ainihin abin da ke faruwa a nan ba. Wato, ba shakka, na fahimta idan kun duba da kyau, amma adadin ɓangarorin na iya rage himma nan da nan don fahimtar abin da ke faruwa a nan. Kuma me ya sa ba za a sauƙaƙe da kuma bayyana ba?
Misali, kamar wannan, nuna mahimman abubuwa ko sassa a cikin masu canji. Sannan ku yi math ɗin ku na asali. Wannan yafi kama da shirye-shirye, wannan shine abin da nake so in gani nan gaba a Grafana.
Ga misali na biyu na yadda za mu iya sauƙaƙa shi idan mun riga mun sami wannan aikin ru, kuma ya riga ya wanzu kai tsaye a cikin VictoriaMetrics. Sannan kawai ku wuce ƙimar cache ɗin da kuka ayyana a cikin CTE.
Na riga na yi magana game da muhimmancin yin amfani da yaren shirye-shiryen da ya dace. Kuma, tabbas, wani abu dabam yana faruwa a Grafana a kowane kamfani. Kuma, tabbas, har yanzu kuna ba da damar zuwa Grafana ga masu haɓaka ku, kuma masu haɓakawa suna yin wani abu na nasu. Kuma duk suna yin ta ta wata hanya dabam. Amma ina son shi ko ta yaya iri ɗaya, wato, an rage shi zuwa ma'auni gama gari.
Bari mu ce ba ma kawai kuna da injiniyoyin tsarin ba, wataƙila kuna da ƙwararru, masu ba da gudummawa ko SREs. Wataƙila kuna da masana waɗanda suka san menene saka idanu, san menene Grafana, watau sun yi aiki tare da wannan tsawon shekaru kuma sun san ainihin yadda ake yin shi daidai. Kuma sun riga sun rubuta sau 100 kuma sun bayyana wa kowa, amma saboda wasu dalilai ba wanda ya ji.
Idan za su iya sanya wannan ilimin kai tsaye a cikin Grafana don sauran masu amfani su sake amfani da ayyukan fa? Kuma idan ya zama dole don ƙididdige yawan adadin ƙwaƙwalwar ajiyar kyauta, to za su yi amfani da aikin kawai. Amma idan wadanda suka kirkiro masu fitar da kayayyaki, tare da samfurin su, sun ba da tsarin ayyuka, yadda za su yi aiki tare da ma'auni, saboda sun san ainihin menene waɗannan ma'auni kuma yadda za a lissafta su daidai?
Wannan ba shi da gaske. Ga abin da na yi da kaina. Wannan shine tallafin ɗakin karatu a Grafana. Bari mu ce mutanen da suka yi NodeExporter sun yi abin da na bayyana. Sannan kuma an samar da tsarin fasali.
Wato yana kama da wani abu kamar wannan. Kuna haɗa wannan ɗakin karatu zuwa Grafana, kuna shiga cikin gyarawa, kuma a nan yana da sauƙi a cikin JSON yadda ake aiki da wannan awo. Wato, wasu saitin ayyuka, bayanin su da abin da suke bayyana a ciki.
A ganina, wannan na iya zama da amfani, domin a lokacin za ku rubuta a Grafana kamar haka. Kuma Grafana "ya gaya muku" cewa akwai irin wannan kuma irin wannan aiki daga irin wannan ɗakin karatu - bari mu yi amfani da shi. Ina tsammanin hakan zai yi kyau sosai.
Kadan game da VictoriaMetrics. Muna yin abubuwa masu ban sha'awa da yawa. Karanta labarinmu game da matsawa, game da gasarmu tare da wasu aikace-aikacen bayanan jerin lokaci, bayanin mu game da yadda ake aiki tare da PromQL, saboda akwai ƙarin masu farawa da yawa a cikin wannan, da kuma game da scalability na tsaye da game da fuskantar Thanos.
Tambayoyi:
Zan fara tambayata da labarin rayuwa mai sauƙi. Lokacin da na fara amfani da Grafana, na rubuta tambaya ta layi 5 mai gamsarwa. Sakamakon ƙarshe shine ginshiƙi mai gamsarwa. Wannan jadawali ya kusan shiga samarwa. Amma da aka duba na kusa, sai ya zamana cewa wannan ginshiƙi yana nuna cikakkiyar maganar banza wadda ba ta da alaƙa da gaskiya, kodayake lambobin sun faɗi cikin kewayon da muke tsammanin gani. Kuma tambayata. Muna da dakunan karatu, muna da ayyuka, amma ta yaya za mu rubuta gwaji ga Grafana? Kun rubuta tambaya mai rikitarwa wacce ta shafi shawarar kasuwanci - don yin oda na ainihin akwati na sabobin ko ba yin oda ba. Kuma kamar yadda muka sani, wannan aikin da ke zana jadawali yana kama da gaskiya. Na gode.
Na gode da tambayar. Akwai sassa biyu a nan. Na farko, na sami ra'ayi, bisa ga kwarewata, cewa yawancin masu amfani, lokacin da suka kalli jadawalin su, ba sa fahimtar abin da suke nunawa. Ko ta yaya, mutane suna da kyau sosai wajen fito da uzuri ga duk wani rashin jin daɗi da ke faruwa akan ginshiƙi, koda kuwa kwaro ne a cikin aiki. Kuma kashi na biyu - a gare ni cewa yin amfani da irin waɗannan ayyuka zai fi dacewa don magance matsalar ku, maimakon kowane ɗayan masu haɓakawa ya yi nasa tsarin tsarawa da yin kuskure tare da wasu yiwuwar.
Yadda za a bincika?
Yadda za a duba? Wataƙila a'a.
A matsayin gwaji a Grafana.
Kuma fa Grafana? Grafana yana fassara wannan buƙatar kai tsaye zuwa DataSource.
Ta ƙara kaɗan zuwa sigogi.
A'a, babu abin da aka kara wa Grafana. Ana iya samun sigogi na GET, kamar mataki. Ba a fayyace shi ba, amma za ku iya ƙetare shi, ba za ku iya soke shi ba, amma ana ƙara shi ta atomatik. Ba ka rubuta gwaje-gwaje a nan. Ina ganin bai kamata ku dogara ga Grafana a nan a matsayin tushen gaskiya ba.
Na gode da rahoton! Na gode da matsawa! Kun tuna game da yin taswirar ma'auni a cikin jadawali, cewa a cikin Grafana ba za ku iya amfani da ma'auni a cikin m. Kun gane abin da nake nufi?
Ee.
Wannan shi ne farkon ciwon kai lokacin da nake son yin faɗakarwa a Grafana. Kuma a can kuna buƙatar yin faɗakarwa ga kowane mai watsa shiri daban. Ga wannan abin da kuka yi, yana aiki don faɗakarwa a Grafana?
Idan Grafana baya samun dama ga masu canji ta wata hanya daban, to, eh, zai yi aiki. Amma shawarata ita ce kar a yi amfani da faɗakarwa a cikin Grafana kwata-kwata, zai fi kyau ku yi amfani da alertmanager.
Ee, na yi amfani da shi, amma da alama ya fi sauƙi a kafa a Grafana, amma godiya ga tip!
source: www.habr.com