Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

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

Што ж рабіць? Тут нам на дапамогу сьпяшаецца штучны інтэлект. Гаворка ў артыкуле пойдзе пра прэдыктыўнае абслугоўванне (predictive maintenance). Гэты падыход актыўна набірае папулярнасць. Напісана вялікая колькасць артыкулаў, у тым ліку і на Хабры. Буйныя кампаніі на ўсю моц выкарыстоўваюць такі падыход для падтрымкі працаздольнасці сваіх сервераў. Вывучыўшы вялікую колькасць артыкулаў, мы вырашылі паспрабаваць ужыць гэты падыход. Што з гэтага выйшла?

Увядзенне

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

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

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 1. Інтэрфейс для маніторынгу grafana

Метрыкі - гэта розныя паказчыкі праграмнай сістэмы, асяроддзя яе выканання або фізічнай вылічальнай машыны, пад якой запушчана сістэма з пазнакай часу, таго моманту, калі метрыкі былі атрыманы. У статычным аналізе дадзеныя метрык называюцца часовымі радамі. Для назірання за станам праграмнай сістэмы метрыкі адлюстроўваюць у выглядзе графікаў: па восі X - час, а па восі Y - значэння (малюнак 1). З працуючай праграмнай сістэмы можа здымацца некалькі тысяч метрык (з кожнага вузла). Яны ўтвараюць прастору метрык (шматмерных часавых шэрагаў).

Бо ў складаных праграмных сістэм здымаецца вялікая колькасць метрык, ручны маніторынг становіцца складанай задачай. Для скарачэння аб'ёму аналізаваных адміністратарам дадзеных сродкі маніторынгу ўтрымоўваюць прылады для аўтаматычнага выяўлення магчымых праблем. Напрыклад, можна наладзіць трыгер, які спрацоўвае ў выпадку памяншэння вольнай дыскавай прасторы да паказанага парога. Таксама можна аўтаматычна дыягнаставаць прыпынак сервера або крытычнае запаволенне хуткасці абслугоўвання. На практыцы сродкі маніторынгу нядрэнна спраўляюцца з выяўленнем ужо адбыліся адмоў або выяўленнем простых сімптомаў будучых адмоваў, але ў цэлым прадказанне магчымага збою застаецца для іх моцным арэшкам. Прадказанне ж шляхам ручнога аналізу метрык патрабуе прыцягнення кваліфікаваных спецыялістаў. Яно нізкапрадуктыўнае. Большасць патэнцыйных адмоў могуць застацца незаўважанымі.

У апошні час сярод буйных IT-кампаній па распрацоўцы ПЗ усё большую папулярнасць набывае менавіта так званае прэдыктыўнае абслугоўванне праграмных сістэм. Сутнасць дадзенага падыходу заключаецца ў знаходжанні непаладак, якія вядуць да дэградацыі сістэмы на ранніх этапах, да яе адмовы з выкарыстаннем штучнага інтэлекту. Гэты падыход не выключае поўнасцю ручны маніторынг сістэмы. Ён з'яўляецца дапаможным для працэсу маніторынгу ў цэлым.

Асноўнай прыладай рэалізацыі прэдыктыўнага абслугоўвання з'яўляецца задача пошуку анамалій у часавых шэрагах, бо пры ўзнікненні анамаліі у дадзеных вялікая верагоднасць таго, што праз некаторы час паўстане збой ці адмова. Анамалія - ​​гэта некаторае адхіленне паказчыкаў праграмнай сістэмы, такое як выяўленне дэградацыі хуткасці выканання запыту аднаго віду або зніжэнне сярэдняй колькасці абслугоўваных зваротаў пры пастаянным узроўні кліенцкіх сесій.

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

Метады пошуку анамалій пры прагназаванні адмоў праграмных сістэм

Перш за ўсё варта сказаць, што ідэя прагназавання адмоваў была навеяная артыкулам. "Машыннае навучанне ў IT-маніторынгу". Для праверкі эфектыўнасці падыходу з аўтаматычным пошукам анамалій была абрана праграмная сістэма "Web-Кансалідацыя", якая з'яўляецца адным з праектаў кампаніі НВА "Крышта". Для яе раней праводзіўся ручны маніторынг па атрымоўваных метрыках. Бо сістэма досыць складаная, для яе здымаецца вялікая колькасць метрык: паказчыкі JVM (загрузка зборшчыка смецця), паказчыкі АС, пад якой выконваецца код (віртуальная памяць, % загрузкі ЦПУ вос), паказчыкі сеткі (загрузка сеткі), самога сервера (загрузка ЦПУ , памяці), метрыкі wildfly і ўласныя метрыкі прыкладання па ўсіх крытычным падсістэмах.

Усе метрыкі здымаюцца з сістэмы пры дапамозе graphite. Першапачаткова выкарыстоўвалася база whisper як стандартнае рашэнне для grafana, але з ростам кліенцкай базы graphite перастаў спраўляцца, вычарпаўшы прапускную здольнасць дыскавай падсістэмы ДЦ. Пасля гэтага было прынятае рашэнне аб пошуку больш эфектыўнага рашэння. Выбар быў зроблены на карысць graphite+clickhouse, што дазволіла на парадак паменшыць нагрузку на дыскавую падсістэму і ў пяць-шэсць разоў паменшыць займаны дыскавы аб'ём. Ніжэй прадстаўлена схема механізму збору метрык з выкарыстаннем graphite+clickhouse (малюнак 2).

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 2. Схема зняцця метрык

Схема ўзята з унутранай дакументацыі. На ёй паказаны абмен дадзенымі паміж grafana (карыстальніцкі інтэрфейс для маніторынгу, які мы выкарыстоўваем) і graphite. Зняцце метрык з прыкладання вырабляе асобны софт - jmxtrans. Ён жа складае іх у graphite.
У сістэмы «Web-Кансалідацыя» ёсць шэраг асаблівасцяў, якія ствараюць праблемы для прагназавання адмоваў:

  1. часта адбываецца змена трэнду. Для гэтай праграмнай сістэмы выходзяць розныя версіі. Кожная з іх нясе змены ў праграмнай частцы сістэмы. Адпаведна, такім чынам распрацоўнікі напроста ўздзейнічаюць на метрыкі дадзенай сістэмы і могуць выклікаць змену трэнду;
  2. асаблівасць рэалізацыі, а таксама мэты выкарыстання кліентамі дадзенай сістэмы часта заклікаюць анамаліі без папярэдняй дэградацыі;
  3. працэнт анамалій адносна ўсяго набору дадзеных малы (< 5%);
  4. могуць узнікаць парывы ​​ў атрыманні паказчыкаў ад сістэмы. У некаторыя кароткія прамежкі часу сістэме маніторынгу не ўдаецца атрымаць метрыкі. Напрыклад, калі сервер перагружаны. Для навучання нейрасеткі гэта крытычна. Узнікае неабходнасць запаўняць прабелы сінтэтычна;
  5. Выпадкі з анамаліямі часта бываюць актуальныя толькі для канкрэтнага ліку/месяца/часу (сезоннасць). Дадзеная сістэма мае дакладны рэгламент выкарыстання яе карыстальнікамі. Адпаведна, метрыкі актуальныя толькі для канкрэтнага часу. Сістэма можа выкарыстоўвацца не ўвесь час, а толькі ў некаторыя месяцы: выбарачна ў залежнасці ад года. Узнікаюць сітуацыі, калі адны і тыя ж паводзіны метрык у адным выпадку могуць весці да адмовы праграмнай сістэмы, а ў іншым няма.
    Для пачатку былі прааналізаваны метады выяўлення анамалій у дадзеных маніторынгу праграмных сістэм. У артыкулах па гэтай тэматыцы пры малых працэнтах анамалій адносна астатняга набору дадзеных часцей за ўсё прапануецца выкарыстоўваць нейронавыя сеткі.

Асноўная логіка для пошуку анамалій пры дапамозе дадзеных нейронавых сетак намалявана на малюнку 3:

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 3. Пошук анамалій пры дапамозе нейрасеткі

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

  1. для карэктнай працы ў струменевым рэжыме дадзеныя для навучання мадэляў нейронавых сетак павінны ўключаць у сябе толькі "нармальныя" дадзеныя;
  2. неабходна мець актуальную мадэль для карэктнага выяўлення. Змена трэнду і сезоннасці ў метрыках могуць выклікаць вялікую колькасць ілжывых спрацоўванняў мадэлі. Для яе абнаўлення неабходна дакладна вызначыць час, калі мадэль з'яўляецца састарэлай. Калі абнавіць мадэль пазней ці раней, то, верагодней за ўсё, рушыць услед вялікая колькасць ілжывых спрацоўванняў.
    Таксама нельга забываць аб пошуку і прадухіленні частага ўзнікнення ілжывых спрацоўванняў. Мяркуецца, што яны будуць часцей за ўсё ўзнікаць у няштатных сітуацыях. Аднак яны могуць быць і следствам памылкі нейронавай сеткі з прычыны недастатковасці яе навучання. Неабходна мінімізаваць колькасць ілжывых спрацоўванняў мадэлі. У адваротным выпадку ілжывыя прагнозы будуць марнаваць шмат часу адміністратара, прызначанага для праверкі сістэмы. Рана ці позна скончыцца тым, што адміністратар проста перастане рэагаваць на "паранаідальную" сістэму маніторынгу.

Рэкурэнтная нейронавая сетка

Для выяўлення анамалій у часавых шэрагах можна ўжыць рэкурэнтную нейронавую сетку з памяццю LSTM. Праблема ёсць толькі ў тым, што яна можа прымяняцца толькі для прагназуемых часовых шэрагаў. У нашым выпадку не ўсе метрыкі з'яўляюцца прагназуемымі. Спроба прымяніць RNN LSTM для часавага шэрагу прадстаўлена на малюнку 4.

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 4. Прыклад працы рэкурэнтнай нейронавай сеткі c вочкамі памяці LSTM

Як відаць з малюнка 4, RNN LSTM атрымалася зладзіцца з пошукам анамаліі на дадзеным участку часу. Тамака, дзе вынік мае высокую памылку прагназавання (mean error), сапраўды адбылася анамалія па паказчыках. Выкарыстанні адной RNN LSTM відавочна будзе нядосыць, паколькі яна дастасавальная да малой колькасці метрык. Можна выкарыстоўваць як дапаможны метад пошуку анамалій.

Аўтакадавальнік для прагназавання адмоваў

Аўтакадавальнік - па сутнасці штучная нейронавая сетка. Уваходны пласт - encoder, выходны пласт - decoder. Недахоп усіх нейросетей дадзенага тыпу - дрэнна лакалізуе анамаліі. Была выбрана архітэктура сінхроннага аўтакадзіроўшчыка.

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 5. Прыклад працы аўтакадзіроўшчыка

Аўтакадавальнікі навучаюцца на нармальных дадзеных і затым знаходзяць, што-то анамальнае ў падаюцца ў мадэль дадзеных. Якраз тое, што неабходна для гэтай задачы. Застаецца толькі абраць, які з автокодировщиков падыдзе для дадзенай задачы. Архітэктурна найпростая форма аўтакадавальніка ўяўляе сабой прамую, незваротную нейронавую сетку, якая вельмі падобная на шматслаёвы персептрон (multilayer perceptron, MLP), з уваходным узроўнем, узроўнем выхаду і адным ці некалькімі ўтоенымі пластамі, якія злучаюць іх.
Аднак адрозненні паміж автокодировщиками і MLP складаюцца ў тым, што ў аўтаматычным кадавальніку выходны ўзровень мае такую ​​ж колькасць вузлоў, што і ўваходны, і што замест таго, каб навучацца прадказанню мэтавага значэння Y, зададзенаму ўваходам X, автокодировщик навучаецца рэканструяваць свае ўласныя X. Таму автокадавальнікі з'яўляюцца некантралюемымі навучальнымі мадэлямі.

Задача автокодировщика складаецца ў знаходжанні часавых азначнікаў r0 … rn, якія адпавядаюць анамальным элементам ва ўваходным вектары X. Дадзены эфект дасягаецца за рахунак пошуку квадратычнай памылкі.

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 6. Сінхронны аўтакадавальнік

Для аўтакадзіроўшчыка была абрана сінхронная архітэктура. Яе перавагі: магчымасць выкарыстання струменевага рэжыму апрацоўкі і параўнальна меншая колькасць параметраў нейронавай сеткі адносна іншых архітэктур.

Механізм мінімізацыі ілжывых спрацоўванняў

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

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

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

У выніку на аснове вышэйапісаных метадаў нейронавых сетак была пабудавана эксперыментальная праграма для прагназавання адмоваў сістэмы "Web-Кансалідацыя". Мэтай гэтай праграмы было, выкарыстоўваючы існуючы архіў дадзеных маніторынгу і інфармацыю аб ужо збоях, ацаніць кампетэнтнасць дадзенага падыходу для нашых праграмных сістэм. Схема работы праграмы паказана ніжэй, на рысунку 7.

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 7. Схема прагназавання адмоваў на аснове аналізу прасторы метрык

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

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 8. Інтэрфейс эксперыментальнай сістэмы маніторынгу

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

Прыклад выяўлення анамаліі па паказчыках ЦПУ пры дапамозе нейрасеткі RNN LSTM (малюнак 9).

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 9. Выяўленне RNN LSTM

Даволі просты выпадак, у сутнасці звычайны выкід, аднак які прыводзіць да адмовы сістэмы, быў паспяхова вылічаны пры дапамозе RNN LSTM. Паказчык анамальнасці ў гэтым участку часу роўны 85 - 95%, усё, што вышэй за 80% (парог вызначаны эксперыментальна), лічыцца анамаліяй.
Прыклад выяўлення анамаліі, калі сістэма не змагла загрузіцца пасля абнаўлення. Дадзеную сітуацыю дэтэктуе автокодировщик (малюнак 10).

Шукаем анамаліі і прадказваем збоі з дапамогай нейросетей

Малюнак 10. Прыклад выяўлення аўтакадзіроўшчыкам

Як відаць з малюнка, PermGen завіс на адным узроўні. Аўтакадавальнік палічыў гэта дзіўным, таму што раней не бачыў нічога падобнага. Тут анамальнасць трымаецца ўсе 100 працэнтаў да вяртання сістэмы ў працаздольны стан. Анамальнасць адлюстроўваецца па ўсіх метрыках. Як гаварылася раней, аўтакадзіроўшчык не ўмее лакалізаваць анамаліі. Аператар закліканы выконваць гэтую функцыю ў дадзеных сітуацыях.

Заключэнне

ПК «Web-Кансалідацыя» распрацоўваецца не першы год. Сістэма знаходзіцца ў дастаткова стабільным стане, і колькасць рэгіструемых інцыдэнтаў невяліка. Тым не менш, удалося знайсці анамаліі, якія вядуць да адмовы за 5 - 10 хвілін да ўзнікнення адмовы. У шэрагу выпадкаў апавяшчэнне аб адмове загадзя дапамагло б зэканоміць рэгламентны час, якое выдзяляецца на правядзенне "рамонтных" работ.

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

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

Выказваю падзяку калегам, якія дапамагалі мне з напісаннем і падтрымкай актуальнасці гэтага артыкула: Віктару Вярбіцкаму і Сяргею Фінагенаву.

Крыніца: habr.com

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