"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

میں رومن کھاورونینکو "ExtendedPromQL" کی رپورٹ کا ٹرانسکرپٹ پڑھنے کی تجویز کرتا ہوں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

میرے بارے میں مختصراً۔ میرا نام رومن ہے۔ میں CloudFlare کے لیے کام کرتا ہوں اور لندن میں رہتا ہوں۔ لیکن میں وکٹوریہ میٹرکس مینٹینر بھی ہوں۔
اور میں مصنف ہوں۔ ہاؤس پلگ ان پر کلک کریں۔ گرافانا اور کے لیے ہاؤس پراکسی پر کلک کریں۔ ClickHouse کے لیے ایک چھوٹی پراکسی ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

ہم پہلے حصے سے شروع کریں گے جسے "ترجمے کی مشکلات" کہا جاتا ہے اور اس میں میں اس حقیقت کے بارے میں بات کروں گا کہ کوئی بھی زبان یا یہاں تک کہ صرف رابطے کی زبان بہت اہم ہے۔ کیونکہ اس طرح آپ اپنے خیالات کو کسی دوسرے شخص یا نظام تک پہنچاتے ہیں، آپ کس طرح درخواست تیار کرتے ہیں۔ انٹرنیٹ پر لوگ اس بارے میں بحث کر رہے ہیں کہ کون سی زبان بہتر ہے - جاوا یا کوئی اور۔ اپنے لئے، میں نے فیصلہ کیا کہ ایک کام کا انتخاب کرنا ضروری ہے، کیونکہ یہ سب کچھ مخصوص ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

آئیے شروع سے شروع کرتے ہیں۔ PromQL کیا ہے؟ PromQL Prometheus Query Language ہے۔ اس طرح ہم ٹائم سیریز ڈیٹا، ٹائم سیریز حاصل کرنے کے لیے Prometheus میں سوالات بناتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

ٹائم سیریز کا ڈیٹا کیا ہے؟ لفظی طور پر، یہ تین پیرامیٹرز ہیں.

یہ ہیں:

  • ہم کیا دیکھ رہے ہیں.
  • جب ہم اسے دیکھتے ہیں۔
  • اور یہ کیا قدر ظاہر کرتا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اگر آپ اس چارٹ کو دیکھیں (یہ چارٹ میرے فون سے لیا گیا ہے، جس میں میرے قدموں کے اعدادوشمار دکھائے گئے ہیں)، تو یہاں آپ ان سوالات کے فوری جواب دے سکتے ہیں۔

ہم قدم دیکھ رہے ہیں۔ ہم معنی دیکھتے ہیں اور جب ہم اسے دیکھتے ہیں تو ہم وقت دیکھتے ہیں۔ یعنی اس خاکے کو دیکھ کر آپ آسانی سے کہہ سکتے ہیں کہ اتوار کو میں تقریباً 15 قدم چلا۔ یہ ٹائم سیریز کا ڈیٹا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اب آئیے انہیں ٹیبل کی شکل میں دوسرے ڈیٹا ماڈل میں "بریک" (تبدیل) کرتے ہیں۔ یہاں ہمارے پاس بھی وہی ہے جو ہم دیکھ رہے ہیں۔ یہاں میں نے تھوڑا سا اضافی ڈیٹا شامل کیا، جسے ہم میٹا ڈیٹا کہیں گے، یعنی یہ میں نہیں تھا، بلکہ دو لوگ تھے، مثال کے طور پر، جے اور سائلنٹ باب۔ یہ وہی ہے جو ہم دیکھ رہے ہیں؛ یہ کیا دکھاتا ہے اور کب یہ اس قدر کو ظاہر کرتا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل
اب آئیے اس تمام ڈیٹا کو ڈیٹا بیس میں محفوظ کرنے کی کوشش کرتے ہیں۔ مثال کے طور پر، میں نے ClickHouse کا نحو لیا ہے۔ اور یہاں ہم ایک ٹیبل بنا رہے ہیں جسے "Steps" کہتے ہیں، یعنی جسے ہم دیکھ رہے ہیں۔ یہاں ایک وقت ہے جب ہم اسے دیکھتے ہیں؛ یہ کیا دکھاتا ہے اور کچھ میٹا ڈیٹا جہاں ہم اسٹور کریں گے کہ یہ کون ہے: جے اور سائلنٹ باب۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور اس سب کو دیکھنے کی کوشش کرنے کے لیے، ہم گرافانا استعمال کریں گے، کیونکہ، سب سے پہلے، یہ خوبصورت ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اس کے علاوہ ہم اس پلگ ان کا استعمال کریں گے۔ اس کی دو وجوہات ہیں۔ پہلی وجہ یہ ہے کہ میں نے اسے لکھا ہے۔ اور میں بخوبی جانتا ہوں کہ Grafana میں دکھانے کے لیے ClickHouse سے ٹائم سیریز کا ڈیٹا نکالنا کتنا مشکل ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

ہم گراف پینل میں دکھائیں گے۔ یہ گرافانا میں سب سے مقبول پینل ہے اور وقت کے مقابلے میں قدر ظاہر کرتا ہے، لہذا ہمیں صرف دو پیرامیٹرز کی ضرورت ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل
آئیے سب سے آسان سوال لکھتے ہیں - ہم نے جو ٹیبل بنایا ہے اس میں اس ڈیٹا کو ClickHouse میں اسٹور کرتے ہوئے Grafana میں قدموں کے اعدادوشمار کیسے دکھائے جائیں۔ اور ہم اتنا آسان سوال لکھتے ہیں۔ ہم مراحل میں سے انتخاب کرتے ہیں۔ ہم ایک قدر منتخب کرتے ہیں اور ان اقدار کا وقت منتخب کرتے ہیں، یعنی وہی تین پیرامیٹرز جن کے بارے میں ہم نے بات کی تھی۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور نتیجے کے طور پر، ہمیں یہ گراف ملتا ہے۔ کون جانے وہ اتنا عجیب کیوں ہے؟

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

یہ ٹھیک ہے، آپ کو وقت کے مطابق ترتیب دینے کی ضرورت ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور آخر میں ہمیں ایک بہتر، لیکن پھر بھی عجیب شیڈول ملتا ہے۔ کون جانے کیوں؟ یہ ٹھیک ہے، دو شرکاء ہیں، اور ہم گرافانا میں دو ٹائم سیریز دیتے ہیں، کیونکہ اگر ہم ڈیٹا ماڈل کے ساتھ دوبارہ ڈیل کرتے ہیں، تو ہر بار سیریز ایک نام اور تمام لیبل کی کلیدی اقدار کا ایک منفرد مجموعہ ہوتی ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

لہذا، ہمیں ایک مخصوص شخص کو منتخب کرنے کی ضرورت ہے. ہم جے کا انتخاب کرتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور دوبارہ کھینچیں۔ اب گراف سچ کی طرح لگتا ہے۔ اب یہ معمول کا شیڈول ہے اور سب کچھ ٹھیک چل رہا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور، شاید، آپ جانتے ہیں کہ اسی چیز کے بارے میں کیسے کرنا ہے، لیکن Prometheus میں PromQL کے ذریعے۔ تقریباً اس طرح۔ تھوڑا آسان۔ اور آئیے یہ سب توڑ دیں۔ ہم نے قدم اٹھائے۔ اور جے کے ذریعہ فلٹر کریں۔ ہم یہاں یہ واضح نہیں کرتے کہ ہمیں ایک قدر حاصل کرنے کی ضرورت ہے اور ہم وقت کا انتخاب نہیں کرتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اب جے یا سائلنٹ باب کی حرکت کی رفتار کا حساب لگانے کی کوشش کرتے ہیں۔ کلک ہاؤس میں، ہمیں رننگ ڈیفرنس کرنا ہوگا، یعنی پوائنٹس کے جوڑوں کے درمیان فرق کا حساب لگانا اور صحیح رفتار حاصل کرنے کے لیے انہیں وقت کے حساب سے تقسیم کرنا ہوگا۔ درخواست کچھ اس طرح نظر آئے گی۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور وہ تقریباً یہ اقدار دکھائے گا، یعنی تقریباً 1,8 قدم فی سیکنڈ خاموش باب یا جے کرتا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور Prometheus میں آپ جانتے ہیں کہ اسے کیسے کرنا ہے۔ پہلے سے کہیں زیادہ آسان۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقلاور گرافانا میں اسے آسان بنانے کے لیے، میں نے ایسا ریپر شامل کیا جو پروم کیو ایل سے بہت ملتا جلتا نظر آتا ہے۔ اسے ریٹ میکروس کہتے ہیں، یا جو بھی آپ اسے کہنا چاہتے ہیں۔ گرافانا میں، آپ صرف "ریٹ" لکھتے ہیں، لیکن کہیں گہرائی میں یہ اتنی بڑی درخواست میں بدل جاتا ہے۔ اور آپ کو اسے دیکھنے کی بھی ضرورت نہیں ہے، یہ وہیں کہیں ہے، لیکن آپ کا بہت وقت بچ جاتا ہے، کیونکہ اتنے بڑے SQL سوالات لکھنا ہمیشہ مہنگا پڑتا ہے۔ آپ آسانی سے غلطی کر سکتے ہیں اور پھر طویل عرصے تک سمجھ نہیں سکتے کہ کیا ہو رہا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور یہ ایک ایسا سوال ہے جو ایک سلائیڈ پر بھی فٹ نہیں بیٹھا اور مجھے اسے دو کالموں میں تقسیم کرنا پڑا۔ یہ کلک ہاؤس میں بھی ایک درخواست ہے، جو ایک ہی شرح بناتی ہے، لیکن دونوں ٹائم سیریز کے لیے: سائلنٹ باب اور جے، تاکہ ہمارے پاس پینل پر دو ٹائم سیریز ہوں۔ اور یہ میری رائے میں پہلے ہی بہت مشکل ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور پرومیتھیس کے مطابق یہ رقم (شرح) ہوگی۔ ClickHouse کے لیے میں نے RateColumns کے نام سے ایک الگ میکرو بنایا جو کہ Prometheus کے سوال کی طرح لگتا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

ہم نے دیکھا اور ایسا لگتا ہے کہ پروم کیو ایل بہت اچھا ہے، لیکن یقیناً اس کی حدود ہیں۔

یہ ہیں:

  • محدود منتخب کریں۔
  • Edge JOINs۔
  • کوئی حمایت نہیں ہے.

اور اگر آپ نے طویل عرصے سے اس کے ساتھ کام کیا ہے، تو آپ جانتے ہیں کہ بعض اوقات PromQL میں کچھ کرنا بہت مشکل ہوتا ہے، اور SQL میں آپ تقریباً سب کچھ کر سکتے ہیں، کیونکہ یہ تمام آپشنز جن کے بارے میں ہم نے ابھی بات کی ہے وہ SQL میں ہو سکتے ہیں۔ . لیکن کیا اسے استعمال کرنا آسان ہوگا؟ اور یہ مجھے یہ سوچنے پر مجبور کرتا ہے کہ ہمیشہ طاقتور ترین زبان سب سے زیادہ آسان نہیں ہو سکتی۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

لہذا، بعض اوقات آپ کو کاموں کے لیے زبان کا انتخاب کرنے کی ضرورت ہوتی ہے۔ یہ بیٹ مین اور سپرمین کے درمیان جنگ کی طرح ہے۔ یہ واضح ہے کہ سپرمین زیادہ مضبوط ہے، لیکن بیٹ مین اسے شکست دینے میں کامیاب رہا کیونکہ وہ زیادہ عملی ہے اور جانتا تھا کہ وہ کیا کر رہا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور اگلا حصہ Extending PromQL ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

ایک بار پھر وکٹوریہ میٹرکس کے بارے میں۔ وکٹوریہ میٹرکس کیا ہے؟ یہ ٹائم سیریز کا ڈیٹا بیس ہے، یہ اوپن سورس میں ہے، ہم اس کے سنگل اور کلسٹر ورژن تقسیم کرتے ہیں۔ ہمارے معیارات کے مطابق، یہ اب مارکیٹ میں سب سے تیز رفتار ہے اور یہ کمپریشن کے لحاظ سے یکساں ہے، یعنی زندہ لوگ تقریباً 0,4 بائٹس فی پوائنٹ کے کمپریشن کی اطلاع دیتے ہیں، جب کہ Prometheus کے پاس 1,2-1,4 ہے۔

ہم نہ صرف پرومیتھیس کی حمایت کرتے ہیں۔ ہم InfluxDB، Graphite، OpenTSDB کو سپورٹ کرتے ہیں۔

آپ ہم میں "لکھ" سکتے ہیں، یعنی آپ پرانا ڈیٹا منتقل کر سکتے ہیں۔

اور ہم Prometheus اور Grafana کے ساتھ بھی بالکل کام کرتے ہیں، یعنی ہم PromQL انجن کو سپورٹ کرتے ہیں۔ اور Grafana میں، آپ آسانی سے Prometheus endpoint کو VictoriaMetrics میں تبدیل کر سکتے ہیں اور آپ کے تمام ڈیش بورڈز کام کریں گے جیسا کہ انہوں نے کیا تھا۔

لیکن آپ VictoriaMetrics کے ذریعے فراہم کردہ اضافی چپس بھی استعمال کر سکتے ہیں۔

ہم اپنی شامل کردہ خصوصیات کو تیزی سے دیکھیں گے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

وقفہ پیرم کو چھوڑ دیں - آپ گرافانا میں پیرامیٹر وقفہ چھوڑ سکتے ہیں۔ جب آپ پینل میں زوم ان/آؤٹ کرتے وقت عجیب و غریب گراف حاصل نہیں کرنا چاہتے تو متغیر کو استعمال کرنے کی سفارش کی جاتی ہے۔ $__interval. یہ ایک داخلی گرافانا تبدیلی ہے اور یہ خود ڈیٹا کی حد کا انتخاب کرتی ہے۔ اور VictoriaMetrics خود سمجھ سکتا ہے کہ یہ رینج کیا ہونی چاہیے۔ اور آپ کو اپنی تمام درخواستوں کو اپ ڈیٹ کرنے کی ضرورت نہیں ہے۔ یہ بہت آسان ہو جائے گا.

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

دوسرا فنکشن وقفہ حوالہ ہے۔ آپ اس وقفے کو اپنے تاثرات میں استعمال کر سکتے ہیں۔ آپ اسے ضرب، تقسیم، منتقلی، حوالہ دے سکتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اگلا رول اپ فنکشن فیملی ہے۔ رول اپ فنکشن آپ کی کسی بھی ٹائم سیریز کو تین الگ الگ ٹائم سیریز میں بدل دیتا ہے۔ یہ کم سے کم، زیادہ سے زیادہ اور اوسط ہیں۔ مجھے یہ بہت آسان لگتا ہے، کیونکہ بعض اوقات یہ کچھ آؤٹ لیرز (بے ضابطگیوں) اور غلطیاں دکھا سکتا ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور اگر آپ صرف غصہ یا ریٹ کر رہے ہیں، تو آپ شاید کچھ ایسے معاملات کو یاد کر سکتے ہیں جہاں ٹائم سیریز آپ کے ارادے کے مطابق برتاؤ نہیں کرتی ہے۔ اس فنکشن کے ساتھ دیکھنا بہت آسان ہے، ہم کہتے ہیں کہ max اوسط سے بہت زیادہ ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اگلا ڈیفالٹ متغیر ہے۔ پہلے سے طے شدہ - اس کا مطلب ہے کہ اگر ہمارے پاس اس وقت ٹائم سیریز نہیں ہے تو ہمیں گرافانا میں کیا قدر نکالنے کی ضرورت ہے۔ یہ کب ہوتا ہے؟ ہم کہتے ہیں کہ آپ کچھ ایرر میٹرکس ایکسپورٹ کرتے ہیں۔ اور آپ کے پاس ایسی ٹھنڈی ایپلی کیشن ہے کہ جب آپ شروع کرتے ہیں تو اگلے تین گھنٹے یا یہاں تک کہ ایک دن تک آپ میں کوئی غلطی نہیں ہوتی اور نہ ہی کوئی غلطی ہوتی ہے۔ اور آپ کے پاس ڈیش بورڈز ہیں جو کامیابی سے غلطی تک تعلقات کو ظاہر کرتے ہیں۔ اور وہ آپ کو کچھ نہیں دکھائیں گے کیونکہ آپ کے پاس ایرر میٹرک نہیں ہے۔ اور ڈیفالٹ میں آپ کچھ بھی بتا سکتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

Keep_last_Value - میٹرک کی آخری قدر کو محفوظ کرتا ہے اگر یہ غائب ہے۔ اگر اگلی سکریپ کے بعد پرومیتھیس اسے 5 منٹ کے اندر نہیں ملا تو ہم یہاں اس کی آخری قیمت یاد رکھیں گے اور آپ کے چارٹ دوبارہ نہیں ٹوٹیں گے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

Scrape_interval - دکھاتا ہے کہ Prometheus آپ کے میٹرک پر کتنی بار ڈیٹا اکٹھا کرتا ہے، کس فریکوئنسی کے ساتھ۔ مثال کے طور پر یہاں آپ پاس دیکھ سکتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل
لیبل کی تبدیلی ایک مقبول خصوصیت ہے۔ لیکن ہمارے خیال میں یہ قدرے پیچیدہ ہے کیونکہ یہ عددی دلائل لیتا ہے۔ اور آپ کو نہ صرف 5 دلائل یاد رکھنے کی ضرورت ہے بلکہ ان کی ترتیب کو بھی یاد رکھنا چاہیے۔
"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل
لہذا، کیوں نہ انہیں آسان بنایا جائے؟ یعنی اسے واضح نحو کے ساتھ چھوٹے چھوٹے فنکشنز میں توڑ دیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور اب سب سے زیادہ دلچسپ. ہم کیوں سوچتے ہیں کہ یہ PromQL بڑھا ہوا ہے؟ کیونکہ ہم کامن ٹیبل اظہار کی حمایت کرتے ہیں۔ آپ QR کوڈ کی پیروی کر سکتے ہیں (https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL)، کھیل کے میدان سے مثالوں کے ساتھ لنکس دیکھیں، جہاں آپ صرف براؤزر میں انسٹال کیے بغیر براہ راست VictoriaMetrics میں سوالات چلا سکتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور یہ کیا ہے؟ اوپر سے یہ درخواست کافی مقبول درخواست ہے۔ میرے خیال میں بہت سی کمپنیوں میں کسی بھی ڈیش بورڈ میں آپ ہر چیز کے لیے ایک ہی فلٹر استعمال کرتے ہیں۔ عام طور پر ایسا۔ لیکن جب آپ کو کچھ نیا فلٹر شامل کرنے کی ضرورت ہوتی ہے، تو آپ کو ہر پینل کو اپ ڈیٹ کرنا ہوتا ہے، یا ڈیش بورڈ کو ڈاؤن لوڈ کرنا ہوتا ہے، اسے JSON میں کھولنا ہوتا ہے، ایک جگہ تلاش کرنا ہوتا ہے، جس میں بھی وقت لگتا ہے۔ کیوں نہ اس قدر کو متغیر میں محفوظ کریں اور اسے دوبارہ استعمال کریں؟ یہ میری رائے میں، بہت آسان اور واضح لگ رہا ہے.

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

مثال کے طور پر، جب مجھے تمام درخواستوں میں گرافانا میں فلٹرز کو اپ ڈیٹ کرنے کی ضرورت ہو، اور ڈیش بورڈ بہت بڑا ہو سکتا ہے یا ان میں سے کئی بھی ہو سکتے ہیں۔ اور میں گرافانا میں اس مسئلے کو کیسے حل کرنا چاہوں گا؟

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

میں اس مسئلے کو اس طرح حل کرتا ہوں: میں ایک کامن فلٹر بناتا ہوں اور اس میں اس فلٹر کی وضاحت کرتا ہوں، اور پھر میں اسے سوالات میں دوبارہ استعمال کرتا ہوں۔ لیکن اگر آپ ابھی ایسا کرتے ہیں تو یہ کام نہیں کرے گا کیونکہ گرافانا آپ کو استفسار کے متغیر کے اندر متغیرات استعمال کرنے کی اجازت نہیں دیتا ہے۔ اور یہ تھوڑا سا عجیب ہے۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور اس لیے میں نے ایک آپشن بنایا جو آپ کو ایسا کرنے کی اجازت دیتا ہے۔ اور اگر آپ دلچسپی رکھتے ہیں یا ایسی کوئی خصوصیت چاہتے ہیں، تو حمایت یا ناپسندیدگی اگر آپ کو یہ خیال پسند نہیں ہے۔ https://github.com/grafana/grafana/pull/16694

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

PromQL توسیع کے بارے میں مزید۔ یہاں ہم نہ صرف ایک متغیر بلکہ براہ راست ایک پورے فنکشن کی وضاحت کرتے ہیں۔ اور ہم اسے ru (وسائل کا استعمال) کہتے ہیں۔ اور یہ فنکشن مفت وسائل، وسائل کی حد، اور فلٹر کو قبول کرتا ہے۔ نحو آسان لگتا ہے۔ اور اس فنکشن کو استعمال کرنا اور ہمارے پاس مفت میموری کے فیصد کا حساب لگانا بہت آسان ہے۔ یعنی ہمارے پاس کتنی میموری ہے، کس حد اور کس طرح فلٹر کرنا ہے۔ یہ بہت بہتر لگتا ہے اگر آپ یہ سب ایک ہی فلٹرز کو دوبارہ استعمال کرتے ہوئے لکھیں، کیونکہ یہ ایک بڑی، بڑی استفسار میں بدل جائے گا۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

اور یہاں اتنی بڑی، بڑی درخواست کی ایک مثال ہے۔ یہ گرافانا کے لیے آفیشل نوڈ ایکسپورٹر ڈیش بورڈ سے ہے۔ لیکن مجھے واقعی سمجھ نہیں آرہی ہے کہ یہاں کیا ہو رہا ہے۔ یہ، یقینا، میں سمجھتا ہوں اگر آپ قریب سے دیکھیں، لیکن بریکٹ کی تعداد فوری طور پر یہ سمجھنے کی حوصلہ افزائی کو کم کر سکتی ہے کہ یہاں کیا ہو رہا ہے۔ اور اسے آسان اور واضح کیوں نہیں کرتے؟

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

مثال کے طور پر، اس طرح، متغیرات میں اہم چیزوں یا حصوں کو نمایاں کرنا۔ اور پھر اپنی بنیادی ریاضی کریں۔ یہ پروگرامنگ کی طرح ہے، یہ وہی ہے جو میں مستقبل میں گرافانا میں دیکھنا چاہوں گا۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

یہاں ایک دوسری مثال ہے کہ اگر ہمارے پاس یہ ru فنکشن پہلے سے موجود ہے تو ہم اسے اور بھی آسان کیسے بنا سکتے ہیں، اور یہ پہلے سے ہی VictoriaMetrics میں براہ راست موجود ہے۔ اور پھر آپ صرف اس کیشڈ ویلیو کو پاس کرتے ہیں جس کا آپ نے CTE میں اعلان کیا تھا۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

میں نے پہلے ہی اس بارے میں بات کی ہے کہ صحیح پروگرامنگ زبان کا استعمال کتنا ضروری ہے۔ اور، شاید، ہر کمپنی میں گرافانا میں کچھ مختلف ہو رہا ہے۔ اور، شاید، آپ اب بھی اپنے ڈویلپرز کو گرافانا تک رسائی دیتے ہیں، اور ڈویلپر اپنا کچھ کرتے ہیں۔ اور وہ سب اسے مختلف طریقے سے کرتے ہیں۔ لیکن میں چاہتا تھا کہ یہ کسی نہ کسی طرح ایک جیسا ہو، یعنی ایک عام معیار تک کم ہو جائے۔

فرض کریں کہ آپ کے پاس سسٹم انجینئرز بھی نہیں ہیں، ہوسکتا ہے کہ آپ کے پاس ماہرین، ڈیوپس یا ایس آر ای بھی ہوں۔ ہو سکتا ہے کہ آپ کے پاس ایسے ماہرین ہوں جو جانتے ہوں کہ مانیٹرنگ کیا ہے، جانتے ہیں کہ گرافانا کیا ہے، یعنی وہ برسوں سے اس کے ساتھ کام کر رہے ہیں اور وہ بخوبی جانتے ہیں کہ اسے کس طرح درست کرنا ہے۔ اور انہوں نے اسے 100 بار لکھا اور سب کو سمجھایا لیکن کسی وجہ سے کوئی نہیں سنتا۔

کیا ہوگا اگر وہ اس علم کو براہ راست گرافانا میں ڈال سکیں تاکہ دوسرے صارفین فنکشنز کو دوبارہ استعمال کرسکیں؟ اور اگر مفت میموری کی فیصد کا حساب لگانا ضروری ہو، تو وہ صرف فنکشن کا اطلاق کریں گے۔ لیکن کیا ہوگا اگر برآمد کنندگان کے تخلیق کار، اپنی مصنوعات کے ساتھ، افعال کا ایک سیٹ بھی فراہم کرتے ہیں، کہ ان کے میٹرکس کے ساتھ کیسے کام کیا جائے، کیونکہ وہ بخوبی جانتے ہیں کہ یہ میٹرکس کیا ہیں اور ان کا صحیح حساب کیسے لگایا جائے؟

یہ واقعی موجود نہیں ہے۔ یہ ہے جو میں نے خود کیا۔ یہ گرافانا میں لائبریری کی معاونت ہے۔ آئیے کہتے ہیں کہ جن لوگوں نے نوڈ ایکسپورٹر بنایا وہ وہی کیا جو میں نے بیان کیا ہے۔ اور خصوصیات کا ایک سیٹ بھی فراہم کیا۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

یعنی یہ کچھ اس طرح نظر آتا ہے۔ آپ اس لائبریری کو گرافانا سے جوڑتے ہیں، آپ ایڈیٹنگ میں جاتے ہیں، اور یہاں JSON میں بہت آسان ہے کہ اس میٹرک کے ساتھ کیسے کام کیا جائے۔ یعنی، افعال کا کچھ مجموعہ، ان کی تفصیل اور وہ کیا سامنے آتے ہیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

میری رائے میں، یہ مفید ہو سکتا ہے، کیونکہ تب آپ گرافانا میں بالکل اسی طرح لکھیں گے۔ اور گرافانا آپ کو "بتاتی ہے" کہ فلاں فلاں لائبریری سے فلاں فنکشن موجود ہے - آئیے اسے استعمال کریں۔ مجھے لگتا ہے کہ یہ بہت اچھا ہو گا.

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

وکٹوریہ میٹرکس کے بارے میں تھوڑا سا۔ ہم بہت ساری دلچسپ چیزیں کرتے ہیں۔ کمپریشن کے بارے میں، دیگر ٹائم سیریز ڈیٹا ایپلی کیشنز کے ساتھ ہمارے مقابلے کے بارے میں، PromQL کے ساتھ کام کرنے کے بارے میں ہماری وضاحت، کیونکہ اس میں اور بھی بہت سے نئے لوگ ہیں، ساتھ ہی عمودی توسیع پذیری اور Thanos کے ساتھ تصادم کے بارے میں ہمارے مضامین پڑھیں۔

"ExtendedPromQL" - رومن خاورونینکو کی رپورٹ کی نقل

سوالات:

میں اپنے سوال کا آغاز ایک سادہ زندگی کی کہانی سے کروں گا۔ جب میں نے پہلی بار گرافانا کا استعمال شروع کیا، تو میں نے ایک بہت ہی قائل کرنے والا 5 لائن سوال لکھا۔ حتمی نتیجہ ایک بہت ہی قابل اعتماد چارٹ ہے۔ یہ گراف تقریباً پیداوار میں چلا گیا ہے۔ لیکن قریب سے معائنہ کرنے پر پتہ چلا کہ یہ چارٹ بالکل بکواس کو ظاہر کرتا ہے جس کا حقیقت سے کوئی تعلق نہیں ہے، حالانکہ اعداد اس حد میں آتے ہیں جس کی ہمیں توقع تھی۔ اور میرا سوال۔ ہمارے پاس لائبریریاں ہیں، ہمارے پاس فنکشنز ہیں، لیکن ہم گرافانا کے لیے ٹیسٹ کیسے لکھیں؟ آپ نے ایک پیچیدہ استفسار لکھا ہے جو کاروباری فیصلے کو متاثر کرتا ہے - سرورز کے حقیقی کنٹینر کو آرڈر کرنے کے لیے یا آرڈر نہ کرنے کے لیے۔ اور جیسا کہ ہم جانتے ہیں، یہ فنکشن جو گراف کھینچتا ہے سچائی سے ملتا جلتا ہے۔ شکریہ

سوال کے لیے شکریہ۔ یہاں دو حصے ہیں۔ سب سے پہلے، مجھے اپنے تجربے کی بنیاد پر یہ تاثر ملتا ہے کہ زیادہ تر صارفین جب اپنے چارٹس کو دیکھتے ہیں تو سمجھ نہیں پاتے کہ وہ انہیں کیا دکھا رہے ہیں۔ کسی نہ کسی طرح، لوگ چارٹس پر ہونے والی کسی بھی بے ضابطگی کے لیے عذر پیش کرنے میں بہت اچھے ہوتے ہیں، چاہے یہ کسی فنکشن کے اندر ہی کیوں نہ ہو۔ اور دوسرا حصہ - مجھے ایسا لگتا ہے کہ اس طرح کے فنکشنز کا استعمال آپ کے مسئلے کو حل کرنے کے لیے بہت بہتر ہوگا، بجائے اس کے کہ آپ کا ہر ڈویلپر اپنی صلاحیت کی منصوبہ بندی کرے اور کچھ امکان کے ساتھ غلطیاں کرے۔

کیسے چیک کریں؟

کیسے چیک کریں؟ شاید نہیں۔

گرافانا میں ٹیسٹ کے طور پر۔

اور گرافانا کا کیا ہوگا؟ گرافانا اس درخواست کا براہ راست ڈیٹا سورس میں ترجمہ کرتا ہے۔

پیرامیٹرز میں تھوڑا سا اضافہ کرکے۔

نہیں، Grafana میں کوئی چیز شامل نہیں کی جاتی ہے۔ GET پیرامیٹرز ہو سکتے ہیں، جیسے قدم۔ یہ واضح طور پر متعین نہیں ہے، لیکن آپ اسے اوور رائڈ کر سکتے ہیں، آپ اسے اوور رائڈ نہیں کر سکتے، لیکن یہ خود بخود شامل ہو جاتا ہے۔ آپ یہاں ٹیسٹ نہیں لکھتے۔ مجھے نہیں لگتا کہ آپ کو یہاں سچائی کے ماخذ کے طور پر گرافانا پر بھروسہ کرنا چاہیے۔

رپورٹ کے لیے شکریہ! کمپریشن کے لئے شکریہ! آپ نے گراف میں متغیر کی نقشہ سازی کے بارے میں یاد کیا کہ گرافانا میں آپ متغیر کو متغیر میں استعمال نہیں کر سکتے۔ آپ سمجھ رہے ہو کہ میں کیا کہ رہا ہوں؟

جی ہاں.

یہ شروع میں سر میں درد تھا جب میں نے گرافانا میں الرٹ کرنا چاہا۔ اور وہاں آپ کو ہر میزبان کے لیے الگ الگ الرٹ کرنے کی ضرورت ہے۔ یہ رہا یہ کام آپ نے کیا، کیا یہ گرافانا میں الرٹس کے لیے کام کرتا ہے؟

اگر گرافانا کسی اور طریقے سے متغیرات تک رسائی حاصل نہیں کرتا ہے، تو ہاں، یہ کام کرے گا۔ لیکن میرا مشورہ یہ ہے کہ گرافانا میں الرٹ کو بالکل بھی استعمال نہ کریں، آپ الرٹ مینیجر کو بہتر طور پر استعمال کریں گے۔

ہاں، میں اسے استعمال کرتا ہوں، لیکن گرافانا میں سیٹ اپ کرنا آسان لگتا تھا، لیکن ٹپ کے لیے شکریہ!

ماخذ: www.habr.com

نیا تبصرہ شامل کریں