تسجيل الدخول إلى 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 قدر الإمكان. هندسته قابلة للتوسيع ، وهناك المزيد مئات الامتدادات المختلفةبدعم من المجتمع لجميع المناسبات.

Kibana هي أداة لتصور البيانات لـ Elasticsearch مع العديد من الميزات الإضافية ، مثل تحليل السلاسل الزمنية والرسوم البيانية والتعلم الآلي والمزيد.

هندسة 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. على أي حال ، فإن هذه المجموعة تكتسب شعبية لأنها تستخدم حلولاً تقنية معدلة جيدًا. ربما تكون قد سمعت بالفعل عن Grafana ، أداة التصور الشائعة. قام منشئوها ، المستوحون من Prometheus ، بتطوير Loki ، وهو نظام تجميع سجلات عالي الأداء وقابل للتطوير أفقيًا. يقوم Loki فقط بفهرسة البيانات الوصفية ، وليس المجلات نفسها ، وهذا الحل التقني جعلها سهلة الاستخدام وفعالة من حيث التكلفة.

برومتيل - وكيل لإرسال السجلات من نظام التشغيل إلى مجموعة Loki. جرافانا هي أداة تصور تستند إلى بيانات من Loki.

تسجيل الدخول إلى Kubernetes: EFK مقابل PLG

تم تصميم Loki على نفس مبادئ Prometheus ، لذا فهو مناسب تمامًا لتخزين وتحليل سجلات Kubernetes.

العمارة لوكي

يمكن تشغيل Loki كعملية واحدة أو كعمليات متعددة ، مما يسمح بالقياس الأفقي.

تسجيل الدخول إلى Kubernetes: EFK مقابل PLG

يمكن أن تعمل أيضًا كتطبيق مترابط وكخدمة مصغرة. يمكن أن يكون التشغيل كعملية واحدة مفيدًا للتنمية المحلية أو للمراقبة الدقيقة. بالنسبة للتنفيذ الصناعي وحجم العمل القابل للتطوير ، يوصى باستخدام خيار الخدمة المصغرة. يتم فصل مسارات كتابة البيانات وقراءتها ، بحيث يمكن ضبطها بدقة وقياسها حسب الحاجة.

لنلقِ نظرة على بنية نظام جمع السجلات بدون تفاصيل:

تسجيل الدخول إلى Kubernetes: EFK مقابل PLG

وهنا الوصف (هندسة الخدمات المصغرة):

تسجيل الدخول إلى Kubernetes: EFK مقابل PLG

عناصر:

برومتيل - وكيل مثبت على العقد (كمجموعة من الخدمات) ، يقوم بإزالة السجلات من المهام والوصول إلى Kubernetes API للحصول على البيانات الوصفية التي سيتم استخدامها لتمييز السجلات. ثم يرسل السجل إلى خدمة Loki الرئيسية. لمطابقة البيانات الوصفية ، يتم دعم قواعد وضع العلامات نفسها كما في بروميثيوس.

موزع - موزع خدمة يعمل كمخزن مؤقت. لمعالجة ملايين السجلات ، يقوم بتجميع البيانات الواردة ، وضغطها في كتل فور وصولها. يتم تشغيل أحواض بيانات متعددة في نفس الوقت ، ولكن يجب أن تنتهي السجلات التي تنتمي إلى نفس دفق البيانات الواردة في واحد منهم فقط لجميع الكتل الخاصة به. يتم تنظيم هذا كحلقة من أجهزة الاستقبال والتجزئة المتسلسلة. للتسامح مع الخطأ والتكرار ، يتم القيام بذلك n من المرات (3 إذا لم يتم تكوينه).

ابتلاع - مستقبل الخدمة. تأتي كتل البيانات مضغوطة بسجلات مضافة. بمجرد أن تكون الكتلة ذات حجم كافٍ ، يتم مسح الكتلة إلى قاعدة البيانات. تنتقل البيانات الوصفية إلى الفهرس ، وتنتقل البيانات من كتلة السجل إلى Chunks (عادةً تخزين الكائنات). بعد إعادة التعيين ، يقوم المتلقي بإنشاء كتلة جديدة حيث سيتم إضافة السجلات الجديدة.

تسجيل الدخول إلى Kubernetes: EFK مقابل PLG

فهرس - قاعدة بيانات و DynamoDB و Cassandra و Google BigTable والمزيد.

مكعبات - كتل من السجلات في شكل مضغوط ، وعادة ما يتم تخزينها في تخزين الكائنات ، على سبيل المثال ، S3.

كويرير هو مسار قراءة يقوم بكل الأعمال القذرة. يبحث في النطاق الزمني والطابع الزمني ، ثم يبحث في الفهرس للبحث عن التطابقات. بعد ذلك ، يقوم بقراءة كتل البيانات وتصفيتها للحصول على النتيجة.

الآن دعنا نرى كل شيء في العمل.

تركيب

أسهل طريقة للتثبيت على Kubernetes هي استخدام helm. نفترض أنك قمت بالفعل بتثبيته وتكوينه (والنسخة الثالثة! تقريبا. مترجم)

نضيف مستودعًا ونضع مكدسًا.

$ 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

يوجد أدناه مثال للوحة القيادة تعرض بيانات من Prometheus لمقاييس Etcd و Loki لسجلات Etcd pod.

تسجيل الدخول إلى Kubernetes: EFK مقابل PLG

والآن دعونا نناقش بنية كلا النظامين ، وكذلك مقارنة قدراتهما مع بعضهما البعض.

مقارنة

لغة الاستعلام

يستخدم Elasticsearch لغة Query DSL ولغة استعلام Lucene لتوفير إمكانية البحث عن النص الكامل. إنه محرك بحث قوي مؤسس مع دعم واسع للمشغل. باستخدامه ، يمكنك البحث حسب السياق والفرز حسب الصلة.

على الجانب الآخر من الحلبة يوجد Loki's LogQL ، وهو خليفة لـ PromQL (لغة استعلام Prometheus). يستخدم تسميات السجل لتصفية وتحديد بيانات السجل. من الممكن استخدام بعض العوامل الحسابية كما هو موضح هنا، ولكن من حيث القدرات ، فهي متخلفة عن اللغة المرنة.

نظرًا لأن الطلبات في Loki مرتبطة بالتسميات ، فمن السهل ربطها بالمقاييس ، ونتيجة لذلك ، يسهل تنظيم المراقبة التشغيلية معهم.

التدرجية

كلتا الحزمتين قابلتان للتوسع أفقيًا ، ولكن مع Loki يكون الأمر أسهل لأنه يحتوي على مسارات منفصلة للقراءة والكتابة ، وله بنية الخدمات المصغرة. يمكن تخصيص Loki وفقًا لاحتياجاتك ويمكن استخدامه لكميات كبيرة جدًا من بيانات السجل.

متعدد الايجار

تعد المجموعة متعددة المستأجرين موضوعًا شائعًا لتقليل النفقات التشغيلية ، حيث توفر كلا الحزمان عقود إيجار متعددة. هناك العديد من Elasticsearch طرق فصل العميل: فهرس منفصل لكل عميل ، توجيه قائم على العميل ، حقول فريدة للعميل ، عوامل تصفية بحث. لوكي دعم كرأس HTTP X-Scope-OrgID.

تكلفة

Loki فعال من حيث التكلفة نظرًا لأنه لا يقوم بفهرسة البيانات ، بل البيانات الوصفية فقط. هكذا، وفورات التخزين والذاكرة (ذاكرة التخزين المؤقت) ، نظرًا لأن تخزين الكائن أرخص من التخزين الكتلي ، والذي يستخدم في مجموعات Elasticsearch.

اختتام

يمكن استخدام مكدس EFK لمجموعة متنوعة من الأغراض ، مما يوفر أقصى قدر من المرونة وواجهة Kibana الغنية للتحليلات والتصور والاستعلامات. يمكن تحسينه بشكل أكبر من خلال إمكانات التعلم الآلي.

تعد مكدس Loki مفيدًا في نظام Kubernetes البيئي نظرًا لآلية اكتشاف البيانات الوصفية. يمكنك بسهولة ربط البيانات للمراقبة بناءً على السلاسل الزمنية في Grafana والسجلات.

عندما يتعلق الأمر بالتكلفة والاحتفاظ بالسجلات على المدى الطويل ، فإن Loki يعد خيارًا ممتازًا للدخول إلى السحابة.

هناك المزيد من البدائل في السوق - قد يكون بعضها أفضل لك. على سبيل المثال ، يحتوي GKE على تكامل Stackdriver الذي يوفر حل مراقبة رائعًا. لم ندرجها في تحليلنا في هذه المقالة.

المراجع:

تمت ترجمة المقال وإعداده لحبر من قبل موظفين مركز تدريب سلورم - دورات مكثفة عبر الفيديو وتدريب الشركات من الممارسين (Kubernetes و DevOps و Docker و Ansible و Ceph و SRE و Agile)

المصدر: www.habr.com

إضافة تعليق