הבה נזכיר שה- Elastic Stack מבוסס על מסד הנתונים Elasticsearch הלא-רלציונלי, ממשק האינטרנט Kibana ואוספי נתונים ומעבדים (Logstash המפורסם ביותר, Beats שונים, APM ואחרים). אחת התוספות הנחמדות לכל ערימת המוצרים הרשומה היא ניתוח נתונים באמצעות אלגוריתמים של למידת מכונה. במאמר אנו מבינים מהם האלגוריתמים הללו. בבקשה מתחת לחתול.
למידת מכונה היא תכונה בתשלום של תוכנת Shareware Elastic Stack והיא כלולה ב-X-Pack. כדי להתחיל להשתמש בו, פשוט הפעל את גרסת הניסיון של 30 יום לאחר ההתקנה. לאחר תום תקופת הניסיון, תוכל לבקש תמיכה כדי להאריך אותה או לרכוש מנוי. עלות המנוי מחושבת לא על סמך נפח הנתונים, אלא על פי מספר הצמתים שבהם נעשה שימוש. לא, נפח הנתונים, כמובן, משפיע על מספר הצמתים הנדרשים, אבל עדיין הגישה הזו לרישוי היא אנושית יותר ביחס לתקציב החברה. אם אין צורך בפריון גבוה, אתה יכול לחסוך כסף.
ML ב-Elastic Stack כתוב ב-C++ ופועל מחוץ ל-JVM, בו Elasticsearch עצמו פועל. כלומר, התהליך (אגב, זה נקרא autodetect) צורך כל מה שה-JVM לא בולע. בדוכן הדגמה זה לא כל כך קריטי, אבל בסביבת ייצור חשוב להקצות צמתים נפרדים למשימות ML.
אלגוריתמי למידת מכונה מתחלקים לשתי קטגוריות -
כדי לבצע את הניתוח, אלגוריתם למידת מכונה משתמש בנתונים המאוחסנים באינדקסים של Elasticsearch. ניתן ליצור משימות לניתוח הן מהממשק של Kibana והן דרך ה-API. אם אתה עושה את זה דרך Kibana, אז אתה לא צריך לדעת כמה דברים. למשל, אינדקסים נוספים שהאלגוריתם משתמש בהם במהלך פעולתו.
מדדים נוספים המשמשים בתהליך הניתוח.ml-state - מידע על מודלים סטטיסטיים (הגדרות ניתוח);
.ml-anomalies-* - תוצאות של אלגוריתמי ML;
.ml-notifications — הגדרות להתראות המבוססות על תוצאות ניתוח.
מבנה הנתונים במסד הנתונים של Elasticsearch מורכב מאינדקסים ומסמכים המאוחסנים בהם. בהשוואה למסד נתונים יחסי, ניתן להשוות אינדקס לסכימת מסד נתונים, ומסמך לרשומה בטבלה. השוואה זו מותנית ומסופקת כדי לפשט את ההבנה של חומר נוסף למי ששמע רק על Elasticsearch.
אותה פונקציונליות זמינה דרך ה-API כמו דרך ממשק האינטרנט, כך שלבהירות והבנה של המושגים, נראה כיצד להגדיר זאת דרך Kibana. בתפריט בצד שמאל יש קטע Machine Learning שבו אתה יכול ליצור עבודה חדשה. בממשק Kibana זה נראה כמו התמונה למטה. כעת ננתח כל סוג של מטלה ונראה את סוגי הניתוח שניתן לבנות כאן.
Single Metric - ניתוח של מדד אחד, Multi Metric - ניתוח של שני מדדים או יותר. בשני המקרים, כל מדד מנותח בסביבה מבודדת, כלומר. האלגוריתם אינו לוקח בחשבון את ההתנהגות של מדדים מנותחים מקבילים, כפי שזה עשוי להיראות במקרה של Multi Metric. כדי לבצע חישובים תוך התחשבות בקורלציה של מדדים שונים, אתה יכול להשתמש בניתוח אוכלוסייה. ומתקדם מכוונן את האלגוריתמים עם אפשרויות נוספות עבור משימות מסוימות.
מדד יחיד
ניתוח שינויים במדד אחד הוא הדבר הפשוט ביותר שניתן לעשות כאן. לאחר לחיצה על Create Job, האלגוריתם יחפש חריגות.
בתחום צבירה אתה יכול לבחור גישה לחיפוש חריגות. למשל, מתי דקות ערכים מתחת לערכים טיפוסיים ייחשבו לאנומליים. לאכול מקסימום, ממוצע גבוה, נמוך, ממוצע, מובחן ואחרים. ניתן למצוא תיאורים של כל הפונקציות
בתחום שדה מציין את השדה המספרי במסמך עליו נבצע את הניתוח.
בתחום
משך הנתונים הנאספים הוא דבר מרכזי המשפיע על יעילות הניתוח. במהלך הניתוח, האלגוריתם מזהה מרווחים חוזרים, מחשב רווחי סמך (בסיסים) ומזהה חריגות - סטיות לא טיפוסיות מההתנהגות הרגילה של המדד. רק לדוגמא:
קווי בסיס עם פיסת נתונים קטנה:
כאשר יש לאלגוריתם ממה ללמוד, קו הבסיס נראה כך:
לאחר תחילת המשימה, האלגוריתם קובע סטיות חריגות מהנורמה ומדרג אותן לפי ההסתברות לאנומליה (צבע התווית המתאימה מצוין בסוגריים):
אזהרה (כחול): פחות מ-25
מינור (צהוב): 25-50
מייג'ור (כתום): 50-75
קריטי (אדום): 75-100
הגרף שלהלן מציג דוגמה לאנומליות שנמצאו.
כאן אתה יכול לראות את המספר 94, המציין את ההסתברות לאנומליה. ברור שמכיוון שהערך קרוב ל-100, זה אומר שיש לנו אנומליה. העמודה מתחת לגרף מציגה את ההסתברות הקטנה באופן משפיל של 0.000063634% מהערך המטרי המופיע שם.
בנוסף לחיפוש חריגות, אתה יכול להפעיל חיזוי בקיבנה. זה נעשה בפשטות ומאותה תצוגה עם חריגות - כפתור תַחֲזִית בפינה הימנית העליונה.
התחזית מתבצעת לכל היותר 8 שבועות מראש. גם אם אתה באמת רוצה, זה כבר לא אפשרי בתכנון.
במצבים מסוימים, התחזית תהיה שימושית מאוד, למשל, בעת ניטור עומס המשתמש על התשתית.
רב מדדים
בואו נעבור לתכונת ה-ML הבאה ב- Elastic Stack - ניתוח מספר מדדים באצווה אחת. אבל זה לא אומר שהתלות של מדד אחד באחר תנתח. זה זהה למדד יחיד, אבל עם מספר מדדים על מסך אחד להשוואה קלה של ההשפעה של אחד על השני. נדבר על ניתוח התלות של מדד אחד באחר בסעיף אוכלוסייה.
לאחר לחיצה על הריבוע עם Multi Metric, יופיע חלון עם הגדרות. בואו נסתכל עליהם ביתר פירוט.
ראשית עליך לבחור את השדות לניתוח וצבירת נתונים עליהם. אפשרויות הצבירה כאן זהות לאלו של מדד יחיד (מקסימום, ממוצע גבוה, נמוך, ממוצע, מובחן ואחרים). בנוסף, אם תרצה, הנתונים מחולקים לאחד מהשדות (שדה פיצול נתונים). בדוגמה, עשינו זאת לפי שדה OriginAirportID. שימו לב שגרף המדדים מימין מוצג כעת כמספר גרפים.
שדה שדות מפתח (משפיענים) משפיע ישירות על החריגות שזוהו. כברירת מחדל תמיד יהיה כאן לפחות ערך אחד, וניתן להוסיף ערכים נוספים. האלגוריתם ייקח בחשבון את ההשפעה של שדות אלו בעת ניתוח ויציג את הערכים ה"משפיעים" ביותר.
לאחר ההשקה, משהו כזה יופיע בממשק Kibana.
זה מה שנקרא מפת חום של חריגות עבור כל ערך שדה OriginAirportID, שציינו בו פיצול נתונים. כמו במדד יחיד, הצבע מציין את רמת הסטייה החריגה. נוח לעשות ניתוח דומה, למשל, על תחנות עבודה כדי לעקוב אחר אלה עם מספר גדול באופן חשוד של הרשאות וכו'. כבר כתבנו
מתחת למפת החום יש רשימה של חריגות, מכל אחת מהן ניתן לעבור לתצוגת המדד היחיד לניתוח מפורט.
אוכלוסיה
כדי לחפש חריגות בין מתאמים בין מדדים שונים, ל- Elastic Stack יש ניתוח אוכלוסייה מיוחד. בעזרתו אתה יכול לחפש ערכים חריגים בביצועים של שרת בהשוואה לאחרים כאשר, למשל, מספר הבקשות למערכת היעד גדל.
באיור זה, השדה אוכלוסייה מציין את הערך שאליו יתייחסו המדדים המנותחים. במקרה זה זה שם התהליך. כתוצאה מכך, נראה כיצד עומס המעבד של כל תהליך השפיע זה על זה.
שימו לב שהגרף של הנתונים המנותחים שונה מהמקרים עם מדד יחיד ומדד רב. זה נעשה ב-Kibana על ידי עיצוב לתפיסה משופרת של התפלגות הערכים של הנתונים המנותחים.
הגרף מראה שהתהליך התנהג בצורה לא תקינה לחץ (אגב, נוצר על ידי כלי עזר מיוחד) בשרת poipu, שהשפיע (או התברר שהוא משפיע) על התרחשות האנומליה הזו.
מתקדם
אנליטיקה עם כוונון עדין. עם ניתוח מתקדם, הגדרות נוספות מופיעות ב-Kibana. לאחר לחיצה על האריח מתקדם בתפריט היצירה, מופיע חלון זה עם כרטיסיות. כרטיסייה פרטי עבודה דילגנו על זה בכוונה, יש הגדרות בסיסיות שלא קשורות ישירות להגדרת הניתוח.
В summary_count_field_name לחלופין, ניתן לציין שם של שדה ממסמכים המכילים ערכים מצטברים. בדוגמה זו, מספר האירועים בדקה. IN
הנה בלוק נוסף של הגדרות לקביעת תצורת גלאי החריגות עבור משימה ספציפית. אנו מתכננים לדון במקרי שימוש ספציפיים (במיוחד באבטחה) במאמרים הבאים. לדוגמה,
בתחום פונקציה אתה יכול לבחור פונקציה ספציפית לחיפוש חריגות. מלבד נדיר, יש עוד כמה פונקציות מעניינות -
В שם שדה מציין את שדה המסמך עליו יתבצע הניתוח. By_field_name ניתן להשתמש כדי להפריד את תוצאות הניתוח עבור כל ערך בודד של שדה המסמך שצוין כאן. אם תמלא over_field_name אתה מקבל את ניתוח האוכלוסייה שדיברנו עליו לעיל. אם אתה מציין ערך ב partition_field_name, אז עבור שדה זה של המסמך יחושבו קווי בסיס נפרדים עבור כל ערך (הערך יכול להיות, למשל, שם השרת או התהליך בשרת). IN exclude_frequent יכול לבחור את כל או אף לא אחד, כלומר אי הכללה (או הכללה) של ערכי שדות מסמכים הנפוצים לעתים קרובות.
במאמר זה, ניסינו לתת מושג תמציתי ככל האפשר לגבי היכולות של למידת מכונה ב- Elastic Stack; עדיין נותרו הרבה פרטים מאחורי הקלעים. ספר לנו בתגובות אילו מקרים הצלחת לפתור באמצעות Elastic Stack ולאילו משימות אתה משתמש בו. כדי ליצור איתנו קשר, אתה יכול להשתמש בהודעות אישיות ב-Habré או
מקור: www.habr.com