ہیلو، میرا نام یوجین ہے، میں سٹی موبل میں B2B ٹیم لیڈر ہوں۔ ہماری ٹیم کے کاموں میں سے ایک شراکت داروں سے ٹیکسی آرڈر کرنے کے لیے انضمام کی حمایت کرنا ہے، اور ایک مستحکم سروس کو یقینی بنانے کے لیے، ہمیں ہمیشہ یہ سمجھنا چاہیے کہ ہماری مائیکرو سروسز میں کیا ہو رہا ہے۔ اور اس کے لیے آپ کو لاگز کی مسلسل نگرانی کرنے کی ضرورت ہے۔
سٹی موبل میں، ہم لاگز کے ساتھ کام کرنے کے لیے ELK اسٹیک (ElasticSearch، Logstash، Kibana) استعمال کرتے ہیں، اور وہاں آنے والے ڈیٹا کی مقدار بہت زیادہ ہے۔ درخواستوں کے اس بڑے پیمانے پر مسائل تلاش کرنا جو نئے کوڈ کی تعیناتی کے بعد ظاہر ہو سکتی ہیں کافی مشکل ہے۔ اور ان کی بصری شناخت کے لیے، کبانا کے پاس ڈیش بورڈ سیکشن ہے۔
Habré پر بہت سے مضامین ہیں جن میں مثالیں ہیں کہ ڈیٹا حاصل کرنے اور ذخیرہ کرنے کے لیے ELK اسٹیک کیسے ترتیب دیا جائے، لیکن ڈیش بورڈ بنانے کے لیے کوئی متعلقہ مواد موجود نہیں ہے۔ لہذا، میں یہ دکھانا چاہتا ہوں کہ کبانا میں آنے والے لاگز کی بنیاد پر ڈیٹا کی بصری نمائندگی کیسے کی جائے۔
ایڈجسٹمنٹ
اسے واضح کرنے کے لیے، میں نے ELK اور Filebeat کے ساتھ ایک Docker امیج بنائی۔ اور ایک چھوٹے کنٹینر میں رکھ دیا۔
کنفگ ریپوزٹری کو کلون کریں۔ docker-compose
اور ELK کی ترتیبات، اور اسے کمانڈ کے ساتھ لانچ کریں۔ docker-compose up
. جان بوجھ کر کلید شامل نہیں کرنا -d
ELK اسٹیک کی ترقی کو دیکھنے کے لیے۔
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
اگر سب کچھ صحیح طریقے سے ترتیب دیا گیا ہے، تو ہم لاگز میں ایک اندراج دیکھیں گے (شاید فوری طور پر نہیں، پورے اسٹیک کے ساتھ ایک کنٹینر شروع کرنے کے عمل میں کئی منٹ لگ سکتے ہیں):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
ایڈریس سے localhost:5061
کبانہ کھلنا چاہیے۔
ہمیں کنفیگر کرنے کے لیے صرف ایک چیز کی ضرورت ہے کہ کبانا کے لیے ایک انڈیکس پیٹرن بنانا ہے جس میں یہ معلومات موجود ہیں کہ کون سا ڈیٹا ڈسپلے کرنا ہے۔ ایسا کرنے کے لیے، ہم کرل کی درخواست پر عمل کریں گے یا گرافیکل انٹرفیس میں کارروائیوں کا ایک سلسلہ انجام دیں گے۔
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
GUI کے ذریعے انڈیکس پیٹرن بنانا
کنفیگر کرنے کے لیے، بائیں مینو میں دریافت سیکشن کو منتخب کریں، اور انڈیکس پیٹرن تخلیق کے صفحہ پر جائیں۔
"انڈیکس پیٹرن بنائیں" کے بٹن پر کلک کرنے سے، ہم انڈیکس بنانے والے صفحہ پر پہنچ جاتے ہیں۔ "انڈیکس پیٹرن کا نام" فیلڈ میں، "logstash-*" درج کریں۔ اگر سب کچھ صحیح طریقے سے ترتیب دیا گیا ہے، تو نیچے Kibana ان اشاریہ جات دکھائے گا جو اصول کے تحت آتے ہیں۔
اگلے صفحے پر، کلیدی فیلڈ کو ٹائم اسٹیمپ کے ساتھ منتخب کریں، ہمارے معاملے میں ایسا ہے۔ @timestamp
.
اس سے انڈیکس کی ترتیبات کا صفحہ سامنے آئے گا، لیکن اس وقت ہماری طرف سے مزید کارروائی کی ضرورت نہیں ہے۔
اب ہم دوبارہ دریافت سیکشن میں جا سکتے ہیں، جہاں ہم لاگ انٹریز دیکھیں گے۔
ڈیش بورڈ
بائیں مینو میں، ڈیش بورڈ تخلیق سیکشن پر کلک کریں اور متعلقہ صفحہ پر جائیں۔
"نیا ڈیش بورڈ بنائیں" پر کلک کریں اور ڈیش بورڈ میں اشیاء شامل کرنے کے لیے صفحہ پر جائیں۔
"نیا بنائیں" بٹن پر کلک کریں، اور سسٹم آپ کو ڈیٹا ڈسپلے کی قسم منتخب کرنے کا اشارہ کرے گا۔ کبانہ میں ان کی ایک بڑی تعداد ہے، لیکن ہم "عمودی بار" اور ایک ٹیبلر "ڈیٹا ٹیبل" کی تصویری نمائندگی بنانے پر غور کریں گے۔ پریزنٹیشن کی دیگر اقسام کو اسی طرح ترتیب دیا گیا ہے۔
کچھ دستیاب اشیاء پر B اور E کا لیبل لگا ہوا ہے، جس کا مطلب ہے کہ فارمیٹ تجرباتی ہے یا بیٹا ٹیسٹنگ میں۔ وقت کے ساتھ، فارمیٹ تبدیل ہو سکتا ہے یا کبانا سے مکمل طور پر غائب ہو سکتا ہے۔
عمودی بار
"عمودی بار" کی مثال کے لیے، آئیے ہماری سروس کے کامیاب اور ناکام جوابی حالات کے تناسب کا ایک ہسٹوگرام بنائیں۔ ترتیبات کے اختتام پر، ہمیں مندرجہ ذیل گراف ملتا ہے:
ہم تمام درخواستوں کو جوابی حیثیت کے ساتھ درجہ بندی کریں گے < 400 کو کامیاب، اور >= 400 کو مسئلہ کے طور پر۔
ایک "عمودی بار" چارٹ بنانے کے لیے، ہمیں ڈیٹا کا ذریعہ منتخب کرنے کی ضرورت ہے۔ انڈیکس پیٹرن کو منتخب کریں جو ہم نے پہلے بنایا تھا۔
پہلے سے طے شدہ طور پر، ڈیٹا سورس کو منتخب کرنے کے بعد ایک ہی ٹھوس گراف ظاہر ہوگا۔ آئیے اسے ترتیب دیں۔
"Buckets" بلاک میں، "Add" بٹن دبائیں، "X-asis" کو منتخب کریں اور X محور کو سیٹ کریں۔ آئیے اس کے ساتھ لاگ میں اندراجات کے ٹائم سٹیمپ کو ایک طرف رکھیں۔ "ایگریگیشن" فیلڈ میں، "تاریخ ہسٹوگرام" کو منتخب کریں، اور "فیلڈ" میں "@timestamp" کو منتخب کریں، جو ٹائم فیلڈ کی نشاندہی کرتا ہے۔ آئیے "کم سے کم وقفہ" کو "آٹو" حالت میں چھوڑ دیں، اور یہ خود بخود ہمارے ڈسپلے کے مطابق ہو جائے گا۔
"اپ ڈیٹ" بٹن پر کلک کرنے سے، ہم ہر 30 سیکنڈ میں درخواستوں کی تعداد کے ساتھ ایک گراف دیکھیں گے۔
اب آئیے Y-axis کے ساتھ کالم ترتیب دیتے ہیں۔ اب ہم منتخب وقت کے وقفے میں درخواستوں کی کل تعداد دکھا رہے ہیں۔
آئیے "جمع" کی قدر کو "سم بالٹی" میں تبدیل کریں، جو ہمیں کامیاب اور ناکام درخواستوں کے لیے ڈیٹا کو یکجا کرنے کی اجازت دے گا۔ بالٹی -> ایگریگیشن بلاک میں، "فلٹرز" کے ذریعے جمع کو منتخب کریں اور "statusCode >= 400" کے ذریعے فلٹرنگ سیٹ کریں۔ اور "کسٹم لیبل" فیلڈ میں، ہم چارٹ پر اور عام فہرست میں لیجنڈ میں زیادہ قابل فہم ڈسپلے کے لیے اپنے اشارے کے نام کی نشاندہی کرتے ہیں۔
سیٹنگز بلاک کے نیچے "اپ ڈیٹ" بٹن پر کلک کرنے سے، ہمیں مسئلہ کی درخواستوں کے ساتھ ایک گراف ملے گا۔
اگر آپ لیجنڈ کے آگے دائرے پر کلک کریں گے تو ایک ونڈو نمودار ہوگی جس میں آپ کالموں کا رنگ تبدیل کر سکتے ہیں۔
اب آئیے چارٹ میں کامیاب درخواستوں کا ڈیٹا شامل کریں۔ "میٹرکس" سیکشن میں، "شامل کریں" کے بٹن پر کلک کریں اور "Y-axis" کو منتخب کریں۔
تخلیق کردہ میٹرک میں، ہم وہی ترتیبات بناتے ہیں جو غلط درخواستوں کے لیے کرتے ہیں۔ صرف فلٹر میں ہم "statusCode <400" کی وضاحت کرتے ہیں۔
نئے کالم کا رنگ تبدیل کرنے سے، ہمیں مشکل اور کامیاب درخواستوں کے تناسب کا ڈسپلے ملتا ہے۔
اسکرین کے اوپری حصے میں "محفوظ کریں" بٹن پر کلک کرنے اور نام بتانے سے، ہم ڈیش بورڈ پر پہلا چارٹ دیکھیں گے۔
ڈیٹا ٹیبل
اب ٹیبلر ویو "ڈیٹا ٹیبل" پر غور کریں۔ آئیے ان تمام URLs کی فہرست کے ساتھ ایک ٹیبل بنائیں جن کی درخواست کی گئی تھی اور ان درخواستوں کی تعداد۔ جیسا کہ عمودی بار کی مثال کے ساتھ، ہم سب سے پہلے ڈیٹا کا ذریعہ منتخب کرتے ہیں۔
اس کے بعد، ایک کالم کے ساتھ ایک ٹیبل اسکرین پر ظاہر ہوگا، جو منتخب وقت کے وقفے کے لیے درخواستوں کی کل تعداد کو ظاہر کرتا ہے۔
ہم صرف "بکیٹس" بلاک کو تبدیل کریں گے۔ "شامل کریں" کے بٹن پر کلک کریں اور "قطاریں تقسیم کریں" کو منتخب کریں۔
"ایگریگیشن" فیلڈ میں، "شرائط" کو منتخب کریں۔ اور ظاہر ہونے والی فیلڈ "فیلڈ" میں "url.keyword" کو منتخب کریں۔
"کسٹم لیبل" فیلڈ میں "Url" کی قدر بتانے اور "اپ ڈیٹ" پر کلک کرنے سے، ہمیں منتخب مدت کے لیے ہر یو آر ایل کی درخواستوں کی تعداد کے ساتھ مطلوبہ جدول ملے گا۔
اسکرین کے اوپری حصے میں، "محفوظ کریں" کے بٹن پر دوبارہ کلک کریں اور ٹیبل کا نام بتائیں، مثال کے طور پر یو آر ایل۔ آئیے ڈیش بورڈ پر واپس جائیں اور بنائے گئے دونوں نظارے دیکھیں۔
ڈیش بورڈ کے ساتھ کام کرنا
ڈیش بورڈ بناتے وقت، ہم ڈسپلے آبجیکٹ کی ترتیبات میں صرف مرکزی منظر کے پیرامیٹرز سیٹ کرتے ہیں۔ آبجیکٹ میں فلٹرز کے لیے ڈیٹا بتانا کوئی معنی نہیں رکھتا، مثال کے طور پر، "تاریخ کی حد"، "استعمال کنندہ کے ذریعے فلٹرنگ"، "درخواست ملک کے لحاظ سے فلٹرنگ"، وغیرہ۔ مطلوبہ مدت کی وضاحت کرنا یا استفسار پینل میں ضروری فلٹرنگ سیٹ کرنا زیادہ آسان ہے، جو اشیاء کے اوپر واقع ہے۔
اس پینل پر شامل کیے گئے فلٹرز پورے ڈیش بورڈ پر لاگو کیے جائیں گے، اور تمام ڈسپلے آبجیکٹ کو اصل فلٹر کردہ ڈیٹا کے مطابق دوبارہ بنایا جائے گا۔
حاصل يہ ہوا
Kibana ایک طاقتور ٹول ہے جو آپ کو کسی بھی ڈیٹا کو آسان طریقے سے دیکھنے کی اجازت دیتا ہے۔ میں نے ڈسپلے کی دو اہم اقسام کی ترتیب دکھانے کی کوشش کی۔ لیکن دوسری اقسام کو اسی طرح ترتیب دیا گیا ہے۔ اور ترتیبات کی کثرت جو میں نے "پردے کے پیچھے" چھوڑی ہے آپ کو اپنی ضروریات کے مطابق چارٹس کو بہت لچکدار طریقے سے اپنی مرضی کے مطابق کرنے کی اجازت دے گی۔
ماخذ: www.habr.com