ערוץ 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" של Kubernetes)
- יישום תבניות:
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 על Kubernetes, מעצימה את היישומים שלך עם ניתוח יעיל של יומן ותובנות מבוססות נתונים. Elasticsearch, Logstash ו-Kibana מטפלים בצופן גדול של נתונים ומספקים תיאוריות משמעותיות.
עכשיו שיש לך פתרון יעיל לניהול יומנים, אתה יכול לנהל את היומנים שלך ביעילות ולקבל תובנות חשובות. שמח לנתח!
תודה שקראת את המדריך הזה על פרויקט ELK. תרגיש חופשי לפנות אם יש לך שאלות או דרוש עזרה נוספת. שמח לתכנת!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes