كيفية إعداد مكدس السجلات EFK على Kubernetes
في عالم تطوير البرمجيات والتطبيقات الحديثة، أصبحت مراقبة السجلات والتحليلات أحد الأجزاء الأساسية في إدارة البنية التحتية. يعد مكدس السجلات EFK أحد الحلول الشائعة التي تستخدم في نظام Kubernetes لتنظيم وتحليل السجلات. يتكون هذا المكدس من ثلاثة مكونات رئيسية هي: Elasticsearch، Fluentd، وKibana. يمثل كل جزء من هذه الأجزاء دورًا محوريًا في جمع البيانات، معالجتها، وتحليلها، وعرضها بشكل مرن وسهل الوصول إليه.
في هذا المقال، سنتناول كيفية إعداد مكدس السجلات EFK على Kubernetes خطوة بخطوة، مع التركيز على كيفية تكامل هذه الأدوات داخل البيئة السحابية التي تعتمد على Kubernetes.
1. ما هو مكدس السجلات EFK؟
مكدس السجلات EFK هو مجموعة من الأدوات التي يتم استخدامها لجمع وتحليل وعرض السجلات في بيئات العمل التي تعتمد على الحاويات (Containers) مثل Kubernetes. يتكون المكدس من:
-
Elasticsearch: هو محرك بحث وتحليل مخصص للاستعلام عن البيانات بشكل سريع وفعال. يتم استخدامه لتخزين السجلات واسترجاعها.
-
Fluentd: هو أداة لجمع البيانات وتوجيهها. في مكدس EFK، يقوم Fluentd بجمع السجلات من مختلف التطبيقات والخوادم وتوجيهها إلى Elasticsearch.
-
Kibana: هو أداة تتيح للمستخدمين عرض البيانات المخزنة في Elasticsearch بطريقة رسومية، مما يسهل تحليل السجلات وإنشاء تقارير مرئية.
2. متطلبات البيئة
قبل أن تبدأ في إعداد مكدس EFK على Kubernetes، يجب أن تتأكد من أن لديك بعض المتطلبات الأساسية:
-
Kubernetes Cluster: يجب أن يكون لديك Kubernetes Cluster يعمل بكفاءة. يمكنك استخدام أي من خدمات Kubernetes السحابية مثل GKE أو EKS أو AKS، أو إعداد Kubernetes يدويًا.
-
Helm: هو أداة لإدارة الحزم في Kubernetes، والتي تسهل تثبيت وإدارة التطبيقات.
-
kubectl: هو أداة سطر الأوامر التي تتيح لك التفاعل مع Kubernetes Cluster.
3. تثبيت Elasticsearch على Kubernetes
Elasticsearch هو الجزء المسؤول عن تخزين السجلات واسترجاعها في مكدس EFK. لتثبيته على Kubernetes، يمكننا استخدام Helm، مما يسهل عملية التثبيت بشكل كبير.
خطوات تثبيت Elasticsearch:
-
إضافة Helm repository:
أولاً، تأكد من أنك قد أضفت Helm repository الذي يحتوي على Elasticsearch.bashhelm repo add elastic https://helm.elastic.co helm repo update -
تثبيت Elasticsearch باستخدام Helm:
يمكنك الآن تثبيت Elasticsearch باستخدام Helm:bashhelm install elasticsearch elastic/elasticsearch -
تحقق من الحالة:
بعد التثبيت، تحقق من حالة Elasticsearch للتأكد من أنه يعمل بشكل صحيح:bashkubectl get pods -l app=elasticsearch -
تخصيص الإعدادات:
يمكنك تخصيص إعدادات Elasticsearch مثل الذاكرة أو سعة التخزين عن طريق تعديل القيم في ملفvalues.yamlقبل التثبيت.
4. تثبيت Fluentd على Kubernetes
Fluentd هو الأداة المسؤولة عن جمع السجلات من مختلف المصادر مثل التطبيقات والحاويات وإرسالها إلى Elasticsearch. سنتبع نفس العملية باستخدام Helm لتثبيته.
خطوات تثبيت Fluentd:
-
إضافة Helm repository:
إضافة Helm repository الخاص بـ Fluentd:bashhelm repo add fluent https://fluent.github.io/helm-charts helm repo update -
تثبيت Fluentd:
يمكنك تثبيت Fluentd على Kubernetes باستخدام الأمر التالي:bashhelm install fluentd fluent/fluentd -
تحقق من الحالة:
تأكد من أن Fluentd يعمل بشكل صحيح عن طريق التحقق من حالة الـ pods:bashkubectl get pods -l app=fluentd -
تخصيص Fluentd:
إذا كنت بحاجة إلى تخصيص Fluentd لجمع سجلات من مصادر معينة أو إجراء معالجات خاصة على السجلات، يمكنك تعديل ملفvalues.yamlالخاص بـ Fluentd.
5. تثبيت Kibana على Kubernetes
Kibana هو الأداة التي تتيح لك عرض وتحليل السجلات المخزنة في Elasticsearch عبر واجهة مستخدم رسومية. سنستخدم أيضًا Helm لتثبيت Kibana.
خطوات تثبيت Kibana:
-
تثبيت Kibana باستخدام Helm:
يمكنك تثبيت Kibana على Kubernetes باستخدام الأمر التالي:bashhelm install kibana elastic/kibana -
تحقق من حالة Kibana:
تحقق من حالة Kibana بعد التثبيت للتأكد من أنه يعمل بشكل صحيح:bashkubectl get pods -l app=kibana -
الوصول إلى Kibana:
للوصول إلى Kibana عبر المتصفح، يمكنك إنشاء خدمة من نوعLoadBalancerأو استخدامkubectl port-forwardللوصول إلى الواجهة:bashkubectl port-forward svc/kibana 5601:5601 -
تخصيص Kibana:
مثلما فعلنا مع Elasticsearch وFluentd، يمكنك تخصيص Kibana حسب احتياجاتك عبر تعديل إعدادات Helm.
6. تكامل المكونات معًا
بمجرد أن يتم تثبيت Elasticsearch وFluentd وKibana بنجاح على Kubernetes، يجب أن تتأكد من أن جميع المكونات تعمل معًا بشكل متكامل. ستقوم Fluentd بتجميع السجلات من الحاويات والتطبيقات على Kubernetes، ثم إرسالها إلى Elasticsearch للتخزين والاستعلام. بعد ذلك، يمكنك استخدام Kibana لعرض وتحليل هذه السجلات.
تكامل Fluentd مع Elasticsearch:
تأكد من أن Fluentd موجه إلى Elasticsearch الخاص بك. يمكنك تعديل إعدادات Fluentd في ملف fluentd-config لتحديد الـ endpoint الخاص بـ Elasticsearch. مثال على ذلك:
yamloutput:
elasticsearch:
host: "elasticsearch.default.svc.cluster.local"
port: 9200
index_name: "logs"
تكامل Kibana مع Elasticsearch:
لتتمكن من عرض البيانات عبر Kibana، تأكد من أن Kibana متصل بـ Elasticsearch. يتم تحديد هذا الاتصال في إعدادات Kibana:
yamlelasticsearch.hosts: ["http://elasticsearch.default.svc.cluster.local:9200"]
7. اختبار المكدس والتحقق من السجلات
بعد إعداد المكدس بالكامل، يمكنك البدء في اختبار المكدس للتأكد من أنه يعمل بشكل صحيح. قم بإرسال سجلات تجريبية من أحد التطبيقات أو الحاويات في Kubernetes إلى Fluentd، ثم تحقق من أن السجلات قد وصلت إلى Elasticsearch وتظهر في واجهة Kibana.
8. الصيانة والتوسع
من الأمور الهامة عند العمل مع مكدس EFK هو الصيانة المستمرة والتوسع. إذا كنت تستخدم المكدس في بيئة إنتاجية، فإنك ستحتاج إلى مراقبة أداء Elasticsearch والتأكد من تكامل البيانات بشكل سلس.
-
مراقبة الأداء: استخدم أدوات مثل Prometheus وGrafana لمراقبة أداء Elasticsearch وFluentd.
-
التوسع الأفقي: إذا كان لديك حجم كبير من البيانات أو تطبيقات متعددة، يمكنك توسيع Elasticsearch عبر إضافة المزيد من الـ nodes.
9. تحسين الأداء
لتحقيق أفضل أداء من مكدس EFK على Kubernetes، يجب اتباع بعض الممارسات المثلى:
-
إعداد الذاكرة والتخزين: تأكد من تخصيص الموارد المناسبة لكل من Elasticsearch وFluentd وKibana.
-
تحسين استعلامات Elasticsearch: استخدم الفهارس المناسبة والتحسينات في استعلامات Elasticsearch للحصول على أداء أسرع.
-
إدارة السجلات القديمة: استخدم تقنيات مثل “index rotation” لإدارة السجلات القديمة في Elasticsearch.
10. خاتمة
إعداد مكدس السجلات EFK على Kubernetes يعد من بين الحلول الفعالة لإدارة السجلات في بيئات الحاويات. يتيح لك مكدس EFK جمع السجلات، تخزينها، وتحليلها بشكل مرن، مما يساعد في تعزيز قدرات مراقبة البنية التحتية وحل المشكلات بسرعة.

