حزمة ELK هي اختصار لـ Elasticsearch، Logstash، و Kibana، والتي تقدم القدرات التالية:
- Elasticsearch: محرك بحث وتحليلات قابل للتوسع، يتضمن أداة لتحليل السجلات وقاعدة بيانات شكلتها التطبيقات، مثالية للتطبيقات التي تعتمد على البيانات.
- Logstash: أداة تحويل السجلات تجمع السجلات من مصادر متعددة، تحللها، ثم ترسلها إلى Elasticsearch للتخزين والتحليل.
- Kibana: أداة تصور قوية تسمح لك باستكشاف وتحليل البيانات المخزنة في Elasticsearch باستخدام مخططات تفاعلية ورسوم بيانية ولوحات تحكم.
البنية التحتية لـ Elasticsearch
قبل أن نغوص في نشر حزمة ELK، دعونا نفهم أولاً المكونات الحرجة لبنية Elasticsearch:
- العقد: elasticsearch يعمل على خوادم مخصصة تسمى العقد، والتي تعمل كبرنامج ثنائي لمهام البحث والتحليلات.
- الشطران: يتم تقسيم مساحة قاعدة البيانات منطقيًا إلى شطران، مما يسمح بوصول أسرع للبيانات وتوزيعها.
- المصنفات: elasticsearch ينظم البيانات المخزنة إلى مصنفات، مما يسهم في إدارة البيانات بفعالية.
- تكوين حزمة ELK: ستحتاج إلى مجموعة Kubernetes لنشر حزمة ELK على Kubernetes. إذا كان لديك بالفعل واحدة، يمكنك المضي قدمًا في النشر. وبديلًا، يمكنك استخدام المستودع GitHub المقدم مع ملفات Terraform لإعداد مجموعة Kubernetes.
- نشر Elasticsearch: باستخدام مخططات Helm، يمكننا نشر Elasticsearch بكفاءة. قم بتعديل ملف القيم لتتناسب مع متطلباتك الخاصة، مثل تعديل عدد النسخ الاحتياطية أو تشغيل ميزات معينة/إيقاف تشغيلها. احصل عليها من موقع Artifactory Hub.
values-elasticsearch.yaml
clusterName: "itsyndicateblog"
replicas: 1
minimumMasterNodes: 1
createCert: true
secret:
enabled: true
password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
requests:
cpu: "200m"
memory: "500Mi"
limits:
cpu: "300m"
memory: "1Gi"
ingress:
enabled: false # enable ingress only if you need external access to elasticsearch cluster
hosts:
- host: elastic.itsyndicate.org
paths:
- path: /
بمجرد تخصيص القيم، استخدم مخطط Helm لتثبيت Elasticsearch:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
ملاحظة: تأكد من تكوين السائقين (EBS أو EFS) للحجز الدائم.
نشر Kibana
نشر Kibana باستخدام مخططات Helm سهل. في ملف القيم، حدد عنوان URL ومنفذ خدمة Elasticsearch:
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
تحقق مما إذا كان Kibana مثبتًا بشكل صحيح، انتقل بالمنفذ إلى الشبكة المحلية (أنا أستخدم K8s Lens)
نشر Logstash وFilebeat
لإدارة السجلات بفعالية، نستخدم Logstash وFilebeat. Filebeat يجمع السجلات من مصادر مختلفة وLogstash يعالجها ويرسلها إلى Elasticsearch.
نشر Logstash
- استنساخ المستودع مع الإعدادات: logstash-k8s
- انتقل إلى tf-modules/eks/manifests/logstash-k8s
- تعديل ملف configmap.yaml
- أضف موقع Elasticsearch ومستخدم وكلمة مرور (يمكنك الحصول عليها من خيار “Secrets” في وحدة الإدارة الخاسرة)
- تطبيق القوالب:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
نشر Filebeat
- تأكد من أن تكوين Filebeat يشير إلى الملفات المناسبة للسجلات على عقداتك. عادة، في EKS، هو مجلد /var/log/containers. للتحقق من ذلك، تسجيل الدخول إلى إحدى عقداتك والانتقال إلى المجلد /var/log/containers؛ إذا لم تكن هناك ملفات، حاول تغيير المجلد.
- في حالة كل شيء صحيح، تطبيق قوالب Kubernetes:
kubectl apply -f filebeat-k8s
نشر تطبيق بسيط للتحقق من كيفية تدفق السجلات إلى Elasticsearch
- أدخل مجلد eks/manifests من المستودع المستنسخ.
- تنفيذ الأمر:
kubeclt apply -f app -n default
بعد اكتمال التثبيت، زيارة مرة أخرى Kibana وإنشاء فهرس elasticsearch.
إنشاء فهرس:
إنشاء نمط فهرس logstash: logstash-[namespace]*
الآن، يجب أن ترى سجلات من التطبيق المنشأ. إذا لم يكن كذلك، أجري بعض الطلبات إلى هذا التطبيق وحاول إصلاح المشكلة؛ استشارة دليل الفيديو في حالة الحاجة إلى مساعدة.
الخاتمة
لقد نجحت في نشر حزمة الـ ELK Stack على Kubernetes، مما يمنح تطبيقاتك تحليل السجلات القوي والرؤى القائمة على البيانات. Elasticsearch و Logstash و Kibana يعالجون تيارات البيانات الكبيرة بسلاسة ويوفرون تصورات ذات معنى.
الآن بعد أن لديك حل لتسجيل قوي، يمكنك إدارة سجلاتك بكفاءة والحصول على رؤى قيمة. تحية للتحليل!
شكراً لك على قراءة هذا الدليل حول نشر حزمة الـ ELK Stack. لا تتردد في التواصل إذا كان لديك أي أسئلة أو تحتاج إلى مزيد من المساعدة. تحياتي للبرمجة!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes