Нагадаем, што ў аснове Elastic Stack ляжаць нерэляцыйная база дадзеных Elasticsearch, вэб-інтэрфейс Kibana і зборшчыкі-апрацоўшчыкі дадзеных (самы вядомы Logstash, розныя Beats, APM і іншыя). Адно з прыемных дадаткаў усяго пералічанага стэка прадуктаў - аналіз дадзеных пры дапамозе алгарытмаў машыннага навучання. У артыкуле мы разбіраемся што з сябе ўяўляюць гэтыя алгарытмы. Просім пад кат.
Машыннае навучанне - платная функцыя ўмоўна-бясплатнага Elastic Stack і ўваходзіць у пакет X-Pack. Каб пачаць ім карыстацца дастаткова пасля ўстаноўкі актываваць 30-дзённы трыяльнік. Пасля заканчэння выпрабавальнага перыяду можна запытаць падтрымку аб яго падаўжэнні або купіць падпіску. Кошт падпіскі разлічваецца не ад аб'ёму даных, а ад колькасці выкарыстоўваных нод. Не, аб'ём дадзеных уплывае, вядома, на колькасць неабходных нод, але ўсё ж такі падыход да ліцэнзавання больш гуманны ў адносінах да бюджэту кампаніі. Калі няма патрэбы ў высокай прадукцыйнасці - можна і зэканоміць.
ML у Elastic Stack напісаны на З і працуе за межамі JVM, у якой круціцца сам Elasticsearch. Гэта значыць працэс (ён, дарэчы, завецца autodetect) спажывае ўсё, што не праглыне JVM. На дэма-стэндзе гэта не так крытычна, а вось у прадуктыўным асяроддзі важна вылучыць асобныя ноды для задач ML.
Алгарытмы машыннага навучання дзеляцца на дзве катэгорыі.
Для правядзення аналізу алгарытм машыннага навучання выкарыстоўвае дадзеныя, якія захоўваюцца ў азначніках Elasticsearch. Ствараць заданні для аналізу можна як з інтэрфейсу Kibana, так і праз API. Калі рабіць гэта праз Kibana, то некаторыя рэчы ведаць неабавязкова. Напрыклад, дадатковыя індэксы, якія выкарыстоўвае алгарытм у працэсе працы.
Дадатковыя індэксы, якія выкарыстоўваюцца ў працэсе аналізу.ml-state - інфармацыя аб статыстычных мадэлях (наладах аналізу);
.ml-anomalies-* - вынікі працы алгарытмаў ML;
.ml-notifications - налады абвестак па выніках аналізу.
Структура дадзеных у базе Elasticsearch складаецца з азначнікаў і якія захоўваюцца ў іх дакументах. Калі параўноўваць з рэляцыйнай базай дадзеных, то індэкс можна параўнаць са схемай базы дадзеных, а дакумент з запісам у табліцы. Гэтае параўнанне ўмоўна і прыведзена для спрашчэння разумення далейшага матэрыялу для тых, хто толькі чуў пра Elasticsearch.
Праз API даступны той жа функцыянал, што і праз вэб-інтэрфейс, таму для навочнасці і разуменні канцэпцый мы будзем паказваць як наладжваць праз Kibana. У меню злева ёсць частка Machine Learning, у якім можна стварыць новае заданне (Job). У інтэрфейсе Kibana гэта выглядае як на малюнку ніжэй. Цяпер мы разбяром кожны тыпу задання і пакажам віды аналізу, якія можна тут сканструяваць.
Single Metric - аналіз адной метрыкі, Multi Metric - аналіз двух і больш метрык. У абодвух выпадках кожная метрыка аналізуецца ў ізаляваным асяроддзі, г.зн. алгарытм не ўлічвае паводзіны раўналежна аналізаваных метрык як гэта магло здацца ў выпадку Multi Metric. Каб правесці разлік з улікам карэляцыі розных метрык можна прымяніць Population-аналіз. А Advanced – гэта тонкая настройка алгарытмаў дадатковымі опцыямі для пэўных задач.
Адзіная метрыка
Аналіз змен адной адзінай метрыкі - самае простае, што можна тут зрабіць. Пасля націску на Create Job, алгарытм шукае анамаліі.
У полі агрэгавання можна абраць падыход да пошуку анамалій. Напрыклад, пры Мін анамальнымі будуць лічыцца значэння ніжэй тыповых. Ёсць Max, Hign Mean, Low, Mean, Distinct і іншыя. Апісанне ўсіх функцый можна паглядзець
У полі Поле указваецца лікавае поле ў дакуменце, па якім будзем праводзіць аналіз.
У полі
Працягласць сабраных дадзеных - ключавая рэч, якая ўплывае на эфектыўнасць аналізу. Пры аналізе алгарытм вызначае паўтаральныя прамежкі, разлічвае даверны інтэрвал (базавыя лініі) і выяўляе анамаліі - нетыповыя адхіленні ад звычайных паводзін метрыкі. Проста для прыкладу:
Базавыя лініі пры невялікім адрэзку даных:
Калі алгарытму ёсць на чым павучыцца - базавыя лініі выглядае так:
Пасля запуску задання, алгарытм вызначае анамальныя адхіленні ад нормы і ранжыруе іх па верагоднасці анамаліі (у дужках паказаны колер адпаведнай пазнакі):
Warning (блакітны): менш за 25
Minor (yellow): 25-50
Major (orange): 50-75
Critical (red): 75-100
На графіцы ніжэй прыклад са знойдзенымі анамаліямі.
Тут бачна лічбу 94, якая абазначае верагоднасць анамаліі. Зразумела, што раз значэнне блізкае да 100, значыць перад намі анамалія. У слупку пад графікам паказана ўніжальна малая верагоднасць 0.000063634% з'яўленні там значэння метрыкі.
Акрамя пошуку анамалій у Kibana можна запусціць прагназаванне. Робіцца гэта элементарна і з таго ж самага ўяўлення з анамаліямі - кнопка Прагноз у верхнім правым куце.
Прагноз будуецца максімум на 8 тыдняў наперад. Нават калі вельмі жадаецца больш нельга by design.
У некаторых сітуацыях прагноз будзе вельмі карысны, напрыклад, калі адсочваецца карыстацкая нагрузка на інфраструктуру.
Multi Metric
Пераходзім да наступнай магчымасці ML у Elastic Stack - аналізу некалькіх метрык адным пачкам. Але гэта не значыць, што будзе аналізавацца залежнасць адной метрыкі ад іншай. Гэта тое ж самае, што і Single Metric толькі з мноствам метрык на адным экране для зручнасці параўнання ўплыву аднаго на іншае. Пра аналіз залежнасці адной метрыкі ад іншай раскажам у частцы Population.
Пасля націску на квадрат з Multi Metric з'явіцца акно з наладамі. На іх спынімся падрабязней.
Для пачатку трэба абраць палі для аналізу і агрэгацыю дадзеных па іх. Варыянты агрэгацыі тут тыя ж, што і для Single Metric (Max, Hign Mean, Low, Mean, Distinct і іншыя). Далей дадзеныя пры жаданні разбіваюцца па адным з палёў (поле Split Data). У прыкладзе мы гэта зрабілі па полі OriginAirportID. Звярніце ўвагу, што графік метрык справа зараз прадстаўлены ў выглядзе мноства графікаў.
Поле Key Fields (Influencers) напрамую ўплывае на знойдзеныя анамаліі. Па змаўчанні тут заўсёды будзе хаця б адно значэнне, а вы можаце дадаць дадатковыя. Алгарытм будзе ўлічваць уплыў гэтых палёў пры аналізе і паказваць самыя "ўплывовыя" значэнні.
Пасля запуску ў інтэрфейсе Kibana з'явіцца прыкладна такая карціна.
Гэта т.зв. цеплавая карта анамалій па кожным значэнні поля OriginAirportID, якое мы ўказалі ў Split Data. Як і ў выпадку з Single Metric, колер абазначае ўзровень анамальнага адхіленні. Падобны аналіз зручна рабіць, напрыклад, па працоўных станцыях для адсочвання тых, дзе падазрона шмат аўтарызацый і г.д. Мы ўжо пісалі
Пад цеплавой картай спіс анамалій, з кожнага можна перайсці на прадстаўленне Single Metric для дэталёвага аналізу.
Насельніцтва
Каб шукаць анамаліі сярод карэляцый паміж рознымі метрыкамі ў Elastic Stack ёсць спецыялізаваны Population-аналіз. Менавіта з дапамогай яго можна пашукаць анамальныя значэнні ў прадукцыйнасці які-небудзь сервера ў параўнанні з астатнімі пры, напрыклад, павелічэнні колькасці запытаў да мэтавай сістэмы.
На гэтай ілюстрацыі ў полі Population пазначана значэнне, да якога будуць ставіцца аналізаваныя метрыкі. У дадзеным гэтае імя працэсу. У выніку мы ўбачым як загрузка працэсара кожным з працэсаў уплывала сябар на сябра.
Звярніце ўвагу, што графік аналізаваных дадзеных адрозніваецца ад выпадкаў з Single Metric і Multi Metric. Гэта зроблена ў Kibana by design для палепшанага ўспрымання размеркавання значэнняў аналізуемых дадзеных.
З графіка відаць, што анамальна паводзіў сябе працэс стрэс (дарэчы сказаць, спароджаны спецыяльнай утылітай) на серверы поіпу, які паўплываў (ці аказаўся інфлюэнсерам) на ўзнікненне гэтай анамаліі.
прасунуты
Аналітыка з тонкай наладай. Пры Advanced аналізе ў Kibana з'яўляюцца дадатковыя наладкі. Пасля націску ў меню стварэння на плітку Advanced з'яўляецца вось такое акно з укладкамі. Укладку апісанне працы прапусцілі наўмысна, тамака базавыя налады не якія адносяцца непасрэдна да налады аналізу.
В summary_count_field_name апцыянальна можна пазначыць назву поля з дакументаў, які змяшчае агрэгаваныя значэнні. У гэтым прыкладзе - колькасць падзей у хвіліну. У
Тут дадатковы блок налад для налады дэтэктара анамалій пад пэўную задачу. Канкрэтныя кейсы выкарыстання (асабліва па бяспецы) мы плануем разабраць у наступных артыкулах. Для прыкладу,
У полі функцыя можна абраць пэўную функцыю для пошуку анамалій. Акрамя рэдкі, ёсць яшчэ пара цікавых функцый
В імя_поля указваецца поле дакумента, па якім будзе весціся аналіз. By_field_name можа выкарыстоўвацца для падзелу вынікаў аналізу па кожным асобным значэнні ўказанага тут поля дакумента. Калі запоўніць over_field_name атрымаецца population-аналіз, які мы разглядалі вышэй. Калі пазначыць значэнне ў partition_field_name, то па гэтым полі дакумента будуць разлічвацца асобныя базавыя лініі для кожнага значэння (у ролі значэння могуць выступаць, напрыклад, назоў сервера або працэсу на серверы). У exclude_frequent можна абраць усё або ніхто, Што будзе азначаць выключэнне (або ўключэнне) часта сустракаемых значэнняў палёў дакументаў.
У артыкуле мы паспрабавалі максімальна сціснута даць уяўленне аб магчымасцях машыннага навучання ў Elastic Stack, за кадрам засталося яшчэ нямала падрабязнасьцяў. Раскажыце ў каментарах якія кейсы ўдалося вырашыць пры дапамозе Elastic Stack і для якіх задач вы яго карыстаецеся. Для сувязі з намі можна выкарыстоўваць асабістыя паведамленні на Хабры або
Крыніца: habr.com