Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

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

انہی آلات کو موثر اور نتیجہ خیز ہونا چاہیے۔ اس آرٹیکل میں، ہم ٹیکنالوجی کے دو مشہور اسٹیکوں کو دیکھیں گے: EFK (Elasticsearch) اور PLG (Loki) اور ان کے فن تعمیر اور اختلافات کا جائزہ لیں گے۔

EFK اسٹیک

آپ نے پہلے ہی بہت مشہور ELK یا EFK کے بارے میں سنا ہوگا۔ اسٹیک کئی الگ الگ حصوں پر مشتمل ہے: Elasticsearch (آبجیکٹ اسٹوریج)، Logstash یا FluentD (لاگ کلیکشن اور ایگریگیشن)، اور تصور کے لیے Kibana۔

ایک عام ورک فلو اس طرح لگتا ہے:

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

Elasticsearch - تلاش اور حقیقی وقت کے تجزیات کے ساتھ آبجیکٹ اسٹوریج کو تقسیم کیا گیا۔ نیم ساختہ ڈیٹا جیسے لاگز کے لیے بہترین حل۔ معلومات کو JSON دستاویزات کے طور پر محفوظ کیا جاتا ہے، اصل وقت میں انڈیکس کیا جاتا ہے اور کلسٹر نوڈس میں تقسیم کیا جاتا ہے۔ ایک الٹا انڈیکس استعمال کیا جاتا ہے، جس میں مکمل متن کی تلاش کے لیے تمام منفرد الفاظ اور متعلقہ دستاویزات شامل ہیں، جو بدلے میں Apache Lucene سرچ انجن پر مبنی ہے۔

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

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

لچکدار تلاش کا فن تعمیر

Elasticsearch کلسٹر ڈیٹا اس کے تمام نوڈس میں پھیلا ہوا ہے۔ ایک کلسٹر دستیابی اور لچک کو بہتر بنانے کے لیے متعدد نوڈس پر مشتمل ہوتا ہے۔ کوئی بھی نوڈ کلسٹر کے تمام کردار انجام دے سکتا ہے، لیکن بڑے پیمانے پر باہر کی تعیناتیوں میں، نوڈس کو عام طور پر انفرادی کام تفویض کیے جاتے ہیں۔

کلسٹر نوڈ کی اقسام:

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

نیچے دیا گیا خاکہ دکھاتا ہے کہ ڈیٹا کو کس طرح ذخیرہ کیا جاتا ہے اور نوڈس میں نقل کیا جاتا ہے تاکہ ڈیٹا کی اعلی دستیابی حاصل کی جا سکے۔

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

ہر نقل کا ڈیٹا ایک الٹی انڈیکس میں محفوظ کیا جاتا ہے، نیچے دیا گیا خاکہ دکھاتا ہے کہ یہ کیسے ہوتا ہے:

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

تنصیب

تفصیلات دیکھی جا سکتی ہیں۔ یہاں، میں ہیلم چارٹ استعمال کروں گا:

$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics

PLG اسٹیک

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

Promtail - آپریٹنگ سسٹم سے لوکی کلسٹر میں لاگ بھیجنے کے لیے ایک ایجنٹ۔ گرافانا لوکی کے ڈیٹا پر مبنی ایک ویژولائزیشن ٹول ہے۔

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

لوکی کو Prometheus کے انہی اصولوں پر بنایا گیا ہے جس کی وجہ سے یہ Kubernetes لاگز کو ذخیرہ کرنے اور ان کا تجزیہ کرنے کے لیے موزوں ہے۔

لوکی فن تعمیر

لوکی کو یا تو ایک عمل کے طور پر یا ایک سے زیادہ عمل کے طور پر چلایا جا سکتا ہے، جس سے افقی اسکیلنگ کی اجازت دی جا سکتی ہے۔

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

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

آئیے تفصیل میں جانے کے بغیر لاگ کلیکشن سسٹم کے فن تعمیر کو دیکھتے ہیں:

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

اور یہاں تفصیل ہے (مائیکرو سروس فن تعمیر):

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

اجزاء:

Promtail — نوڈس پر نصب ایک ایجنٹ (سروسز کے سیٹ کے طور پر)، یہ کاموں سے لاگز کو ہٹاتا ہے اور میٹا ڈیٹا حاصل کرنے کے لیے Kubernetes API تک رسائی حاصل کرتا ہے جو لاگز کو ٹیگ کرے گا۔ اس کے بعد یہ لاگ کو مرکزی لوکی سروس کو بھیجتا ہے۔ میٹا ڈیٹا میپنگ انہی ٹیگنگ اصولوں کو سپورٹ کرتی ہے جیسے پرومیتھیس۔

ڈسٹریبیوٹر - ایک سروس ڈسٹری بیوٹر جو بفر کے طور پر کام کرتا ہے۔ لاکھوں ریکارڈ پر کارروائی کرنے کے لیے، یہ آنے والے ڈیٹا کو پیک کرتا ہے، اسے آتے ہی بلاکس میں کمپریس کرتا ہے۔ متعدد ڈیٹا سنک بیک وقت چل رہے ہیں، لیکن ایک آنے والے ڈیٹا سٹریم سے تعلق رکھنے والے لاگ ان میں سے صرف ایک میں اس کے تمام بلاکس کے لیے ظاہر ہونا چاہیے۔ یہ سنک اور ترتیب وار ہیشنگ کی انگوٹھی میں منظم کیا جاتا ہے۔ غلطی کو برداشت کرنے اور بے کار ہونے کے لیے، یہ n بار کیا جاتا ہے (3 اگر کنفیگر نہیں کیا گیا ہے)۔

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

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

انڈیکس - ڈیٹا بیس، DynamoDB، Cassandra، Google BigTable، وغیرہ۔

ٹکڑے - لاگ بلاکس کو کمپریسڈ شکل میں، عام طور پر آبجیکٹ اسٹوریج میں محفوظ کیا جاتا ہے، مثال کے طور پر، S3۔

سوال کرنے والا - پڑھنے کا راستہ جو تمام گندے کام کرتا ہے۔ یہ وقت کی حد اور ٹائم اسٹیمپ کو دیکھتا ہے، اور پھر مماثلتیں تلاش کرنے کے لیے انڈیکس کو دیکھتا ہے۔ اگلا، یہ ڈیٹا کے بلاکس کو پڑھتا ہے اور نتیجہ حاصل کرنے کے لیے انہیں فلٹر کرتا ہے۔

اب آئیے سب کچھ عمل میں دیکھتے ہیں۔

تنصیب

Kubernetes میں انسٹال کرنے کا سب سے آسان طریقہ ہیلم کا استعمال کرنا ہے۔ ہم فرض کرتے ہیں کہ آپ نے اسے پہلے ہی انسٹال اور کنفیگر کر لیا ہے (اور تیسرا ورژن! تقریبا. مترجم)

ایک ذخیرہ شامل کریں اور ایک اسٹیک انسٹال کریں۔

$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

ذیل میں ایک مثال ڈیش بورڈ ہے جو Etcd میٹرکس کے لیے Prometheus اور Etcd پوڈ لاگ کے لیے Loki سے ڈیٹا دکھا رہا ہے۔

Kubernetes میں لاگ ان کرنا: EFK بمقابلہ PLG

اب آئیے دونوں نظاموں کے فن تعمیر پر بات کرتے ہیں، اور ان کی صلاحیتوں کا ایک دوسرے سے موازنہ بھی کرتے ہیں۔

مقابلے

استفسار کی زبان

Elasticsearch مکمل متن کی تلاش کی صلاحیتیں فراہم کرنے کے لیے Query DSL اور Lucene استفسار کی زبان کا استعمال کرتا ہے۔ یہ وسیع آپریٹر سپورٹ کے ساتھ ایک قائم، طاقتور سرچ انجن ہے۔ اس کے ساتھ، آپ سیاق و سباق کے لحاظ سے تلاش کر سکتے ہیں اور مطابقت کے لحاظ سے ترتیب دے سکتے ہیں۔

انگوٹی کے دوسری طرف LogQL ہے، جو Loki میں استعمال ہوتا ہے، PromQL (Prometheus query language) کا جانشین۔ یہ لاگ ڈیٹا کو فلٹر کرنے اور منتخب کرنے کے لیے لاگ ٹیگز کا استعمال کرتا ہے۔ جیسا کہ بیان کیا گیا ہے کچھ آپریٹرز اور ریاضی کا استعمال کرنا ممکن ہے۔ یہاںلیکن صلاحیتوں کے لحاظ سے یہ لچکدار زبان سے پیچھے ہے۔

چونکہ لوکی میں استفسارات ٹیگ کے ساتھ منسلک ہوتے ہیں، اس لیے وہ میٹرکس کے ساتھ آسانی سے منسلک ہوتے ہیں، اور اس کے نتیجے میں، ان کے ساتھ آپریشنل مانیٹرنگ کو منظم کرنا آسان ہوتا ہے۔

سکالٹیبل

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

کثیر کرایہ داری

OPEX کے مخفف میں کلسٹر ملٹی ٹیننسی ایک عام تھیم ہے، دونوں اسٹیک ملٹی ٹیننسی فراہم کرتے ہیں۔ Elasticsearch کے لیے کئی ہیں۔ طریقے کلائنٹ کی علیحدگی: ہر کلائنٹ کے لیے الگ انڈیکس، کلائنٹ پر مبنی روٹنگ، منفرد کلائنٹ فیلڈز، سرچ فلٹرز۔ لوکی کے پاس ہے۔ کی حمایت HTTP X-Scope-OrgID ہیڈر کی شکل میں۔

قیمت

لوکی اس حقیقت کی وجہ سے کافی مؤثر ہے کہ یہ ڈیٹا کو انڈیکس نہیں کرتا، صرف میٹا ڈیٹا کو۔ یہ حاصل کرتا ہے۔ اسٹوریج پر بچت اور میموری (کیشے)، چونکہ آبجیکٹ اسٹوریج بلاک سٹوریج سے سستا ہے، جو Elasticsearch کلسٹرز میں استعمال ہوتا ہے۔

حاصل يہ ہوا

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

لوکی اسٹیک اپنے میٹا ڈیٹا کی دریافت کے طریقہ کار کی وجہ سے Kubernetes ایکو سسٹم میں مفید ہے۔ آپ گرافانا اور لاگز میں ٹائم سیریز کی بنیاد پر نگرانی کے لیے ڈیٹا کو آسانی سے جوڑ سکتے ہیں۔

جب لاگت اور طویل مدتی لاگ اسٹوریج کی بات آتی ہے تو، لوکی کلاؤڈ سلوشنز میں ایک بہترین انٹری پوائنٹ ہے۔

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

حوالہ جات:

مضمون کا ترجمہ اور ملازمین نے حبر کے لیے تیار کیا تھا۔ سلم ٹریننگ سینٹر — پریکٹس کرنے والے ماہرین کی طرف سے سخت کورسز، ویڈیو کورسز اور کارپوریٹ ٹریننگ (Kubernetes، DevOps، Docker، Ansible، Ceph، SRE، Agile)

ماخذ: www.habr.com

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