Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Нагадаем, што ў аснове Elastic Stack ляжаць нерэляцыйная база дадзеных Elasticsearch, вэб-інтэрфейс Kibana і зборшчыкі-апрацоўшчыкі дадзеных (самы вядомы Logstash, розныя Beats, APM і іншыя). Адно з прыемных дадаткаў усяго пералічанага стэка прадуктаў - аналіз дадзеных пры дапамозе алгарытмаў машыннага навучання. У артыкуле мы разбіраемся што з сябе ўяўляюць гэтыя алгарытмы. Просім пад кат.

Машыннае навучанне - платная функцыя ўмоўна-бясплатнага Elastic Stack і ўваходзіць у пакет X-Pack. Каб пачаць ім карыстацца дастаткова пасля ўстаноўкі актываваць 30-дзённы трыяльнік. Пасля заканчэння выпрабавальнага перыяду можна запытаць падтрымку аб яго падаўжэнні або купіць падпіску. Кошт падпіскі разлічваецца не ад аб'ёму даных, а ад колькасці выкарыстоўваных нод. Не, аб'ём дадзеных уплывае, вядома, на колькасць неабходных нод, але ўсё ж такі падыход да ліцэнзавання больш гуманны ў адносінах да бюджэту кампаніі. Калі няма патрэбы ў высокай прадукцыйнасці - можна і зэканоміць.

ML у Elastic Stack напісаны на З і працуе за межамі JVM, у якой круціцца сам Elasticsearch. Гэта значыць працэс (ён, дарэчы, завецца autodetect) спажывае ўсё, што не праглыне JVM. На дэма-стэндзе гэта не так крытычна, а вось у прадуктыўным асяроддзі важна вылучыць асобныя ноды для задач ML.

Алгарытмы машыннага навучання дзеляцца на дзве катэгорыі. з настаўнікам и без настаўніка. У Elastic Stack алгарытм з катэгорыі "без настаўніка". Па гэтай спасылцы можна паглядзець матэматычны апарат алгарытмаў машыннага навучання.

Для правядзення аналізу алгарытм машыннага навучання выкарыстоўвае дадзеныя, якія захоўваюцца ў азначніках Elasticsearch. Ствараць заданні для аналізу можна як з інтэрфейсу Kibana, так і праз API. Калі рабіць гэта праз Kibana, то некаторыя рэчы ведаць неабавязкова. Напрыклад, дадатковыя індэксы, якія выкарыстоўвае алгарытм у працэсе працы.

Дадатковыя індэксы, якія выкарыстоўваюцца ў працэсе аналізу.ml-state - інфармацыя аб статыстычных мадэлях (наладах аналізу);
.ml-anomalies-* - вынікі працы алгарытмаў ML;
.ml-notifications - налады абвестак па выніках аналізу.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Структура дадзеных у базе Elasticsearch складаецца з азначнікаў і якія захоўваюцца ў іх дакументах. Калі параўноўваць з рэляцыйнай базай дадзеных, то індэкс можна параўнаць са схемай базы дадзеных, а дакумент з запісам у табліцы. Гэтае параўнанне ўмоўна і прыведзена для спрашчэння разумення далейшага матэрыялу для тых, хто толькі чуў пра Elasticsearch.

Праз API даступны той жа функцыянал, што і праз вэб-інтэрфейс, таму для навочнасці і разуменні канцэпцый мы будзем паказваць як наладжваць праз Kibana. У меню злева ёсць частка Machine Learning, у якім можна стварыць новае заданне (Job). У інтэрфейсе Kibana гэта выглядае як на малюнку ніжэй. Цяпер мы разбяром кожны тыпу задання і пакажам віды аналізу, якія можна тут сканструяваць.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Single Metric - аналіз адной метрыкі, Multi Metric - аналіз двух і больш метрык. У абодвух выпадках кожная метрыка аналізуецца ў ізаляваным асяроддзі, г.зн. алгарытм не ўлічвае паводзіны раўналежна аналізаваных метрык як гэта магло здацца ў выпадку Multi Metric. Каб правесці разлік з улікам карэляцыі розных метрык можна прымяніць Population-аналіз. А Advanced – гэта тонкая настройка алгарытмаў дадатковымі опцыямі для пэўных задач.

Адзіная метрыка

Аналіз змен адной адзінай метрыкі - самае простае, што можна тут зрабіць. Пасля націску на Create Job, алгарытм шукае анамаліі.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

У полі агрэгавання можна абраць падыход да пошуку анамалій. Напрыклад, пры Мін анамальнымі будуць лічыцца значэння ніжэй тыповых. Ёсць Max, Hign Mean, Low, Mean, Distinct і іншыя. Апісанне ўсіх функцый можна паглядзець па спасылцы.

У полі Поле указваецца лікавае поле ў дакуменце, па якім будзем праводзіць аналіз.

У полі Bucket span - гранулярнасць прамежкаў на таймлайне, па якіх будзе весціся аналіз. Можна даверыцца аўтаматыцы ці абраць уручную. На малюнку ніжэй прыведзены прыклад занізкай гранулярнасці - вы можаце прапусціць анамалію. З дапамогай гэтай налады можна змяняць адчувальнасць алгарытму да анамалій.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Працягласць сабраных дадзеных - ключавая рэч, якая ўплывае на эфектыўнасць аналізу. Пры аналізе алгарытм вызначае паўтаральныя прамежкі, разлічвае даверны інтэрвал (базавыя лініі) і выяўляе анамаліі - нетыповыя адхіленні ад звычайных паводзін метрыкі. Проста для прыкладу:

Базавыя лініі пры невялікім адрэзку даных:

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Калі алгарытму ёсць на чым павучыцца - базавыя лініі выглядае так:

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Пасля запуску задання, алгарытм вызначае анамальныя адхіленні ад нормы і ранжыруе іх па верагоднасці анамаліі (у дужках паказаны колер адпаведнай пазнакі):

Warning (блакітны): менш за 25
Minor (yellow): 25-50
Major (orange): 50-75
Critical (red): 75-100

На графіцы ніжэй прыклад са знойдзенымі анамаліямі.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Тут бачна лічбу 94, якая абазначае верагоднасць анамаліі. Зразумела, што раз значэнне блізкае да 100, значыць перад намі анамалія. У слупку пад графікам паказана ўніжальна малая верагоднасць 0.000063634% з'яўленні там значэння метрыкі.

Акрамя пошуку анамалій у Kibana можна запусціць прагназаванне. Робіцца гэта элементарна і з таго ж самага ўяўлення з анамаліямі - кнопка Прагноз у верхнім правым куце.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Прагноз будуецца максімум на 8 тыдняў наперад. Нават калі вельмі жадаецца больш нельга by design.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

У некаторых сітуацыях прагноз будзе вельмі карысны, напрыклад, калі адсочваецца карыстацкая нагрузка на інфраструктуру.

Multi Metric

Пераходзім да наступнай магчымасці ML у Elastic Stack - аналізу некалькіх метрык адным пачкам. Але гэта не значыць, што будзе аналізавацца залежнасць адной метрыкі ад іншай. Гэта тое ж самае, што і Single Metric толькі з мноствам метрык на адным экране для зручнасці параўнання ўплыву аднаго на іншае. Пра аналіз залежнасці адной метрыкі ад іншай раскажам у частцы Population.

Пасля націску на квадрат з Multi Metric з'явіцца акно з наладамі. На іх спынімся падрабязней.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Для пачатку трэба абраць палі для аналізу і агрэгацыю дадзеных па іх. Варыянты агрэгацыі тут тыя ж, што і для Single Metric (Max, Hign Mean, Low, Mean, Distinct і іншыя). Далей дадзеныя пры жаданні разбіваюцца па адным з палёў (поле Split Data). У прыкладзе мы гэта зрабілі па полі OriginAirportID. Звярніце ўвагу, што графік метрык справа зараз прадстаўлены ў выглядзе мноства графікаў.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Поле Key Fields (Influencers) напрамую ўплывае на знойдзеныя анамаліі. Па змаўчанні тут заўсёды будзе хаця б адно значэнне, а вы можаце дадаць дадатковыя. Алгарытм будзе ўлічваць уплыў гэтых палёў пры аналізе і паказваць самыя "ўплывовыя" значэнні.

Пасля запуску ў інтэрфейсе Kibana з'явіцца прыкладна такая карціна.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Гэта т.зв. цеплавая карта анамалій па кожным значэнні поля OriginAirportID, якое мы ўказалі ў Split Data. Як і ў выпадку з Single Metric, колер абазначае ўзровень анамальнага адхіленні. Падобны аналіз зручна рабіць, напрыклад, па працоўных станцыях для адсочвання тых, дзе падазрона шмат аўтарызацый і г.д. Мы ўжо пісалі аб падазроных падзеях у EventLog Windows, якія таксама можна сюды збіраць і аналізаваць.

Пад цеплавой картай спіс анамалій, з кожнага можна перайсці на прадстаўленне Single Metric для дэталёвага аналізу.

Насельніцтва

Каб шукаць анамаліі сярод карэляцый паміж рознымі метрыкамі ў Elastic Stack ёсць спецыялізаваны Population-аналіз. Менавіта з дапамогай яго можна пашукаць анамальныя значэнні ў прадукцыйнасці які-небудзь сервера ў параўнанні з астатнімі пры, напрыклад, павелічэнні колькасці запытаў да мэтавай сістэмы.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

На гэтай ілюстрацыі ў полі Population пазначана значэнне, да якога будуць ставіцца аналізаваныя метрыкі. У дадзеным гэтае імя працэсу. У выніку мы ўбачым як загрузка працэсара кожным з працэсаў уплывала сябар на сябра.

Звярніце ўвагу, што графік аналізаваных дадзеных адрозніваецца ад выпадкаў з Single Metric і Multi Metric. Гэта зроблена ў Kibana by design для палепшанага ўспрымання размеркавання значэнняў аналізуемых дадзеных.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

З графіка відаць, што анамальна паводзіў сябе працэс стрэс (дарэчы сказаць, спароджаны спецыяльнай утылітай) на серверы поіпу, які паўплываў (ці аказаўся інфлюэнсерам) на ўзнікненне гэтай анамаліі.

прасунуты

Аналітыка з тонкай наладай. Пры Advanced аналізе ў Kibana з'яўляюцца дадатковыя наладкі. Пасля націску ў меню стварэння на плітку Advanced з'яўляецца вось такое акно з укладкамі. Укладку апісанне працы прапусцілі наўмысна, тамака базавыя налады не якія адносяцца непасрэдна да налады аналізу.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

В summary_count_field_name апцыянальна можна пазначыць назву поля з дакументаў, які змяшчае агрэгаваныя значэнні. У гэтым прыкладзе - колькасць падзей у хвіліну. У categorization_field_name указваецца назва значэнне поля з дакумента, якое змяшчае нейкае пераменнае значэнне. Па масцы на гэтае поле можна разбіваць аналізаваныя дадзеныя на падмноствы. Звярніце ўвагу на кнопку Add detector на папярэдняй ілюстрацыі. Ніжэй вынік націску на гэтую кнопку.

Разбіраемся з Machine Learning у Elastic Stack (ён жа Elasticsearch, ён жа ELK)

Тут дадатковы блок налад для налады дэтэктара анамалій пад пэўную задачу. Канкрэтныя кейсы выкарыстання (асабліва па бяспецы) мы плануем разабраць у наступных артыкулах. Для прыкладу, паглядзіце адзін з разабраных кейсаў. Ён злучаны з пошукам рэдка якія з'яўляюцца значэнняў і рэалізуецца функцыяй rare.

У полі функцыя можна абраць пэўную функцыю для пошуку анамалій. Акрамя рэдкі, ёсць яшчэ пара цікавых функцый time_of_day и time_of_week. Яны вывіваюць анамаліі ў паводзінах метрык на працягу дня ці тыдня адпаведна. Астатнія функцыі аналізу ёсць у дакументацыі.

В імя_поля указваецца поле дакумента, па якім будзе весціся аналіз. By_field_name можа выкарыстоўвацца для падзелу вынікаў аналізу па кожным асобным значэнні ўказанага тут поля дакумента. Калі запоўніць over_field_name атрымаецца population-аналіз, які мы разглядалі вышэй. Калі пазначыць значэнне ў partition_field_name, то па гэтым полі дакумента будуць разлічвацца асобныя базавыя лініі для кожнага значэння (у ролі значэння могуць выступаць, напрыклад, назоў сервера або працэсу на серверы). У exclude_frequent можна абраць усё або ніхто, Што будзе азначаць выключэнне (або ўключэнне) часта сустракаемых значэнняў палёў дакументаў.

У артыкуле мы паспрабавалі максімальна сціснута даць уяўленне аб магчымасцях машыннага навучання ў Elastic Stack, за кадрам засталося яшчэ нямала падрабязнасьцяў. Раскажыце ў каментарах якія кейсы ўдалося вырашыць пры дапамозе Elastic Stack і для якіх задач вы яго карыстаецеся. Для сувязі з намі можна выкарыстоўваць асабістыя паведамленні на Хабры або форму зваротнай сувязі на сайце.

Крыніца: habr.com

Дадаць каментар