הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

הבה נזכיר שה- Elastic Stack מבוסס על מסד הנתונים Elasticsearch הלא-רלציונלי, ממשק האינטרנט Kibana ואוספי נתונים ומעבדים (Logstash המפורסם ביותר, Beats שונים, APM ואחרים). אחת התוספות הנחמדות לכל ערימת המוצרים הרשומה היא ניתוח נתונים באמצעות אלגוריתמים של למידת מכונה. במאמר אנו מבינים מהם האלגוריתמים הללו. בבקשה מתחת לחתול.

למידת מכונה היא תכונה בתשלום של תוכנת Shareware Elastic Stack והיא כלולה ב-X-Pack. כדי להתחיל להשתמש בו, פשוט הפעל את גרסת הניסיון של 30 יום לאחר ההתקנה. לאחר תום תקופת הניסיון, תוכל לבקש תמיכה כדי להאריך אותה או לרכוש מנוי. עלות המנוי מחושבת לא על סמך נפח הנתונים, אלא על פי מספר הצמתים שבהם נעשה שימוש. לא, נפח הנתונים, כמובן, משפיע על מספר הצמתים הנדרשים, אבל עדיין הגישה הזו לרישוי היא אנושית יותר ביחס לתקציב החברה. אם אין צורך בפריון גבוה, אתה יכול לחסוך כסף.

ML ב-Elastic Stack כתוב ב-C++ ופועל מחוץ ל-JVM, בו Elasticsearch עצמו פועל. כלומר, התהליך (אגב, זה נקרא autodetect) צורך כל מה שה-JVM לא בולע. בדוכן הדגמה זה לא כל כך קריטי, אבל בסביבת ייצור חשוב להקצות צמתים נפרדים למשימות ML.

אלגוריתמי למידת מכונה מתחלקים לשתי קטגוריות - עם המורה и בלי מורה. ב- Elastic Stack, האלגוריתם נמצא בקטגוריית "לא בפיקוח". על ידי קישור זה אתה יכול לראות את המנגנון המתמטי של אלגוריתמי למידת מכונה.

כדי לבצע את הניתוח, אלגוריתם למידת מכונה משתמש בנתונים המאוחסנים באינדקסים של Elasticsearch. ניתן ליצור משימות לניתוח הן מהממשק של Kibana והן דרך ה-API. אם אתה עושה את זה דרך Kibana, אז אתה לא צריך לדעת כמה דברים. למשל, אינדקסים נוספים שהאלגוריתם משתמש בהם במהלך פעולתו.

מדדים נוספים המשמשים בתהליך הניתוח.ml-state - מידע על מודלים סטטיסטיים (הגדרות ניתוח);
.ml-anomalies-* - תוצאות של אלגוריתמי ML;
.ml-notifications — הגדרות להתראות המבוססות על תוצאות ניתוח.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

מבנה הנתונים במסד הנתונים של Elasticsearch מורכב מאינדקסים ומסמכים המאוחסנים בהם. בהשוואה למסד נתונים יחסי, ניתן להשוות אינדקס לסכימת מסד נתונים, ומסמך לרשומה בטבלה. השוואה זו מותנית ומסופקת כדי לפשט את ההבנה של חומר נוסף למי ששמע רק על Elasticsearch.

אותה פונקציונליות זמינה דרך ה-API כמו דרך ממשק האינטרנט, כך שלבהירות והבנה של המושגים, נראה כיצד להגדיר זאת דרך Kibana. בתפריט בצד שמאל יש קטע Machine Learning שבו אתה יכול ליצור עבודה חדשה. בממשק Kibana זה נראה כמו התמונה למטה. כעת ננתח כל סוג של מטלה ונראה את סוגי הניתוח שניתן לבנות כאן.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

Single Metric - ניתוח של מדד אחד, Multi Metric - ניתוח של שני מדדים או יותר. בשני המקרים, כל מדד מנותח בסביבה מבודדת, כלומר. האלגוריתם אינו לוקח בחשבון את ההתנהגות של מדדים מנותחים מקבילים, כפי שזה עשוי להיראות במקרה של Multi Metric. כדי לבצע חישובים תוך התחשבות בקורלציה של מדדים שונים, אתה יכול להשתמש בניתוח אוכלוסייה. ומתקדם מכוונן את האלגוריתמים עם אפשרויות נוספות עבור משימות מסוימות.

מדד יחיד

ניתוח שינויים במדד אחד הוא הדבר הפשוט ביותר שניתן לעשות כאן. לאחר לחיצה על Create Job, האלגוריתם יחפש חריגות.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

בתחום צבירה אתה יכול לבחור גישה לחיפוש חריגות. למשל, מתי דקות ערכים מתחת לערכים טיפוסיים ייחשבו לאנומליים. לאכול מקסימום, ממוצע גבוה, נמוך, ממוצע, מובחן ואחרים. ניתן למצוא תיאורים של כל הפונקציות по ссылке.

בתחום שדה מציין את השדה המספרי במסמך עליו נבצע את הניתוח.

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

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

משך הנתונים הנאספים הוא דבר מרכזי המשפיע על יעילות הניתוח. במהלך הניתוח, האלגוריתם מזהה מרווחים חוזרים, מחשב רווחי סמך (בסיסים) ומזהה חריגות - סטיות לא טיפוסיות מההתנהגות הרגילה של המדד. רק לדוגמא:

קווי בסיס עם פיסת נתונים קטנה:

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

כאשר יש לאלגוריתם ממה ללמוד, קו הבסיס נראה כך:

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

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

אזהרה (כחול): פחות מ-25
מינור (צהוב): 25-50
מייג'ור (כתום): 50-75
קריטי (אדום): 75-100

הגרף שלהלן מציג דוגמה לאנומליות שנמצאו.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

כאן אתה יכול לראות את המספר 94, המציין את ההסתברות לאנומליה. ברור שמכיוון שהערך קרוב ל-100, זה אומר שיש לנו אנומליה. העמודה מתחת לגרף מציגה את ההסתברות הקטנה באופן משפיל של 0.000063634% מהערך המטרי המופיע שם.

בנוסף לחיפוש חריגות, אתה יכול להפעיל חיזוי בקיבנה. זה נעשה בפשטות ומאותה תצוגה עם חריגות - כפתור תַחֲזִית בפינה הימנית העליונה.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

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

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

במצבים מסוימים, התחזית תהיה שימושית מאוד, למשל, בעת ניטור עומס המשתמש על התשתית.

רב מדדים

בואו נעבור לתכונת ה-ML הבאה ב- Elastic Stack - ניתוח מספר מדדים באצווה אחת. אבל זה לא אומר שהתלות של מדד אחד באחר תנתח. זה זהה למדד יחיד, אבל עם מספר מדדים על מסך אחד להשוואה קלה של ההשפעה של אחד על השני. נדבר על ניתוח התלות של מדד אחד באחר בסעיף אוכלוסייה.

לאחר לחיצה על הריבוע עם Multi Metric, יופיע חלון עם הגדרות. בואו נסתכל עליהם ביתר פירוט.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

ראשית עליך לבחור את השדות לניתוח וצבירת נתונים עליהם. אפשרויות הצבירה כאן זהות לאלו של מדד יחיד (מקסימום, ממוצע גבוה, נמוך, ממוצע, מובחן ואחרים). בנוסף, אם תרצה, הנתונים מחולקים לאחד מהשדות (שדה פיצול נתונים). בדוגמה, עשינו זאת לפי שדה OriginAirportID. שימו לב שגרף המדדים מימין מוצג כעת כמספר גרפים.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

שדה שדות מפתח (משפיענים) משפיע ישירות על החריגות שזוהו. כברירת מחדל תמיד יהיה כאן לפחות ערך אחד, וניתן להוסיף ערכים נוספים. האלגוריתם ייקח בחשבון את ההשפעה של שדות אלו בעת ניתוח ויציג את הערכים ה"משפיעים" ביותר.

לאחר ההשקה, משהו כזה יופיע בממשק Kibana.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

זה מה שנקרא מפת חום של חריגות עבור כל ערך שדה OriginAirportID, שציינו בו פיצול נתונים. כמו במדד יחיד, הצבע מציין את רמת הסטייה החריגה. נוח לעשות ניתוח דומה, למשל, על תחנות עבודה כדי לעקוב אחר אלה עם מספר גדול באופן חשוד של הרשאות וכו'. כבר כתבנו על אירועים חשודים ב- EventLog Windows, שגם אותו ניתן לאסוף ולנתח כאן.

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

אוכלוסיה

כדי לחפש חריגות בין מתאמים בין מדדים שונים, ל- Elastic Stack יש ניתוח אוכלוסייה מיוחד. בעזרתו אתה יכול לחפש ערכים חריגים בביצועים של שרת בהשוואה לאחרים כאשר, למשל, מספר הבקשות למערכת היעד גדל.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

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

שימו לב שהגרף של הנתונים המנותחים שונה מהמקרים עם מדד יחיד ומדד רב. זה נעשה ב-Kibana על ידי עיצוב לתפיסה משופרת של התפלגות הערכים של הנתונים המנותחים.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

הגרף מראה שהתהליך התנהג בצורה לא תקינה לחץ (אגב, נוצר על ידי כלי עזר מיוחד) בשרת poipu, שהשפיע (או התברר שהוא משפיע) על התרחשות האנומליה הזו.

מתקדם

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

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

В summary_count_field_name לחלופין, ניתן לציין שם של שדה ממסמכים המכילים ערכים מצטברים. בדוגמה זו, מספר האירועים בדקה. IN categorization_field_name מציין את השם והערך של שדה מהמסמך המכיל ערך משתנה כלשהו. באמצעות המסכה בשדה זה, תוכל לפצל את הנתונים המנותחים לתת-קבוצות. שימו לב לכפתור הוסף גלאי באיור הקודם. להלן התוצאה של לחיצה על כפתור זה.

הבנת למידת מכונה במחסנית האלסטית (המכונה Elasticsearch, aka ELK)

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

בתחום פונקציה אתה יכול לבחור פונקציה ספציפית לחיפוש חריגות. מלבד נדיר, יש עוד כמה פונקציות מעניינות - זמן ביום и זמן_בשבוע. הם מזהים חריגות בהתנהגות של מדדים לאורך היום או השבוע, בהתאמה. פונקציות ניתוח אחרות נמצא בתיעוד.

В שם שדה מציין את שדה המסמך עליו יתבצע הניתוח. By_field_name ניתן להשתמש כדי להפריד את תוצאות הניתוח עבור כל ערך בודד של שדה המסמך שצוין כאן. אם תמלא over_field_name אתה מקבל את ניתוח האוכלוסייה שדיברנו עליו לעיל. אם אתה מציין ערך ב partition_field_name, אז עבור שדה זה של המסמך יחושבו קווי בסיס נפרדים עבור כל ערך (הערך יכול להיות, למשל, שם השרת או התהליך בשרת). IN exclude_frequent יכול לבחור את כל או אף לא אחד, כלומר אי הכללה (או הכללה) של ערכי שדות מסמכים הנפוצים לעתים קרובות.

במאמר זה, ניסינו לתת מושג תמציתי ככל האפשר לגבי היכולות של למידת מכונה ב- Elastic Stack; עדיין נותרו הרבה פרטים מאחורי הקלעים. ספר לנו בתגובות אילו מקרים הצלחת לפתור באמצעות Elastic Stack ולאילו משימות אתה משתמש בו. כדי ליצור איתנו קשר, אתה יכול להשתמש בהודעות אישיות ב-Habré או טופס משוב באתר.

מקור: www.habr.com

הוספת תגובה