"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

مان تجويز ڪريان ٿو ته رپورٽ جي ٽرانسڪرپٽ کي پڙهڻ لاءِ رومن خاورونينڪو "ExtendedPromQL"

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

منهنجي باري ۾ مختصر طور. منهنجو نالو رومي آهي. مان CloudFlare لاءِ ڪم ڪريان ٿو ۽ لنڊن ۾ رهان ٿو. پر مان پڻ آهيان VictoriaMetrics سنڀاليندڙ.
۽ مان ليکڪ آهيان ڪلڪ هائوس پلگ ان Grafana ۽ لاء ھاؤس-پراڪسي تي ڪلڪ ڪريو ClickHouse لاءِ ھڪڙو ننڍڙو پراڪسي آھي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اسان پهرئين حصي سان شروع ڪنداسين، جنهن کي ”ترجمي جون مشڪلاتون“ چئبو آهي، ۽ ان ۾ مان ان حقيقت جي باري ۾ ڳالهائيندس ته ڪنهن به ٻولي يا ان کان سواءِ صرف رابطي جي ٻولي تمام ضروري آهي. ڇو ته هي اهو آهي ته توهان پنهنجي خيالن کي ڪنهن ٻئي شخص يا سسٽم تائين پهچايو، توهان هڪ درخواست ڪيئن ٺاهيو. انٽرنيٽ تي ماڻهو بحث ڪري رهيا آهن ته ڪهڙي ٻولي بهتر آهي - جاوا يا ٻيو ڪجهه. پاڻ لاء، مون فيصلو ڪيو ته اهو هڪ ڪم چونڊڻ ضروري آهي، ڇاڪاڻ ته اهو سڀ ڪجهه مخصوص آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اچو ته شروع کان شروع ڪريون. PromQL ڇا آهي؟ PromQL Prometheus Query ٻولي آھي. اهڙي طرح اسان Prometheus ۾ سوالن کي ترتيب ڏيون ٿا ٽائيم سيريز ڊيٽا، ٽائيم سيريز حاصل ڪرڻ لاء.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

ٽائيم سيريز ڊيٽا ڇا آهي؟ لفظي طور تي، اهي ٽي پيٽرولر آهن.

هي آهي:

  • اسان ڇا ڏسي رهيا آهيون.
  • جڏهن اسان ان کي ڏسندا آهيون.
  • ۽ اهو ڪهڙو قدر ڏيکاري ٿو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

جيڪڏهن توهان هن چارٽ کي ڏسو (هي چارٽ منهنجي فون مان آهي، جيڪو منهنجي قدمن جا انگ اکر ڏيکاري ٿو)، پوءِ هتي توهان انهن سوالن جا تڪڙو جواب ڏيئي سگهو ٿا.

اسان قدمن کي ڏسي رهيا آهيون. اسان معنيٰ کي ڏسون ٿا ۽ اسان ان وقت کي ڏسون ٿا جڏهن اسان ان کي ڏسون ٿا. اهو آهي، هن آرياگرام کي ڏسي، توهان آساني سان چئي سگهو ٿا ته آچر تي آئون تقريبا 15 قدم هليو. هي ٽائيم سيريز ڊيٽا آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

ھاڻي اچو ته ”بريڪ“ (تبديل) ڪريون انھن کي ھڪ ٻئي ڊيٽا ماڊل ۾ ٽيبل جي صورت ۾. هتي اسان وٽ پڻ آهي جيڪو اسان ڏسي رهيا آهيون. هتي مون ٿورڙي اضافي ڊيٽا شامل ڪئي، جنهن کي اسين ميٽا-ڊيٽا سڏينداسين، يعني اهو مان نه هو، پر ٻه ماڻهو، مثال طور، جي ۽ خاموش باب. اھو اھو آھي جيڪو اسان ڏسي رھيا آھيون؛ اهو ڇا ڏيکاري ٿو ۽ جڏهن اهو ڏيکاري ٿو اهو قدر.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل
هاڻي اچو ته ڪوشش ڪريون ته هي سڀ ڊيٽا ڊيٽابيس ۾ محفوظ ڪريون. مثال طور، مون ورتو ClickHouse نحو. ۽ هتي اسان هڪ ٽيبل ٺاهي رهيا آهيون جنهن کي "Steps" سڏيو ويندو آهي، يعني جيڪو اسان ڏسي رهيا آهيون. هتي هڪ وقت آهي جڏهن اسان ان کي ڏسو؛ اهو ڇا ڏيکاري ٿو ۽ ڪجهه ميٽا ڊيٽا جتي اسان ذخيرو ڪنداسين اهو ڪير آهي: جي ۽ خاموش باب.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ ان کي ڏسڻ جي ڪوشش ڪرڻ لاء، اسان گرافانا استعمال ڪنداسين، ڇاڪاڻ ته، پهرين، اهو خوبصورت آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

پڻ اسان هي پلگ ان استعمال ڪنداسين. ان جا ٻه سبب آهن. پهريون اهو آهي ته مون اهو لکيو آهي. ۽ مان ڄاڻان ٿو ته ان کي گرافانا ۾ ڏيکارڻ لاءِ ڪلڪ هائوس مان ٽائيم سيريز ڊيٽا ڪڍڻ ڪيترو مشڪل آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اسان گراف پينل ۾ ڏيکارينداسين. هي گرافانا ۾ سڀ کان وڌيڪ مشهور پينل آهي ۽ وقت جي مقابلي ۾ قيمت ڏيکاري ٿو، تنهنڪري اسان کي صرف ٻه پيٽرولر جي ضرورت آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل
اچو ته آسان ترين سوال لکون - ڪيئن ڏيکاريو قدم انگ اکر Grafana ۾، هن ڊيٽا کي ClickHouse ۾ محفوظ ڪرڻ، ٽيبل ۾ جيڪو اسان ٺاهيو آهي. ۽ اسان اهڙي سادي سوال لکندا آهيون. اسان قدمن مان چونڊيندا آهيون. اسان هڪ قدر چونڊيو ۽ انهن قدرن جو وقت چونڊيو، يعني اهي ساڳيا ٽي پيٽرولر جن بابت اسان ڳالهايو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ نتيجي طور، اسان هي گراف حاصل ڪندا آهيون. ڪير ڄاڻي ته هو ايترو عجيب ڇو آهي؟

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اهو صحيح آهي، توهان کي وقت جي ترتيب ڏيڻ جي ضرورت آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ آخر ۾ اسان هڪ بهتر حاصل ڪيو، پر اڃا به عجيب شيڊول. ڪير ڄاڻي ڇو؟ اهو صحيح آهي، اتي ٻه شرڪت ڪندڙ آهن، ۽ اسان گرافانا ۾ ٻه ٽائيم سيريز ڏيون ٿا، ڇاڪاڻ ته جيڪڏهن اسان ڊيٽا جي ماڊل سان ٻيهر ڊيل ڪندا آهيون، ته پوء هر وقت سيريز هڪ نالي جو هڪ منفرد ميلاپ آهي ۽ سڀني ليبل جي اهم-قدر.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

تنهن ڪري، اسان کي هڪ خاص شخص چونڊڻ جي ضرورت آهي. اسان جيئي چونڊيندا آهيون.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ وري ڪڍو. هاڻي گراف سچ وانگر ڏسڻ ۾ اچي ٿو. هاڻي اهو هڪ عام شيڊول آهي ۽ هر شي ٺيڪ ڪم ڪري رهي آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽، شايد، توهان ڄاڻو ٿا ته ساڳي شيء بابت ڪيئن ڪجي، پر Prometheus ۾ PromQL ذريعي. لڳ ڀڳ هن طرح. ٿورو آسان. ۽ اچو ته اهو سڀ ڪجهه ٽوڙيو. اسان قدم کنيا. ۽ جي طرفان فلٽر ڪريو. اسان هتي بيان نٿا ڪريون ته اسان کي قيمت حاصل ڪرڻ جي ضرورت آهي ۽ اسان هڪ وقت نه چونڊيو آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

ھاڻي اچو ته جيئي يا خاموش باب جي حرڪت جي رفتار کي ڳڻڻ جي ڪوشش ڪريو. ClickHouse ۾، اسان کي رننگ ڊفرنس کي ڪرڻو پوندو، يعني پوائنٽن جي جوڙن جي وچ ۾ فرق کي ڳڻيو ۽ صحيح رفتار حاصل ڪرڻ لاءِ انھن کي وقت جي حساب سان ورهايو. درخواست هن طرح ڪجهه نظر ايندي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ هو تقريبن اهي قدر ڏيکاريندو، يعني تقريباً 1,8 قدم في سيڪنڊ خاموش باب يا جي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ Prometheus ۾ توهان کي خبر آهي ته اهو ڪيئن ڪجي. اڳي کان گهڻو آسان.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل۽ ان کي آسان بڻائڻ لاءِ Grafana ۾، مون هڪ اهڙو لفافو شامل ڪيو جيڪو PromQL سان بلڪل ملندڙ جلندڙ آهي. ان کي سڏيو ويندو آهي Rate Macros، يا جيڪو به توهان ان کي سڏڻ چاهيو ٿا. گرافانا ۾، توهان صرف "شرح" لکندا آهيو، پر ڪنهن به جاء تي اهو هڪ وڏي درخواست ۾ تبديل ڪري ٿو. ۽ توهان کي ان کي ڏسڻ جي به ضرورت ناهي، اهو اتي ئي آهي، پر توهان تمام گهڻو وقت بچائيندا آهيو، ڇو ته اهڙيون وڏيون SQL سوالون لکڻ هميشه مهانگو هوندو آهي. توهان آساني سان هڪ غلطي ڪري سگهو ٿا ۽ پوء سمجهي نه ٿو ته ڇا ٿي رهيو آهي هڪ ڊگهي وقت تائين.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ هي هڪ اهڙو سوال آهي جيڪو هڪ سلائيڊ تي به نه ٺهيو، ۽ مون کي ان کي ٻن ڪالمن ۾ ورهائڻو پيو. اها پڻ هڪ درخواست آهي ClickHouse ۾، جيڪا ساڳي شرح ڏئي ٿي، پر ٻنهي وقتن جي سيريز لاءِ: خاموش باب ۽ جي، انهي ڪري ته اسان وٽ پينل تي ٻه ٽائيم سيريز آهن. ۽ اهو اڳ ۾ ئي تمام ڏکيو آهي، منهنجي خيال ۾.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ Prometheus جي مطابق اهو رقم (شرح) هوندو. ClickHouse لاءِ مون RateColumns نالي ھڪ الڳ ميڪرو ٺاھيو آھي جيڪو Prometheus query وانگر نظر اچي ٿو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اسان ڏٺو ۽ اهو لڳي ٿو ته PromQL تمام ٿڌو آهي، پر ان ۾، يقينا، حدون آهن.

هي آهي:

  • محدود چونڊ.
  • Edge JOINs.
  • ڪابه مدد نه آهي.

۽ جيڪڏهن توهان ان سان گهڻي وقت تائين ڪم ڪيو آهي ته پوءِ توهان کي خبر آهي ته ڪڏهن ڪڏهن PromQL ۾ ڪجهه ڪرڻ تمام ڏکيو هوندو آهي، ۽ SQL ۾ توهان تقريباً سڀ ڪجهه ڪري سگهو ٿا، ڇاڪاڻ ته اهي سڀئي آپشنز جن بابت اسان ڳالهايو آهي، اهي SQL ۾ ڪري سگهجن ٿا. . پر ڇا ان کي استعمال ڪرڻ آسان ٿيندو؟ ۽ اها ڳالهه مون کي سمجهائي ٿي ته نه هميشه طاقتور ٻولي تمام گهڻي آسان ٿي سگهي ٿي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

تنهن ڪري، ڪڏهن ڪڏهن توهان کي ڪمن لاء ٻولي چونڊڻ جي ضرورت آهي. اهو بيٽمن ۽ سپرمين جي وچ ۾ جنگ وانگر آهي. اهو واضح آهي ته سپرمين مضبوط آهي، پر Batman هن کي شڪست ڏئي سگهيو آهي ڇاڪاڻ ته هو وڌيڪ عملي آهي ۽ ڄاڻي ٿو ته هو ڇا ڪري رهيو هو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ ايندڙ حصو آهي Extending PromQL.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

هڪ ڀيرو ٻيهر VictoriaMetrics بابت. VictoriaMetrics ڇا آهي؟ هي هڪ ٽائيم سيريز ڊيٽابيس آهي، اهو OpenSource ۾ آهي، اسان ان جي واحد ۽ ڪلستر ورزن کي ورهايو آهي. اسان جي معيارن جي مطابق، اهو سڀ کان تيز ترين آهي جيڪو هاڻي مارڪيٽ تي آهي ۽ اهو ڪمپريشن جي لحاظ کان هڪجهڙائي آهي، يعني زنده ماڻهو 0,4 بائيٽ في پوائنٽ جي ڪمپريشن جي رپورٽ ڪن ٿا، جڏهن پروميٿيس 1,2-1,4 آهي.

اسان نه رڳو پروميٿيوس جي حمايت ڪريون ٿا. اسان سپورٽ ڪريون ٿا InfluxDB, Graphite, OpenTSDB.

توهان اسان ۾ "لکيو" ڪري سگهو ٿا، اهو آهي، توهان پراڻي ڊيٽا کي منتقل ڪري سگهو ٿا.

۽ اسان Prometheus ۽ Grafana سان مڪمل طور تي ڪم ڪريون ٿا، يعني اسان PromQL انجڻ کي سپورٽ ڪريون ٿا. ۽ Grafana ۾، توھان صرف ڪري سگھوٿا Prometheus endpoint VictoriaMetrics ۾ ۽ توھان جا سڀ ڊيش بورڊ ڪم ڪندا جيئن اھي ڪندا ھئا.

پر توهان VictoriaMetrics پاران مهيا ڪيل اضافي چپس پڻ استعمال ڪري سگهو ٿا.

اسان جلدي انهن خاصيتن جي ذريعي ڪنداسين جيڪي اسان شامل ڪيا آهن.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

وقفو وقفو ختم ڪريو - توهان گرافانا ۾ پيٽرول وقفو ڇڏي سگهو ٿا. جڏھن توھان نه ٿا چاھيو ته عجيب گراف حاصل ڪريو جڏھن پينل ۾ زوم-ان/آؤٽ ڪريو، ان کي استعمال ڪرڻ جي صلاح ڏني وئي آھي متغير $__interval. هي هڪ اندروني گرافانا تبديلي آهي ۽ اهو ڊيٽا جي حد پاڻ کي چونڊيندو آهي. ۽ VictoriaMetrics پاڻ سمجهي سگهي ٿو ته هي رينج ڇا هجڻ گهرجي. ۽ توهان کي توهان جي سڀني درخواستن کي اپڊيٽ ڪرڻ جي ضرورت ناهي. اهو گهڻو آسان ٿي ويندو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

ٻيو فنڪشن وقفو حوالو آهي. توھان ھن فاصلي کي پنھنجي اظهار ۾ استعمال ڪري سگھو ٿا. توھان کي ضرب، تقسيم، منتقلي، حوالو ڪري سگھو ٿا.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اڳيون رول اپ فنڪشن خاندان آهي. رول اپ فنڪشن توهان جي ڪنهن به ٽائيم سيريز کي ٽن الڳ ٽائيم سيريز ۾ تبديل ڪري ٿو. اهي آهن منٽ، وڌ ۾ وڌ ۽ اوسط. مون کي اهو تمام سولو لڳي ٿو، ڇاڪاڻ ته ڪڏهن ڪڏهن اهو ظاهر ڪري سگهي ٿو ڪجهه ٻاهريون (عدمتون) ۽ غلطيون.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ جيڪڏهن توهان صرف ڪاوڙ يا شرح ڪري رهيا آهيو، ته پوءِ توهان شايد ڪجهه ڪيسن کي ياد ڪري سگهو ٿا جتي ٽائيم سيريز توهان جي ارادي جي طريقي سان عمل نٿو ڪري. هن فنڪشن سان ڏسڻ تمام آسان آهي، اچو ته چئو ته وڌ ۾ وڌ اوسط کان تمام گهڻو آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اڳيون ڊفالٽ متغير آهي. ڊفالٽ - هن جو مطلب آهي ته اسان کي گرافانا ۾ ڪهڙي قدر ڪڍڻ جي ضرورت آهي جيڪڏهن اسان وٽ هن وقت ٽائيم سيريز نه آهي. اهو ڪڏهن ٿئي ٿو؟ اچو ته چئو ته توهان ڪجهه غلطي جي ماپ برآمد ڪريو. ۽ توهان وٽ هڪ اهڙي بهترين ايپليڪيشن آهي جيڪا جڏهن توهان شروع ڪندا آهيو، توهان کي ايندڙ ٽن ڪلاڪن يا هڪ ڏينهن لاءِ به ڪا به غلطي نه هوندي آهي. ۽ توھان وٽ ڊيش بورڊ آھن جيڪي رشتا ڏيکاريندا آھن ڪاميابي کان غلطي تائين. ۽ اهي توهان کي ڪجهه به نه ڏيکاريندا ڇو ته توهان وٽ غلطي ميٽرڪ ناهي. ۽ ڊفالٽ ۾ توھان ڪجھ به بيان ڪري سگھو ٿا.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

Keep_last_Value - ميٽرڪ جي آخري قيمت کي بچائيندو آھي جيڪڏھن اھو غائب آھي. جيڪڏهن ايندڙ اسڪراپ کان پوءِ Prometheus ان کي 5 منٽن اندر نه لڌو ته پوءِ هتي اسان ان جي آخري قيمت کي ياد ڪنداسين ۽ توهان جا چارٽ ٻيهر نه ڀڃندا.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

Scrape_interval - ڏيکاري ٿو ڪيترا ڀيرا Prometheus توهان جي ميٽرڪ تي ڊيٽا گڏ ڪري ٿو، ڪهڙي تعدد سان. هتي توهان پاس ڏسي سگهو ٿا، مثال طور.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل
ليبل مٽائڻ هڪ مشهور خصوصيت آهي. پر اسان سمجهون ٿا ته اهو ٿورڙو پيچيدو آهي ڇاڪاڻ ته اهو انٽيجر دليلن کي وٺندو آهي. ۽ توهان کي نه رڳو 5 دليلن کي ياد رکڻ جي ضرورت آهي، پر انهن جي ترتيب کي پڻ ياد رکڻ گهرجي.
"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل
تنهن ڪري، ڇو نه انهن کي آسان بڻائي؟ اهو آهي، ان کي ٽوڙيو ننڍن ڪمن ۾ واضح نحو سان.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ هاڻي سڀ کان وڌيڪ دلچسپ. اسان ڇو ٿا سوچيو ته اهو وڌايو ويو آهي PromQL؟ ڇو ته اسان عام ٽيبل ايڪسپريس جي حمايت ڪندا آهيون. توهان QR ڪوڊ جي پيروي ڪري سگهو ٿا (https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL)، مثالن سان لنڪ ڏسو، راند جي ميدان مان، جتي توهان صرف برائوزر ۾ انسٽال ڪرڻ کان سواءِ سڌو VictoriaMetrics ۾ سوالن کي هلائي سگهو ٿا.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ اهو ڇا آهي؟ مٿين کان اها درخواست ڪافي مقبول درخواست آهي. منهنجو خيال آهي ته ڪيترن ئي ڪمپنين ۾ ڪنهن به ڊيش بورڊ ۾ توهان هر شيء لاء ساڳيو فلٽر استعمال ڪندا آهيو. عام طور تي ائين. پر جڏهن توهان کي ڪجهه نئون فلٽر شامل ڪرڻ جي ضرورت آهي، توهان کي هر پينل کي اپڊيٽ ڪرڻو پوندو، يا ڊيش بورڊ کي ڊائون لوڊ ڪرڻو پوندو، ان کي JSON ۾ کوليو، هڪ متبادل ڳوليو، جيڪو پڻ وقت وٺندو آهي. ڇو نه هن قيمت کي هڪ متغير ۾ ذخيرو ڪريو ۽ ان کي ٻيهر استعمال ڪريو؟ اهو ڏسڻ ۾ اچي ٿو، منهنجي خيال ۾، تمام آسان ۽ صاف.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

مثال طور، جڏهن مون کي سڀني درخواستن ۾ گرافانا ۾ فلٽر تازه ڪاري ڪرڻ جي ضرورت آهي، ۽ ڊيش بورڊ تمام وڏو ٿي سگهي ٿو يا انهن مان ڪيترائي به ٿي سگهن ٿا. ۽ مان هن مسئلي کي گرافانا ۾ ڪيئن حل ڪرڻ چاهيندس؟

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

مان هن مسئلي کي هن طرح حل ڪريان ٿو: مان هڪ عام فلٽر ٺاهيان ٿو ۽ هن فلٽر کي ان ۾ بيان ڪريان ٿو، ۽ پوءِ آئون ان کي سوالن ۾ ٻيهر استعمال ڪريان ٿو. پر جيڪڏھن توھان ھاڻي ائين ڪريو ٿا، اھو ڪم نه ڪندو ڇو ته گرافانا توھان کي سوال متغير اندر متغير استعمال ڪرڻ جي اجازت نٿو ڏئي. ۽ اهو ٿورو عجيب آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ تنهنڪري مون هڪ اختيار ڪيو جيڪو توهان کي اهو ڪرڻ جي اجازت ڏئي ٿو. ۽ جيڪڏھن توھان چاھيو ٿا يا اھڙي خصوصيت چاھيو ٿا، پوء حمايت ڪريو يا ناپسند ڪريو جيڪڏھن توھان ھن خيال کي پسند نه ڪيو. https://github.com/grafana/grafana/pull/16694

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

PromQL بابت وڌيڪ وڌايو ويو. هتي اسان نه رڳو هڪ متغير جي وضاحت ڪريون ٿا، پر سڌو سنئون هڪ مڪمل فنڪشن. ۽ اسان ان کي ru (وسيع جو استعمال) سڏين ٿا. ۽ هي فنڪشن مفت وسيلن کي قبول ڪري ٿو، هڪ وسيلن جي حد، ۽ هڪ فلٽر. نحو سادو لڳي ٿو. ۽ هن فنڪشن کي استعمال ڪرڻ تمام آسان آهي ۽ اسان وٽ مفت ميموري جو فيصد ڳڻڻ. يعني اسان وٽ ڪيتري ميموري آهي، ڪهڙي حد ۽ ڪيئن فلٽر ڪجي. اهو تمام گهڻو بهتر نظر اچي ٿو جيڪڏهن توهان اهو سڀ ڪجهه ساڳيا فلٽر ٻيهر استعمال ڪندي لکي رهيا آهيو، ڇاڪاڻ ته اهو هڪ وڏي، وڏي سوال ۾ بدلجي ويندو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

۽ هتي اهڙي وڏي، وڏي درخواست جو هڪ مثال آهي. اهو Grafana لاءِ سرڪاري NodeExporter ڊيش بورڊ مان آهي. پر مون کي سمجهه ۾ نٿو اچي ته هتي ڇا ٿي رهيو آهي. اهو آهي، يقينا، مان سمجهان ٿو ته جيڪڏهن توهان ويجهي ڏسو، پر بریکٹ جو تعداد فوري طور تي سمجهڻ جي حوصله کي گهٽائي سگھي ٿو ته هتي ڇا ٿي رهيو آهي. ۽ ڇو نه ان کي آسان ۽ واضح ڪيو وڃي؟

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

مثال طور، هن طرح، متغيرن ۾ اهم شين يا حصن کي نمايان ڪرڻ. ۽ پوء پنھنجي بنيادي رياضي ڪريو. اهو اڳ ۾ ئي وڌيڪ پروگرامنگ وانگر آهي، اهو آهي جيڪو آئون مستقبل ۾ گرافانا ۾ ڏسڻ چاهيندس.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

هتي هڪ ٻيو مثال آهي ته ڪيئن اسان ان کي وڌيڪ آسان بڻائي سگهون ٿا جيڪڏهن اسان وٽ اڳ ۾ ئي هي ru فنڪشن آهي، ۽ اهو اڳ ۾ ئي سڌو VictoriaMetrics ۾ موجود آهي. ۽ پوءِ توهان صرف ڪيش ڪيل قدر پاس ڪيو جيڪو توهان CTE ۾ اعلان ڪيو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

مون اڳ ۾ ئي ڳالهايو آهي ته صحيح پروگرامنگ ٻولي استعمال ڪرڻ ڪيترو ضروري آهي. ۽، شايد، هر ڪمپني ۾ گرافانا ۾ ڪجهه مختلف ٿي رهيو آهي. ۽، شايد، توھان اڃا تائين پنھنجي ڊولپرز کي گرافانا تائين رسائي ڏيو ٿا، ۽ ڊولپرز پنھنجو ڪجھ ڪم ڪن ٿا. ۽ اهي سڀ ڪجهه مختلف طريقي سان ڪندا آهن. پر مان چاهيان ٿو ته اهو ڪنهن به طرح ساڳيو آهي، اهو آهي، هڪ عام معيار تائين گهٽجي ويو.

اچو ته چئو ته توهان وٽ صرف سسٽم انجنيئر نه آهي، شايد توهان وٽ ماهر، ڊيوپس يا SREs پڻ آهن. ٿي سگهي ٿو توهان وٽ ماهر هجن جيڪي ڄاڻن ٿا ته مانيٽرنگ ڇا آهي، ڄاڻو ته گرافانا ڇا آهي، يعني اهي هن سان سالن کان ڪم ڪري رهيا آهن ۽ اهي ڄاڻن ٿا ته اهو صحيح ڪيئن ڪجي. ۽ اهي پهريان ئي 100 ڀيرا لکيا ۽ هر ڪنهن کي بيان ڪيو، پر ڪجهه سببن لاء ڪو به نه ٻڌي.

ڇا جيڪڏهن اهي هن علم کي سڌو سنئون گرافانا ۾ وجهي سگھن ٿا ته جيئن ٻيا صارف افعال کي ٻيهر استعمال ڪري سگھن؟ ۽ جيڪڏھن اھو ضروري آھي ته مفت ياداشت جي فيصد کي ڳڻڻ لاء، پوء اھي صرف فنڪشن کي لاڳو ڪندا. پر ڇا ٿيندو ته برآمد ڪندڙ ٺاهيندڙن، انهن جي پيداوار سان گڏ، انهن جي ڪارڪردگي جو هڪ سيٽ پڻ مهيا ڪيو، انهن جي ميٽرڪس سان ڪيئن ڪم ڪجي، ڇاڪاڻ ته اهي ڄاڻن ٿا ته اهي ميٽرڪس ڇا آهن ۽ انهن کي صحيح طريقي سان ڪيئن ڳڻڻ؟

هي هڪ واقعي موجود ناهي. هتي اهو آهي جيڪو مون پاڻ ڪيو. هي گرافانا ۾ لائبريري جي مدد آهي. اچو ته چئو ته جن ماڻهن NodeExporter ٺاهيو اهو ڪيو جيڪو مون بيان ڪيو آهي. ۽ پڻ خاصيتن جو هڪ سيٽ مهيا ڪيو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

اهو آهي، اهو ڪجهه هن وانگر ڏسڻ ۾ اچي ٿو. توهان هن لائبريري کي گرافانا سان ڳنڍيندا آهيو، توهان ايڊيٽنگ ۾ وڃو، ۽ هتي اهو بلڪل آسان آهي JSON ۾ هن ميٽرڪ سان ڪيئن ڪم ڪجي. اهو آهي، افعال جو ڪجهه سيٽ، انهن جي وضاحت ۽ انهن ۾ ڇا آهي.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

منهنجي خيال ۾، اهو ڪارائتو ٿي سگهي ٿو، ڇو ته پوءِ توهان گرافانا ۾ ائين ئي لکندا. ۽ گرافانا توهان کي "ٻڌائي ٿو" ته فلاڻي ۽ اهڙي لائبريري مان هڪ اهڙي فنڪشن آهي - اچو ته ان کي استعمال ڪريون. مان سمجهان ٿو ته اهو تمام ٿڌو هوندو.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

VictoriaMetrics بابت ٿورو. اسان ڪيتريون ئي دلچسپ شيون ڪندا آهيون. اسان جا مضمون پڙهو ڪمپريشن بابت، اسان جي مقابلي جي باري ۾ ٻين ٽائيم سيريز ڊيٽا ايپليڪيشنن سان، اسان جي وضاحت بابت ڪيئن ڪم ڪجي PromQL سان، ڇو ته هن ۾ ڪيترائي وڌيڪ شروعات ڪندڙ آهن، انهي سان گڏ عمودي اسڪاليبلٽي بابت ۽ Thanos سان مقابلو بابت.

"ExtendedPromQL" - رومن Khavronenko جي رپورٽ جي نقل

سوال:

مان پنهنجي سوال کي هڪ سادي زندگي جي ڪهاڻي سان شروع ڪندس. جڏهن مون پهريون ڀيرو گرافانا استعمال ڪرڻ شروع ڪيو، مون هڪ تمام قائل ڪندڙ 5 لائن سوال لکيو. آخري نتيجو هڪ تمام قائل چارٽ آهي. هي گراف لڳ ڀڳ پيداوار ۾ هليو ويو آهي. پر ويجهي معائنو ڪرڻ تي، اهو ظاهر ٿيو ته هي چارٽ بلڪل بيوقوف ڏيکاري ٿو جنهن جو حقيقت سان ڪو به تعلق ناهي، جيتوڻيڪ انگ اکر ان حد ۾ اچي وڃن ٿا جيڪي اسان کي ڏسڻ جي اميد هئي. ۽ منهنجو سوال. اسان وٽ لائبريريون آهن، اسان وٽ ڪم آهن، پر اسان گرافانا لاءِ ٽيسٽ ڪيئن لکون؟ توهان هڪ پيچيده سوال لکيو آهي جيڪو ڪاروباري فيصلي کي متاثر ڪري ٿو - سرور جي حقيقي ڪنٽينر کي ترتيب ڏيڻ يا نه آرڊر ڪرڻ لاء. ۽ جيئن اسان ڄاڻون ٿا، هي فنڪشن جيڪو گراف ٺاهي ٿو سچ سان ملندڙ جلندڙ آهي. تنهنجي مهرباني.

سوال لاءِ مهرباني. هتي ٻه حصا آهن. پهرين، مون کي تاثر ملي ٿو، منهنجي تجربي جي بنياد تي، ته اڪثر استعمال ڪندڙ، جڏهن اهي پنهنجن چارٽ کي ڏسندا آهن، نه سمجھندا آهن ته اهي ڇا ڏيکاري رهيا آهن. ڪنهن نه ڪنهن طرح، ماڻهو ڏاڍا سٺا هوندا آهن عذر سان گڏ ڪنهن به انمولي لاءِ جيڪو چارٽ تي ٿئي ٿو، جيتوڻيڪ اهو هڪ فنڪشن اندر بگ آهي. ۽ ٻيو حصو - اهو مون کي لڳي ٿو ته اهڙن ڪمن کي استعمال ڪرڻ توهان جي مسئلي کي حل ڪرڻ لاءِ گهڻو بهتر هوندو، بجاءِ توهان جي هر ڊولپر پنهنجي پنهنجي صلاحيت جي منصوبابندي ڪرڻ ۽ ڪجهه امڪانن سان غلطيون ڪرڻ جي.

ڪئين چيڪ ڪجي؟

ڪيئن چيڪ ڪرڻ لاء؟ شايد نه.

Grafana ۾ هڪ امتحان جي طور تي.

۽ گرافانا بابت ڇا؟ گرافانا هن درخواست کي سڌو سنئون ڊيٽا سورس ڏانهن ترجمو ڪري ٿو.

پيراگراف ۾ ٿورڙو شامل ڪرڻ سان.

نه، Grafana ۾ ڪجھ به شامل نه ڪيو ويو آھي. اتي ٿي سگھي ٿو GET پيٽرول، جهڙوڪ قدم. اهو واضح طور تي بيان نه ڪيو ويو آهي، پر توهان ان کي ختم ڪري سگهو ٿا، توهان ان کي ختم نه ڪري سگهو ٿا، پر اهو خودڪار طور تي شامل ڪيو ويو آهي. توهان هتي ٽيسٽ نه لکندا آهيو. مان نه ٿو سمجهان ته توهان کي هتي گرافانا تي اعتبار ڪرڻ گهرجي سچ جو ذريعو.

رپورٽ لاءِ مهرباني! ڪمپريشن لاءِ مهرباني! توهان هڪ گراف ۾ هڪ متغير جي نقشي جي باري ۾ ياد ڪيو، ته گرافانا ۾ توهان هڪ متغير ۾ هڪ متغير استعمال نٿا ڪري سگهو. تون سمجهين ٿو ته منهنجو مطلب ڇا آهي؟

ها.

اهو شروع ۾ هڪ سر درد هو جڏهن مون گرافانا ۾ هڪ خبرداري ڪرڻ چاهيو. ۽ اتي توهان کي هر ميزبان لاء الڳ الڳ خبردار ڪرڻ جي ضرورت آهي. ھتي اھو ڪم آھي جيڪو توھان ڪيو آھي، ڇا اھو گرافانا ۾ الرٽ لاء ڪم ڪري ٿو؟

جيڪڏهن گرافانا ڪنهن ٻئي طريقي سان متغير تائين رسائي نٿو ڪري، ته ها، اهو ڪم ڪندو. پر منهنجو مشورو اهو آهي ته گرافانا ۾ الرٽ کي استعمال نه ڪيو وڃي، توهان بهتر ڪندا ته الرٽ مئنيجر استعمال ڪريو.

ها، مان ان کي استعمال ڪريان ٿو، پر اهو صرف گرافانا ۾ سيٽ ڪرڻ آسان لڳي ٿو، پر ٽپ لاء مهرباني!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو