Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Бағдарламалық жүйелердің өнеркәсіптік дамуы соңғы өнімнің ақауларға төзімділігіне үлкен назар аударуды, сондай-ақ олар орын алған жағдайда ақаулар мен ақауларға жылдам әрекет етуді талап етеді. Бақылау, әрине, сәтсіздіктер мен сәтсіздіктерге тиімдірек және жылдам жауап беруге көмектеседі, бірақ жеткіліксіз. Біріншіден, серверлердің үлкен санын қадағалау өте қиын - көп адам қажет. Екіншіден, оның күйін болжау үшін қолданбаның қалай жұмыс істейтінін жақсы түсіну керек. Сондықтан біз жасап жатқан жүйелерді, олардың өнімділігі мен мүмкіндіктерін жақсы түсінетін адамдар көп қажет. Мұны істеуге дайын адамдар жеткілікті болса да, оларды оқыту үшін әлі де көп уақыт қажет делік.

Енді не істеу керек? Міне, жасанды интеллект бізге көмекке келеді. Мақалада сөз болады болжамды техникалық қызмет көрсету (болжамдық қызмет көрсету). Бұл тәсіл белсенді түрде танымал болуда. Көптеген мақалалар жазылды, соның ішінде Хабре туралы. Ірі компаниялар өз серверлерінің өнімділігін сақтау үшін осы тәсілді толық пайдаланады. Көптеген мақалаларды зерттегеннен кейін біз осы әдісті қолданып көруді шештік. Одан не шықты?

Кіріспе

Әзірленген бағдарламалық жүйе ерте ме, кеш пе іске қосылады. Пайдаланушы үшін жүйенің ақаусыз жұмыс істеуі маңызды. Төтенше жағдай орын алса, оны ең аз кідіріспен шешу керек.

Бағдарламалық қамтамасыз ету жүйесін техникалық қолдауды жеңілдету үшін, әсіресе серверлер көп болса, әдетте іске қосылған бағдарламалық жүйеден көрсеткіштерді алатын, оның жағдайын диагностикалауға мүмкіндік беретін және ақаулықтың нақты неден туындағанын анықтауға көмектесетін бақылау бағдарламалары пайдаланылады. Бұл процесс бағдарламалық жүйенің мониторингі деп аталады.

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 1. Grafana бақылау интерфейсі

Көрсеткіштер бағдарламалық жасақтама жүйесінің, оның орындалу ортасының немесе метриканы алған кездегі уақыт белгісі бар жүйе жұмыс істеп тұрған физикалық компьютердің әртүрлі көрсеткіштері болып табылады. Статикалық талдауда бұл көрсеткіштер уақыттық қатарлар деп аталады. Бағдарламалық жүйенің күйін бақылау үшін көрсеткіштер графиктер түрінде көрсетіледі: уақыт X осінде, ал мәндер Y осінің бойында (1-сурет). Жұмыс істеп тұрған бағдарламалық құрал жүйесінен (әр түйіннен) бірнеше мың көрсеткіштерді алуға болады. Олар метрика кеңістігін құрайды (көп өлшемді уақыт қатары).

Күрделі бағдарламалық жүйелер үшін метриканың үлкен саны жиналғандықтан, қолмен бақылау қиын міндетке айналады. Әкімші талдайтын деректер көлемін азайту үшін бақылау құралдары ықтимал ақауларды автоматты түрде анықтауға арналған құралдарды қамтиды. Мысалы, бос дискілік кеңістік белгіленген шекті мәннен төмен түскенде іске қосу үшін триггерді теңшей аласыз. Сондай-ақ сервердің жабылуын немесе қызмет көрсету жылдамдығының күрт төмендеуін автоматты түрде диагностикалауға болады. Іс жүзінде бақылау құралдары бұрыннан орын алған сәтсіздіктерді анықтауда немесе болашақ сәтсіздіктердің қарапайым белгілерін анықтауда жақсы жұмыс істейді, бірақ тұтастай алғанда ықтимал сәтсіздікті болжау олар үшін қиын жаңғақ болып қала береді. Метрикаларды қолмен талдау арқылы болжау білікті мамандарды тартуды талап етеді. Бұл өнімділігі төмен. Ықтимал сәтсіздіктердің көпшілігі байқалмай қалуы мүмкін.

Жақында бағдарламалық қамтамасыз ету жүйесіне болжамды қызмет көрсету деп аталатын ірі АТ бағдарламалық қамтамасыз етуді әзірлеуші ​​компаниялар арасында танымал бола бастады. Бұл тәсілдің мәні жасанды интеллект арқылы жүйенің деградациясына әкелетін проблемаларды ол сәтсіздікке ұшырамас бұрын ерте кезеңде табу болып табылады. Бұл тәсіл жүйені қолмен бақылауды толығымен жоққа шығармайды. Ол жалпы бақылау процесіне көмекші болып табылады.

Болжамдық қызмет көрсетуді жүзеге асырудың негізгі құралы уақыттық қатарлардағы ауытқуларды іздеу міндеті болып табылады, өйткені аномалия пайда болған кезде деректерде біраз уақыттан кейін ықтималдығы жоғары сәтсіздік немесе сәтсіздік болады. Аномалия - бұл сұраныстың бір түрінің орындалу жылдамдығының нашарлауын анықтау немесе клиент сеанстарының тұрақты деңгейінде қызмет көрсетілетін сұраулардың орташа санының төмендеуі сияқты бағдарламалық жүйе жұмысының белгілі бір ауытқуы.

Бағдарламалық жүйелер үшін аномалияларды іздеу тапсырмасының өзіндік ерекшеліктері бар. Теориялық тұрғыдан әрбір бағдарламалық қамтамасыз ету жүйесі үшін қолданыстағы әдістерді әзірлеу немесе нақтылау қажет, өйткені аномалияларды іздеу ол орындалатын деректерге өте тәуелді, ал бағдарламалық жүйелердің деректері жүйені енгізу құралдарына байланысты айтарлықтай өзгереді. , қай компьютерде жұмыс істейтініне дейін.

Бағдарламалық жүйелердің ақауларын болжау кезінде ауытқуларды іздеу әдістері

Ең алдымен, сәтсіздіктерді болжау идеясы мақаладан шабыт алғанын айту керек «АТ мониторингіндегі машинаны оқыту». Аномалияларды автоматты түрде іздеу әдісінің тиімділігін тексеру үшін NPO Krista компаниясының жобаларының бірі болып табылатын Web-Consolidation бағдарламалық қамтамасыз ету жүйесі таңдалды. Бұған дейін алынған көрсеткіштер негізінде оған қолмен бақылау жүргізілетін. Жүйе өте күрделі болғандықтан, ол үшін көптеген көрсеткіштер алынады: JVM индикаторлары (қоқыс жинаушы жүктеме), код орындалатын ОЖ көрсеткіштері (виртуалды жад, ОС CPU жүктемесі), желі көрсеткіштері (желі жүктемесі). ), сервердің өзі (CPU жүктемесі , жад), wildfly көрсеткіштері және барлық маңызды ішкі жүйелер үшін қолданбаның жеке көрсеткіштері.

Барлық көрсеткіштер графит көмегімен жүйеден алынады. Бастапқыда сыбырлау деректер базасы графана үшін стандартты шешім ретінде пайдаланылды, бірақ клиенттік база өскен сайын графит тұрақты ток дискінің ішкі жүйесінің сыйымдылығын таусылғандықтан, бұдан былай жеңе алмады. Осыдан кейін тиімдірек шешім табу туралы шешім қабылданды. Таңдау пайдасына жасалды графит+кликхаус, бұл дискінің ішкі жүйесіндегі жүктемені шама бойынша азайтуға және дискілік кеңістікті бес-алты есе азайтуға мүмкіндік берді. Төменде графит+кликхаус көмегімен метриканы жинау механизмінің диаграммасы берілген (2-сурет).

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 2. Метрикаларды жинау схемасы

Диаграмма ішкі құжаттамадан алынған. Ол графана (біз қолданатын UI мониторингі) мен графит арасындағы байланысты көрсетеді. Қолданбадан көрсеткіштерді жою бөлек бағдарламалық құрал арқылы орындалады - jmxtrans. Ол оларды графитке салады.
Web Consolidation жүйесінде сәтсіздіктерді болжауға қиындықтар тудыратын бірқатар мүмкіндіктер бар:

  1. Тренд жиі өзгереді. Бұл бағдарламалық жүйе үшін әртүрлі нұсқалар қол жетімді. Олардың әрқайсысы жүйенің бағдарламалық бөлігіне өзгерістер әкеледі. Тиісінше, осылайша әзірлеушілер берілген жүйенің көрсеткіштеріне тікелей әсер етеді және трендтің өзгеруіне себеп болуы мүмкін;
  2. іске асыру мүмкіндігі, сондай-ақ клиенттердің осы жүйені пайдалану мақсаттары жиі бұрынғы деградациясыз ауытқуларды тудырады;
  3. барлық деректер жиынына қатысты ауытқулардың пайызы аз (< 5%);
  4. Жүйеден көрсеткіштерді алуда олқылықтар болуы мүмкін. Кейбір қысқа мерзімдерде бақылау жүйесі метриканы ала алмайды. Мысалы, егер сервер шамадан тыс жүктелсе. Бұл нейрондық желіні оқыту үшін өте маңызды. Бос орындарды синтетикалық жолмен толтыру қажеттілігі туындайды;
  5. Аномалиялары бар жағдайлар көбінесе белгілі бір күнге/айға/уақытқа (маусымдық) қатысты болады. Бұл жүйеде пайдаланушылар оны пайдаланудың нақты ережелері бар. Сәйкесінше, көрсеткіштер белгілі бір уақытқа ғана қатысты. Жүйені үнемі пайдалану мүмкін емес, бірақ бірнеше айларда ғана: жылға байланысты таңдамалы түрде. Жағдайлар бір жағдайда метриканың бірдей әрекеті бағдарламалық жасақтама жүйесінің істен шығуына әкелуі мүмкін, бірақ басқа жағдайда болмайды.
    Алдымен бағдарламалық жүйелердің мониторинг деректеріндегі ауытқуларды анықтау әдістері талданды. Осы тақырыптағы мақалаларда ауытқулардың пайызы деректер жиынтығының қалған бөлігімен салыстырғанда аз болған кезде, көбінесе нейрондық желілерді пайдалану ұсынылады.

Нейрондық желі деректерін пайдаланып аномалияларды іздеудің негізгі логикасы 3-суретте көрсетілген:

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 3. Нейрондық желінің көмегімен аномалияларды іздеу

Көрсеткіштердің ағымдағы ағынының терезесін болжау немесе қалпына келтіру нәтижесі негізінде іске қосылған бағдарламалық жүйеден алынғаннан ауытқу есептеледі. Бағдарламалық қамтамасыз ету жүйесі мен нейрондық желіден алынған метриканың арасында үлкен айырмашылық болса, ағымдағы деректер сегменті аномальді деп қорытынды жасауға болады. Нейрондық желілерді пайдалану кезінде келесі мәселелер қатары туындайды:

  1. ағындық режимде дұрыс жұмыс істеу үшін нейрондық желі модельдерін оқытуға арналған деректер тек «қалыпты» деректерді қамтуы керек;
  2. дұрыс анықтау үшін заманауи үлгінің болуы қажет. Көрсеткіштердегі трендтерді және маусымдықты өзгерту үлгідегі жалған позитивтердің көп санын тудыруы мүмкін. Оны жаңарту үшін модельдің ескірген уақытын нақты анықтау қажет. Егер сіз модельді кейінірек немесе ертерек жаңартсаңыз, онда, ең алдымен, жалған позитивтердің көп саны пайда болады.
    Сондай-ақ жалған позитивтердің жиі пайда болуын іздеу және алдын алу туралы ұмытпау керек. Олар көбінесе төтенше жағдайларда болады деп болжануда. Дегенмен, олар жеткіліксіз дайындыққа байланысты нейрондық желі қатесінің салдары болуы мүмкін. Модельдің жалған позитивтерінің санын азайту қажет. Әйтпесе, жалған болжамдар жүйені тексеруге арналған әкімшінің көп уақытын ысырап етеді. Ерте ме, кеш пе, әкімші «параноидты» бақылау жүйесіне жауап беруді тоқтатады.

Қайталанатын нейрондық желі

Уақыт қатарындағы ауытқуларды анықтау үшін пайдалануға болады қайталанатын нейрондық желі LSTM жадымен. Жалғыз мәселе - оны тек болжамды уақыт қатарлары үшін пайдалануға болады. Біздің жағдайда барлық көрсеткіштерді болжауға болмайды. RNN LSTM уақыттық қатарға қолдану әрекеті 4-суретте көрсетілген.

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 4. LSTM жады ұяшықтары бар қайталанатын нейрондық желінің мысалы

4-суреттен көрініп тұрғандай, RNN LSTM осы уақыт аралығында аномалияларды іздеуді жеңе алды. Нәтижеде болжау қателігі жоғары болса (орташа қате), көрсеткіштерде аномалия іс жүзінде орын алды. Жалғыз RNN LSTM пайдалану жеткіліксіз болатыны анық, себебі ол көрсеткіштердің аз санына қолданылады. Аномалияларды іздеуде көмекші әдіс ретінде пайдалануға болады.

Сәтсіздікті болжау үшін автокодер

Автокодер – негізінен жасанды нейрондық желі. Кіріс деңгейі - кодтаушы, шығыс қабаты - дешифратор. Осы типтегі барлық нейрондық желілердің кемшілігі - олар аномалияларды жақсы локализацияламайды. Синхронды автокодер архитектурасы таңдалды.

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 5. Автокодер жұмысының мысалы

Автокодерлер қалыпты деректер бойынша оқытылады, содан кейін үлгіге берілген деректерде аномальды нәрсені табады. Бұл тапсырма үшін сізге қажет нәрсе. Бұл тапсырма үшін қай автокодер қолайлы екенін таңдау ғана қалады. Автокодердің архитектуралық ең қарапайым түрі - алға, қайтымсыз нейрондық желі, ол келесіге өте ұқсас. көпқабатты перцептрон (көпқабатты перцептрон, MLP), кіріс қабаты, шығыс қабаты және оларды байланыстыратын бір немесе бірнеше жасырын қабаттар.
Дегенмен, автокодерлер мен MLP арасындағы айырмашылықтар мынада: автокодердегі шығыс қабаттың кіріс деңгейімен бірдей түйіндер саны бар және X кірісі арқылы берілген мақсатты Y мәнін болжауға үйретілудің орнына, автокодер оқытылады. өзінің X-ті қайта құру үшін. Сондықтан, автокодерлер бақылаусыз оқыту үлгілері болып табылады.

Автокодердің міндеті X кіріс векторындағы аномальды элементтерге сәйкес r0 ... rn уақыт индекстерін табу болып табылады. Бұл әсер квадраттық қатені іздеу арқылы жүзеге асырылады.

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 6. Синхронды автокодер

Автокодер үшін таңдалды синхронды архитектура. Оның артықшылықтары: ағынды өңдеу режимін пайдалану мүмкіндігі және басқа архитектуралармен салыстырғанда нейрондық желі параметрлерінің салыстырмалы түрде аз саны.

Жалған позитивтерді азайту механизмі

Әртүрлі қалыптан тыс жағдайлардың туындауына, сондай-ақ нейрондық желіні жеткіліксіз оқытудың ықтимал жағдайына байланысты әзірленіп жатқан аномалияларды анықтау моделі үшін жалған позитивтерді барынша азайту механизмін әзірлеу қажет деп шешілді. Бұл механизм әкімші жіктеген үлгі базасына негізделген.

Динамикалық уақыт шкаласын түрлендіру алгоритмі (DTW алгоритмі, ағылшын тіліндегі динамикалық уақытты өзгертуден алынған) уақыт қатарлары арасындағы оңтайлы сәйкестікті табуға мүмкіндік береді. Алғаш рет сөйлеуді тануда қолданылған: екі сөйлеу сигналының бірдей бастапқы ауызша сөйлемді қалай көрсететінін анықтау үшін қолданылады. Кейіннен оған басқа салаларда өтінім табылды.

Жалған позитивтерді азайтудың негізгі принципі нейрондық желілер арқылы анықталған күдікті жағдайларды жіктейтін оператордың көмегімен стандарттар деректер базасын жинау болып табылады. Әрі қарай, жіктелген стандарт жүйе анықтаған жағдаймен салыстырылады және жағдайдың жалған екендігі немесе ақаулыққа әкелетіні туралы қорытынды жасалады. DTW алгоритмі екі уақыт қатарын салыстыру үшін дәл қолданылады. Минимизациялаудың негізгі құралы әлі де классификация болып табылады. Көптеген анықтамалық істерді жинағаннан кейін жүйе көптеген жағдайлардың ұқсастығына және ұқсас жағдайлардың пайда болуына байланысты оператордан аз сұрай бастайды деп күтілуде.

Нәтижесінде, жоғарыда сипатталған нейрондық желі әдістеріне сүйене отырып, «Web-Consolidation» жүйесінің сәтсіздіктерін болжау үшін эксперименталды бағдарлама құрылды. Бұл бағдарламаның мақсаты мониторинг деректерінің бар мұрағатын және бұрынғы сәтсіздіктер туралы ақпаратты пайдалана отырып, біздің бағдарламалық жүйелер үшін осы тәсілдің құзыреттілігін бағалау болды. Бағдарламаның схемасы төменде 7-суретте көрсетілген.

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 7. Метрикалық кеңістік талдауына негізделген сәтсіздікті болжау схемасы

Диаграммада екі негізгі блокты бөліп көрсетуге болады: мониторинг деректерінің ағынында (метрика) аномальді уақыт кезеңдерін іздеу және жалған позитивтерді азайту механизмі. Ескертпе: Эксперименттік мақсаттар үшін деректер графит оны сақтайтын дерекқордан JDBC қосылымы арқылы алынады.
Төменде әзірлеу нәтижесінде алынған мониторинг жүйесінің интерфейсі берілген (8-сурет).

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 8. Эксперименттік бақылау жүйесінің интерфейсі

Интерфейс алынған көрсеткіштерге негізделген аномалия пайызын көрсетеді. Біздің жағдайда түбіртек имитацияланады. Бізде бірнеше апта бойы барлық деректер бар және сәтсіздікке әкелетін аномалия жағдайын тексеру үшін оны біртіндеп жүктеп жатырмыз. Төменгі күй жолағы берілген уақыттағы деректер аномалиясының жалпы пайызын көрсетеді, ол автокодер көмегімен анықталады. Сондай-ақ, RNN LSTM арқылы есептелетін болжамды көрсеткіштер үшін бөлек пайыз көрсетіледі.

RNN LSTM нейрондық желісін пайдалану арқылы CPU өнімділігіне негізделген аномалияны анықтау мысалы (9-сурет).

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 9. RNN LSTM ашылуы

RNN LSTM көмегімен өте қарапайым жағдай, шын мәнінде кәдімгі шектен шыққан, бірақ жүйенің сәтсіздігіне әкелетін жағдай сәтті есептелді. Бұл уақыт кезеңіндегі аномалия көрсеткіші 85–95% құрайды, 80% жоғары (шегі эксперименталды түрде анықталған) барлығы аномалия болып саналады.
Жүйе жаңартудан кейін жүктеле алмаған кезде аномалияны анықтау мысалы. Бұл жағдайды автокодер анықтайды (10-сурет).

Біз нейрондық желілерді пайдалана отырып, ауытқуларды іздейміз және сәтсіздіктерді болжаймыз

Сурет 10. Автокодерді анықтау мысалы

Суреттен көріп отырғаныңыздай, PermGen бір деңгейде тұрып қалды. Автокодер мұны біртүрлі деп тапты, өйткені ол бұрын мұндай нәрсені көрмеген. Мұнда жүйе жұмыс күйіне оралғанша аномалия 100% сақталады. Барлық көрсеткіштер үшін аномалия көрсетіледі. Бұрын айтылғандай, автокодер аномалияларды локализациялай алмайды. Оператор осы жағдайларда осы функцияны орындауға шақырылады.

қорытынды

«Web-Consolidation» ДК бірнеше жылдан бері әзірленуде. Жүйе айтарлықтай тұрақты күйде және тіркелген оқиғалардың саны аз. Дегенмен, сәтсіздікке 5-10 минут қалғанда сәтсіздікке әкелетін ауытқуларды табуға болады. Кейбір жағдайларда ақаулық туралы алдын ала хабарлау «жөндеу» жұмыстарын жүргізуге бөлінген жоспарланған уақытты үнемдеуге көмектеседі.

Жүргізілген эксперименттерге сүйене отырып, түпкілікті қорытынды жасауға әлі ерте. Әзірге нәтижелер қарама-қайшы. Бір жағынан, нейрондық желілерге негізделген алгоритмдер «пайдалы» аномалияларды табуға қабілетті екені анық. Екінші жағынан, жалған позитивтердің үлкен пайызы қалады және нейрондық желідегі білікті маман анықтаған барлық ауытқуларды анықтау мүмкін емес. Кемшіліктерге қазір нейрондық желі қалыпты жұмыс істеу үшін мұғаліммен бірге оқытуды талап ететін фактіні қамтиды.

Сәтсіздіктерді болжау жүйесін одан әрі дамыту және оны қанағаттанарлық жағдайға келтіру үшін бірнеше жолды қарастыруға болады. Бұл жүйенің күйіне үлкен әсер ететін маңызды көрсеткіштер тізіміне қосылу және оған әсер етпейтін қажетсіздерді алып тастауға байланысты сәтсіздікке әкелетін ауытқулары бар жағдайларды егжей-тегжейлі талдау. Сондай-ақ, егер біз осы бағытта қозғалатын болсақ, біз сәтсіздіктерге әкелетін ауытқулары бар жағдайларымыз үшін алгоритмдерді арнайы мамандандыруға әрекет жасай аламыз. Басқа жолы бар. Бұл нейрондық желі архитектурасының жетілдірілуі және осылайша оқу уақытының қысқаруымен анықтау дәлдігін арттырады.

Осы мақаланы жазуға және өзектілігін сақтауға көмектескен әріптестеріме алғыс айтамын: Виктор Вербицкий және Сергей Финогенов.

Ақпарат көзі: www.habr.com

пікір қалдыру