"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Би танд Роман Хавроненкогийн "ExtendedPromQL" илтгэлийн хуулбарыг уншихыг санал болгож байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Миний тухай товчхон. Намайг Роман гэдэг. Би CloudFlare-д ажилладаг бөгөөд Лондонд амьдардаг. Гэхдээ би бас VictoriaMetrics-ийн засварчин.
Тэгээд би зохиогч нь ClickHouse залгаас Графана болон ClickHouse-прокси нь ClickHouse-д зориулсан жижиг прокси юм.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Бид "Орчуулгын хүндрэл" гэж нэрлэгддэг эхний хэсгээс эхлэх бөгөөд үүнд би аливаа хэл, тэр байтугай харилцааны хэл нь маш чухал байдаг тухай ярих болно. Учир нь та өөрийнхөө бодлыг өөр хүн эсвэл системд ингэж дамжуулж, хүсэлтийг хэрхэн боловсруулдаг. Интернет дэх хүмүүс аль хэл нь илүү дээр вэ - java эсвэл өөр хэлээр маргаж байна. Энэ бүхэн тодорхой учраас би өөрийнхөө хувьд даалгаврын дагуу сонгох хэрэгтэй гэж шийдсэн.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Эхнээс нь эхэлцгээе. PromQL гэж юу вэ? PromQL бол Prometheus Query хэл юм. Хугацааны цувааны өгөгдлийг авахын тулд бид Prometheus-д ингэж асуулга үүсгэдэг.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Хугацааны цувааны өгөгдөл гэж юу вэ? Шууд утгаараа эдгээр нь гурван параметр юм.

Эдгээр нь:

  • Бид юу харж байна вэ?
  • Бид үүнийг харахад.
  • Мөн энэ нь ямар үнэ цэнийг харуулж байна вэ?

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Хэрэв та энэ диаграммыг харвал (энэ график нь миний алхамын статистикийг харуулсан миний утаснаас авсан) эдгээр асуултуудад хурдан хариулж чадна.

Бид алхамуудыг хардаг. Бид утгыг нь олж хардаг, цагийг нь хардаг. Өөрөөр хэлбэл, энэ диаграммыг харахад ням гарагт би 15 орчим алхам алхсан гэж хэлж болно. Энэ бол цаг хугацааны цуврал өгөгдөл юм.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Одоо тэдгээрийг хүснэгт хэлбэрээр өөр өгөгдлийн загвар болгон "хувааж" (хуваах) үзье. Энд бас бидний харж байгаа зүйл байна. Энд би бага зэрэг нэмэлт өгөгдлийг нэмсэн бөгөөд үүнийг бид мета-өгөгдөл гэж нэрлэх болно, өөрөөр хэлбэл үүнийг би биш, харин Жэй, Чимээгүй Боб гэсэн хоёр хүн туулсан. Энэ бол бидний харж байгаа зүйл юм; энэ нь юуг харуулж байна, хэзээ тэр үнэ цэнийг харуулж байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар
Одоо энэ бүх өгөгдлийг мэдээллийн санд хадгалахыг хичээцгээе. Жишээлбэл, би ClickHouse синтаксийг авсан. Энд бид "Алхам" нэртэй нэг хүснэгтийг үүсгэдэг, өөрөөр хэлбэл бидний харж байгаа зүйл юм. Бид үүнийг харах үе байдаг; Энэ нь юу харуулж байна, зарим мета өгөгдөл нь бид хэн болохыг хаана хадгалах вэ: Жей, Чимээгүй Боб.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Энэ бүхнийг төсөөлөхийн тулд бид Графанаг ашиглах болно, учир нь энэ нь юуны түрүүнд үзэсгэлэнтэй юм.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Бид мөн энэ залгаасыг ашиглах болно. Үүнд хоёр шалтгаан бий. Эхнийх нь би бичсэн учраас тэр. ClickHouse-аас цагийн цувааны өгөгдлийг татаж аваад Grafana дээр харуулах нь ямар хэцүү байдгийг би сайн мэднэ.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Бид үүнийг График самбарт харуулах болно. Энэ бол Графана дахь хамгийн алдартай самбар бөгөөд цаг хугацааны утгын хамаарлыг харуулдаг тул бидэнд зөвхөн хоёр параметр хэрэгтэй.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар
Бидний үүсгэсэн хүснэгтэд энэ өгөгдлийг ClickHouse-д хадгалах, Grafana дахь алхамын статистикийг хэрхэн харуулах талаар хамгийн энгийн асуулгыг бичье. Мөн бид энэ энгийн хүсэлтийг бичдэг. Бид алхамуудаас сонгоно. Бид утгыг сонгож, эдгээр утгуудын цагийг, өөрөөр хэлбэл бидний ярьсан ижил гурван параметрийг сонгоно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Үүний үр дүнд бид ийм график авах болно. Тэр яагаад ийм хачин байдгийг хэн мэдэх вэ?

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Энэ нь зөв, бид цаг хугацаагаар нь эрэмбэлэх хэрэгтэй.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Эцэст нь бид илүү сайн, гэхдээ хачирхалтай хуваарийг авах болно. Яагаад гэдгийг хэн мэдэх вэ? Энэ нь зөв, хоёр оролцогч байгаа бөгөөд бид Grafana-д хоёр цаг хугацааны цувралыг өгдөг, учир нь хэрэв та өгөгдлийн загварыг дахин харвал цаг хугацааны цуврал бүр нь нэр болон бүх түлхүүр утгын шошгоны өвөрмөц хослол юм.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Тиймээс бид тодорхой хүнийг сонгох хэрэгтэй. Бид Жэйг сонгодог.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Тэгээд дахин зурцгаая. Одоо график үнэн шиг харагдаж байна. Одоо энэ бол ердийн цагийн хуваарь бөгөөд бүх зүйл хэвийн ажиллаж байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Та бараг ижил зүйлийг хэрхэн хийхийг мэддэг байх, гэхдээ Prometheus дээр PromQL-ээр дамжуулан. Энэ нь иймэрхүү зүйл. Жаахан энгийн. Тэгээд бүгдийг нь задлаад үзье. Бид алхам хийсэн. Мөн Жэйгээр шүүнэ. Бид энд үнэ цэнийг олж авах хэрэгтэй гэж заагаагүй бөгөөд цаг хугацааг сонгохгүй байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Одоо Jay эсвэл Silent Bob-ийн хөдөлгөөний хурдыг тооцоолохыг хичээцгээе. ClickHouse дээр бид runDifference хийх хэрэгтэй болно, өөрөөр хэлбэл хос онооны зөрүүг тооцоолж, тодорхой хурдыг авахын тулд тэдгээрийг цаг хугацаагаар хуваана. Хүсэлт нь иймэрхүү харагдах болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Мөн энэ нь ойролцоогоор эдгээр утгыг харуулах болно, өөрөөр хэлбэл Чимээгүй Боб эсвэл Жей секундэд ойролцоогоор 1,8 алхам хийдэг.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Прометейд та үүнийг хэрхэн хийхийг мэддэг. Өмнөхөөсөө хамаагүй хялбар болсон.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбарGrafana дээр хийхэд хялбар болгохын тулд би PromQL-тэй тун төстэй харагдах энэхүү боодолыг нэмсэн. Үүнийг Rate макро гэж нэрлэдэг эсвэл та үүнийг юу гэж нэрлэхийг хүсч байна. Графана дээр та зүгээр л "хэрэглээ" гэж бичдэг, гэхдээ хаа нэгтээ энэ нь энэ том хүсэлт болж хувирдаг. Та үүнийг харах ч хэрэггүй, энэ нь хаа нэгтээ байдаг, гэхдээ та маш их цаг хэмнэдэг, учир нь ийм том SQL асуулга бичих нь үргэлж үнэтэй байдаг. Та амархан алдаа гаргаж, дараа нь юу болж байгааг удаан хугацаанд ойлгохгүй байж болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Энэ бол нэг слайдад багтаагүй хүсэлт бөгөөд би үүнийг хоёр баганад хуваах шаардлагатай болсон. Энэ нь бас ClickHouse дахь хүсэлт бөгөөд энэ нь ижил хурдтай боловч хоёр цагийн цувралын хувьд: Чимээгүй Боб ба Жей, ингэснээр бид самбар дээр хоёр цагийн цувралтай болно. Мөн энэ нь миний бодлоор аль хэдийн маш хэцүү байдаг.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Прометейгийн хэлснээр энэ нь нийлбэр (хувь) байх болно. ClickHouse-д зориулж би RateColumns нэртэй тусдаа макро хийсэн бөгөөд энэ нь Prometheus дээрх query шиг харагдаж байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Бид үүнийг харсан бөгөөд PromQL үнэхээр гайхалтай юм шиг санагдаж байна, гэхдээ энэ нь мэдээжийн хэрэг хязгаарлалттай.

Эдгээр нь:

  • Хязгаарлагдмал SELECT.
  • Borderline JOIN-ууд.
  • Дэмжлэг байхгүй.

Хэрэв та түүнтэй удаан хугацаанд ажилласан бол PromQL дээр ямар нэг зүйл хийхэд заримдаа маш хэцүү байдаг, гэхдээ SQL дээр та бараг бүх зүйлийг хийж чадна, учир нь бидний саяхан ярьсан эдгээр бүх сонголтыг SQL дээр хийх боломжтой. . Гэхдээ үүнийг ашиглахад тохиромжтой байх болов уу? Энэ нь намайг хамгийн хүчирхэг хэл нь үргэлж хамгийн тохиромжтой хэл биш байж магадгүй гэж бодоход хүргэдэг.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Тиймээс заримдаа та даалгаврын хэлийг сонгох хэрэгтэй. Яг л Бэтмэн Супермэнтэй тулалдаж байгаа юм шиг. Супермэн илүү хүчтэй гэдэг нь ойлгомжтой ч Бэтмен илүү практик, юу хийж байгаагаа сайн мэддэг учраас түүнийг ялж чадсан юм.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Дараагийн хэсэг нь PromQL-г өргөтгөх явдал юм.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

VictoriaMetrics-ийн талаар дахин нэг удаа. VictoriaMetrics гэж юу вэ? Энэ бол цаг хугацааны цуврал мэдээллийн сан бөгөөд энэ нь OpenSource-д байгаа бөгөөд бид түүний дан болон кластер хувилбаруудыг түгээдэг. Манай жишиг үзүүлэлтээс харахад энэ нь одоо зах зээл дээр байгаа бүх зүйлээс хурдан бөгөөд шахалт нь ижил төстэй, өөрөөр хэлбэл бодит хүмүүс нэг цэгт 0,4 байт шахалт хийдэг гэж мэдээлдэг бол Prometheus-ийнх 1,2-1,4 байна.

Бид зөвхөн Прометейг дэмждэггүй. Бид InfluxDB, Graphite, OpenTSDB-г дэмждэг.

Та бидэнд "бичих" боломжтой, өөрөөр хэлбэл та хуучин өгөгдлийг дамжуулах боломжтой.

Мөн бид Prometheus болон Grafana-тай төгс ажилладаг, өөрөөр хэлбэл бид PromQL хөдөлгүүрийг дэмждэг. Grafana-д та Prometheus-ийн төгсгөлийн цэгийг VictoriaMetrics болгон өөрчлөх боломжтой бөгөөд таны бүх хяналтын самбар өмнөх шигээ ажиллах болно.

Гэхдээ та VictoriaMetrics-ийн өгсөн нэмэлт функцуудыг ашиглаж болно.

Бид нэмсэн функцуудаа хурдан үзэх болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Интервал параметрийг орхих - та Графана дахь интервалын параметрүүдийг орхиж болно. Хэрэв та самбарыг томруулж, жижигрүүлэх үед хачирхалтай график авахыг хүсэхгүй байгаа бол хувьсагчийг ашиглахыг зөвлөж байна. $__interval. Энэ бол Графанагийн дотоод өөрчлөлт бөгөөд өгөгдлийн хүрээг өөрөө сонгоно. VictoriaMetrics өөрөө энэ хүрээ ямар байх ёстойг ойлгож чадна. Мөн та бүх хүсэлтээ шинэчлэх шаардлагагүй. Энэ нь хамаагүй хялбар байх болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Хоёрдахь функц нь интервалын лавлагаа юм. Та энэ интервалыг илэрхийлэлдээ ашиглаж болно. Та үржүүлж, хувааж, шилжүүлж, лавлаж болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Дараа нь цуглуулах функцийн гэр бүл юм. Rollup функц нь таны аль нэг цагийн цувааг гурван тусдаа цагийн цуваа болгон хувиргадаг. Эдгээр нь хамгийн бага, дээд ба дундаж юм. Заримдаа энэ нь зарим хэт давчуу байдал, алдааг харуулж чаддаг тул надад үүнийг маш тохиромжтой гэж бодож байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Хэрэв та зүгээр л уурлаж эсвэл үнэлгээ хийж байгаа бол цаг хугацааны цуваа таны хүлээж байсан шиг ажиллахгүй байх зарим тохиолдлыг орхиж магадгүй юм. Энэ функцийн тусламжтайгаар үүнийг харахад илүү хялбар байдаг, макс нь дунджаас маш их байна гэж бодъё.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Дараа нь өгөгдмөл хувьсагч юм. Өгөгдмөл - энэ нь одоогоор бидэнд цаг хугацааны цуваа байхгүй бол Графана-д ямар үнэ цэнийг зурах хэрэгтэйг хэлнэ. Энэ хэзээ тохиолддог вэ? Та алдааны хэмжүүрүүдийг экспортлож байна гэж бодъё. Танд ийм гайхалтай програм байгаа бөгөөд та эхлэхэд дараагийн гурван цаг байтугай нэг өдрийн турш ямар ч алдаа, бүр алдаа гарахгүй. Мөн та амжилтаас алдаа хүртэлх харилцааг харуулсан хяналтын самбартай. Мөн танд алдааны хэмжүүр байхгүй тул тэд танд юу ч харуулахгүй. Мөн анхдагчаар та юу ч зааж өгч болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Хадгалах_сүүлийн_утга - хэмжигдэхүүн дутуу бол сүүлийн утгыг хадгална. Хэрэв Прометей дараагийн хусалтаас хойш 5 минутын дотор үүнийг олохгүй бол энд бид түүний сүүлчийн утгыг санах бөгөөд таны график дахин тасрахгүй.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Scrape_interval – Prometheus таны хэмжигдэхүүн дээр хэр олон удаа, ямар давтамжтайгаар мэдээлэл цуглуулдгийг харуулдаг. Жишээлбэл, эндээс та тасалбарыг харж болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар
Шошго солих нь түгээмэл функц юм. Гэхдээ энэ нь бүхэл бүтэн аргумент шаарддаг тул бид үүнийг бага зэрэг төвөгтэй гэж бодож байна. Та зөвхөн 5 аргументыг санахаас гадна тэдгээрийн дарааллыг санах хэрэгтэй.
"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар
Тиймээс яагаад тэдгээрийг илүү хялбар болгож болохгүй гэж? Өөрөөр хэлбэл ойлгомжтой синтакс бүхий жижиг функцүүдэд хуваана.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Тэгээд одоо хөгжилтэй хэсэг. Бид яагаад үүнийг өргөтгөсөн PromQL гэж бодож байна вэ? Учир нь бид нийтлэг хүснэгтийн илэрхийлэлийг дэмждэг. Та QR кодыг дагаж болно (https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL), тоглоомын талбайн жишээнүүдийн холбоосыг харна уу, эндээс та зүгээр л хөтөч дээр суулгахгүйгээр VictoriaMetrics дээр асуултуудыг шууд ажиллуулж болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Тэгээд энэ юу вэ? Дээрх хүсэлт нь нэлээд түгээмэл хүсэлт юм. Олон компаниудын аль ч хяналтын самбарт та бүх зүйлд ижил шүүлтүүр ашигладаг гэж би бодож байна. Ихэвчлэн тийм. Гэхдээ та шинэ шүүлтүүр нэмэх шаардлагатай бол самбар бүрийг шинэчлэх эсвэл хяналтын самбараа татаж аваад JSON дээр нээж, солихыг хайж олох хэрэгтэй бөгөөд үүнд бас цаг хугацаа шаардагдана. Яагаад энэ утгыг хувьсагчид хадгалаад дахин ашиглаж болохгүй гэж? Энэ нь миний бодлоор илүү энгийн бөгөөд ойлгомжтой харагдаж байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Жишээлбэл, би бүх хүсэлтэд Графана дахь шүүлтүүрийг шинэчлэх шаардлагатай үед хяналтын самбар асар том эсвэл бүр хэд хэдэн байж болно. Би Графана дахь энэ асуудлыг хэрхэн шийдэхийг хүсч байна вэ?

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Би энэ асуудлыг ингэж шийддэг: Би нийтлэг шүүлтүүр хийж, түүнд энэ шүүлтүүрийг тодорхойлж, дараа нь асуулгад дахин ашигладаг. Гэхдээ хэрэв та одоо ижил зүйлийг хийвэл Grafana нь асуулгын хувьсагчид дотор хувьсагч ашиглахыг зөвшөөрдөггүй тул ажиллахгүй. Тэгээд жаахан хачирхалтай.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Тиймээс би танд үүнийг хийх боломжтой сонголтыг хийсэн. Хэрэв та ийм функцийг сонирхож байгаа эсвэл хүсэж байгаа бол дэмжинэ үү, хэрэв танд энэ санаа таалагдахгүй бол таалагдахгүй байна уу. https://github.com/grafana/grafana/pull/16694

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

PromQL-ийн өргөтгөлийн талаар дэлгэрэнгүй. Энд бид зөвхөн хувьсагч төдийгүй бүхэл бүтэн функцийг тодорхойлно. Мөн бид үүнийг ru (нөөцийн ашиглалт) гэж нэрлэдэг. Мөн энэ функц нь үнэгүй нөөц, нөөцийн хязгаарлалт, шүүлтүүрийг хүлээн авдаг. Синтакс нь энгийн юм шиг санагддаг. Мөн энэ функцийг ашиглах, бидэнд байгаа санах ойн хэмжээг тооцоолоход маш хялбар байдаг. Энэ нь бидэнд хэр их санах ой байгаа, ямар хязгаарлалт, хэрхэн шүүх вэ. Хэрэв та бүгдийг нь ижил шүүлтүүрийг ашиглан бичвэл илүү тохиромжтой харагдаж байна, учир нь энэ нь том, том асуулга болж хувирах болно.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Ийм том, том хүсэлтийн жишээ энд байна. Энэ нь Grafana-д зориулсан албан ёсны NodeExporter хяналтын самбараас юм. Гэхдээ энд юу болоод байгааг би бараг ойлгохгүй байна. Энэ нь мэдээжийн хэрэг, хэрэв та анхааралтай ажиглавал би ойлгож байна, гэхдээ хаалтны тоо нь энд юу болж байгааг ойлгох сэдлийг даруй бууруулж чадна. Яагаад үүнийг илүү энгийн, ойлгомжтой болгож болохгүй гэж?

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Жишээлбэл, чухал зүйл эсвэл хэсгүүдийг хувьсагч болгон хуваах гэх мэт. Тэгээд үндсэн тооцоогоо хий. Энэ нь аль хэдийн програмчлалтай төстэй бөгөөд үүнийг би ирээдүйд Графанагаас харахыг хүсч байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Хэрэв бид энэ ru функцтэй байсан бөгөөд VictoriaMetrics дээр шууд байдаг бол бид үүнийг хэрхэн илүү хялбар болгож болох хоёр дахь жишээ энд байна. Дараа нь та CTE-д зарласан кэш утгыг зүгээр л дамжуулна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Зөв програмчлалын хэл ашиглах нь ямар чухал болохыг би аль хэдийн ярьсан. Графана дахь компани бүр өөр өөр зүйл хийдэг байх. Мөн та бас хөгжүүлэгчиддээ Grafana-д хандах эрх олгож магадгүй бөгөөд хөгжүүлэгчид өөрсдийнхөө зүйлийг хийдэг. Мөн тэд бүгд үүнийг ямар нэгэн байдлаар өөрөөр хийдэг. Гэхдээ би үүнийг ямар нэг байдлаар, өөрөөр хэлбэл нийтлэг жишиг болгон бууруулахыг хүссэн.

Танд зүгээр л системийн инженер байхгүй, магадгүй танд мэргэжилтнүүд, хөгжүүлэгчид эсвэл SRE байдаг гэж бодъё. Магадгүй танд мониторинг гэж юу болохыг мэддэг, Графана гэж юу болохыг мэддэг, өөрөөр хэлбэл тэд үүнтэй олон жилийн турш хамтран ажиллаж, хэрхэн зөв хийхийг мэддэг мэргэжилтнүүд байдаг. Тэд үүнийг аль хэдийн 100 удаа бичиж, хүн бүрт тайлбарласан боловч яагаад ч юм хэн ч сонсохгүй байна.

Хэрэв тэд энэ мэдлэгээ Графана руу шууд оруулж, бусад хэрэглэгчид уг функцийг дахин ашиглах боломжтой бол яах вэ? Мөн хэрэв тэд сул санах ойн хувийг тооцоолох шаардлагатай бол тэд зүгээр л функцийг ашиглах болно. Экспортлогчдыг бүтээгчид бүтээгдэхүүнийнхээ хажуугаар хэмжүүрүүдтэйгээ хэрхэн ажиллах талаар багц функцуудыг хангасан бол энэ хэмжүүрүүд нь яг юу болохыг, хэрхэн зөв тооцоолохыг мэддэг бол яах вэ?

Энэ үнэхээр байхгүй. Энэ бол би өөрөө хийсэн зүйл. Энэ бол Графана дахь номын сангийн дэмжлэг юм. NodeExporter-ийг хийсэн залуус миний ярьсан зүйлийг хийсэн гэж бодъё. Мөн тэд хэд хэдэн функцийг хангасан.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Энэ нь иймэрхүү харагдаж байна гэсэн үг. Та энэ номын санг Графана руу холбосноор засварлах ажил руу орох ба энэ хэмжигдэхүүнтэй хэрхэн ажиллахыг JSON дээр маш энгийнээр бичсэн болно. Энэ нь зарим багц функцууд, тэдгээрийн тайлбар, тэдгээр нь юу болж хувирдаг.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Энэ нь хэрэг болох байх гэж бодож байна, учир нь тэр үед та Графана дээр яг ингэж бичих байсан. Графана танд ийм ийм номын сангаас ийм ийм функц байдаг гэж "хэлдэг" - үүнийг ашиглацгаая. Энэ нь маш сайхан байх болно гэж би бодож байна.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

VictoriaMetrics-ийн талаар бага зэрэг. Бид маш олон сонирхолтой зүйлийг хийдэг. Шахалтын тухай, бусад цаг хугацааны өгөгдлийн програмуудтай хийсэн уралдааны тухай, PromQL-тэй хэрхэн ажиллах талаархи бидний тайлбарыг уншина уу, учир нь үүнд маш олон эхлэгчид байгаа, мөн босоо өргөтгөх чадвар, Thanos-тай тулгарах тухай.

"ExtendedPromQL" - Роман Хавроненкогийн илтгэлийн хуулбар

Асуулт:

Би асуултаа амьдралын энгийн түүхээр эхлүүлье. Би анх Grafana-г ашиглаж эхлэхдээ 5 мөрийн урттай маш сонирхолтой асуулт бичсэн. Эцсийн үр дүн нь маш үнэмшилтэй график юм. Энэ хуваарь бараг үйлдвэрлэлд орсон. Гэхдээ сайтар нягталж үзэхэд энэ график нь бодит байдалтай ямар ч холбоогүй утгагүй зүйлийг харуулж байгаа нь тогтоогдсон боловч тоо нь бидний хүлээж байсан хязгаарт багтаж байна. Бас миний асуулт. Бидэнд номын сан, функцүүд байгаа, гэхдээ бид Графанагийн тестийг хэрхэн бичих вэ? Та жинхэнэ серверийн чингэлэг захиалах эсвэл захиалахгүй байх бизнесийн шийдвэрээс хамаардаг нарийн төвөгтэй хүсэлтийг бичсэн байна. Бидний мэдэж байгаагаар график зурдаг энэ функц нь үнэнтэй төстэй юм. Баярлалаа.

Асуулт тавьсанд баярлалаа. Хоёр хэсэгтэй. Нэгдүгээрт, би өөрийн туршлага дээр үндэслэн ихэнх хэрэглэгчид өөрсдийн графикийг хараад тэдэнд юу үзүүлж байгааг ойлгодоггүй гэсэн сэтгэгдэл төрж байна. Зарим шалтгааны улмаас хүмүүс графикт гарсан аливаа гажигийг функц доторх алдаа байсан ч шалтаг гаргахдаа маш сайн байдаг. Хоёрдахь хэсэг нь хөгжүүлэгчид тус бүр өөрийн хүчин чадлын төлөвлөлтийг хийж, зарим магадлалаар алдаа гаргахын оронд ийм функцийг ашиглах нь таны асуудлыг шийдвэрлэхэд илүү дээр байх болно гэж надад санагдаж байна.

Хэрхэн шалгах вэ?

Хэрхэн шалгах вэ? Тийм биш байх.

Графана дахь туршилтын хувьд.

Графана үүнд ямар хамаатай вэ? Графана энэ хүсэлтийг DataSource руу шууд орчуулдаг.

Параметрүүд дээр бага зэрэг нэмдэг.

Үгүй ээ, Grafana-д юу ч нэмээгүй. Алхам гэх мэт GET параметрүүд байж болно. Үүнийг тодорхой заагаагүй боловч та үүнийг дарж болно, эсвэл та үүнийг дарж болохгүй, гэхдээ автоматаар нэмэгддэг. Та энд шалгалт бичихгүй. Энд үнэний эх сурвалж болох Графана-д найдах ёсгүй гэж би бодож байна.

Мэдээлэл өгсөнд баярлалаа! Шахсанд баярлалаа! Та хувьсагчийг графикт буулгах талаар дурьдсан, Графана дээр хувьсагч доторх хувьсагчийг ашиглах боломжгүй. Миний юу хэлэх гээд байгааг чи мэдэж байна уу?

Тиймээ.

Графана дээр сэрэмжлүүлэг үүсгэхийг хүсэх үед энэ нь эхэндээ толгой өвдөж байсан. Мөн тэнд та хост бүрт тус тусад нь сэрэмжлүүлэг хийх хэрэгтэй. Таны хийсэн энэ зүйл Графана дахь дохиололд ажилладаг уу?

Хэрэв Grafana хувьсагчдад өөрөөр хандахгүй бол тийм ээ, энэ нь ажиллах болно. Гэхдээ миний зөвлөгөө бол Grafana-д дохиололыг огт ашиглахгүй байх, та alertmanager-ийг ашиглах нь дээр.

Тийм ээ, би үүнийг ашигладаг, гэхдээ Grafana-д тохируулах нь илүү хялбар мэт санагдсан, гэхдээ зөвлөгөө өгсөнд баярлалаа!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх