ELK הוא לא רק אייל (מבוא לסדרת מוצרים בסביבה פתוחה לאינדוקס, יצירת ממשק ועוד)

סימונה מריאם 04.05.2016 22:37
ELK הוא לא רק אייל (מבוא לסדרת מוצרים בסביבה פתוחה לאינדוקס, יצירת ממשק ועוד)


ElasticSearch מתפקד כמוצר לניתוח וחיפוש בטקסט, כאשר בלב ליבו נמצאת הספרייה Lucene. בשעה שמוקצבת לנו נדבר על שלושה מוצרים מעולם הקוד הפתוח: Logstash, ElasticSearch ו-Kibana. נדבר על היכולות של כל אחד מהמוצרים וננסה לראות איך אריכטקטורה שבנויה משלושתם יכולה לשמש אותנו על מנת לתרום לארגון בכלל ולנו בפיתוח שלנו בפרט.



ELK הינה אריכטקטורת קוד פתוח המורכבת משלושה מוצרים – Logstash, ElasticSearch וKibana, ונמצאת באחריותה של חברת elastic.co. נעבור על כל שלושת המוצרים בקצרה וננסה להבין את הארכיטקטורה המתקבלת וייתרונותיה.
Logstash
Logstash הינו כלי מבוסס pluginים לאיסוף, פרסור ושליחה של נתונים, בעיקר לוגים. כל מקור נתונים בLogstash ניתן להגדרה בקובץ קונפיגורציה נפרד, וכל קובץ קונפיגורציה מורכב משלושה חלקים:
•  Input – המקור ממנו מגיעים הנתונים. לדוגמא: קובץ, socket tcp, kafka, twitter
• Filter – חלק זה אחראי על פרסור והעשרת הנתונים. בדרך כלל נתחיל בלפרסר את הנתונים תוך שימוש בgrok וregex, ולאחר מכן נעשיר את הערכים שהתקבלו על ידי מספר נרחב של פלאגיניים.
• Output – כאן נגדיר לאן יישלחו הנתונים. גם כאן האפשרויות הן רבות, אך החשובה מביניהן היא ElasticSearch.
קיימת גמישות רבה בהגדרת קובץ קונפיגורציה מכיוון שקיימים פלאגינים רבים המותאמים לכל חלק. חלק מן הפלאגינים האלו פותחו על ידי elastic וחלקם פותחו על ידי קהילת הopen source. במידה וניסיתם לכתוב קובץ קונפיגורציה ולא מצאתם את הPlugin המתאים לכם, תוכלו בקלות רבה לכתוב גם קטע קוד משל עצמכם.
ElasticSearch
אמנם ElasticSearch נראה למראית עין כDatabase NoSQL רגיל אך הוא הרבה מעבר. מדובר במנוע לאינדוקס וחיפוש בטקסט המבוסס על ספריית Lucene, המאפשר גם יכולות אנליטיות רבות. ElasticSearch חושף RESTAPI עשיר למפתחים והעבודה מול הנתונים מבוססת JSON.
מספר מושגים בסיסיים לתחילת הדרך:
• Cluster – מקבץ שרתי ElasticSearch העובדים ביחד כElasticSearch אחד
• Node – Instance אחד יחיד של ElasticSearch, בדרך כלל נהוג שכל node יימצא על שרת משל עצמו
• Index – אוסף מסמכים להם מאפיינים דומים. המקבילה היחסית לDatabase במסדי נתונים רלציוניים
• Type – איגוד לוגי של מסמכים תחת הindex. הmapping, הגדרות ומבנה המסמכים, יישמר תחת הtype.
• Shard - יחידת נתונים פיזית תחת index המכילה חלק מן הנתונים. זהו בעצמם instance בודד של lucene המנוהל כולו תחת ElasticSearch. קיימים שני סוגים של shardים:
o Primary Shards – הנתונים עצמם. ממנו קוראים ואליו כותבים.
o Replica Shards – העתק של הנתונים, ממנו קוראים בלבד. מתעדכן אל מול הPrimary Shards.
Kibana
מייצג גרפי של הנתונים הנשמרים בElasticSearch. הKibana ניגשת אל הנתונים השמורים באינדקסים השונים, מפלטרת לפי בקשתינו ומציגה וויזואליזציות שונות תוך ביצוע שליפות אגרגטיביות על הנתונים. התוצאות הטובות ביותר בעבודה מול הKibana יהיו בעבודה מול נתוני TimeSeries – לוגים למיניהם. הוויזואליזציות כוללות בין הייתר:
• היסטוגרמות שונות
• גרף מקלות
• PieChart
• טבלאות מידע אגרגטיביות
• תצוגת מפות עבור נתוני GeoIP
הכי חשוב - מאפשרת עבודה נוחה ואינטואיטיבית עבור משתמשי הקצה.

שילוב של שלושת המוצרים שתוארו, יוצר ארכיטקטורה הקלה להקמה ותפעול ומציגה תוצרים מהם ניתן להפיק מסקנות בייתר קלות בזמן קצר.


מצגת ההרצאה

231-ELK from sigtrs on Vimeo.



הוספת תגובה
  מגיב אנונימי
שם או כינוי:
חסימת סיסמה:
  זכור אותי תמיד במחשב זה

כותרת ראשית:
אבקש לקבל בדואר אלקטרוני כל תגובה לטוקבק שלי
אבקש לקבל בדואר אלקטרוני כל תגובה למאמר הזה