Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Tööstuslike tarkvasĂŒsteemide arendamine nĂ”uab suurt tĂ€helepanu lĂ”pptootesi tĂ”rgetekindlusele ning kiirele reageerimisele, kui riketeid ja tĂ”rkeid siiski juhtub. JĂ€lgimine aitab muidugi tĂ”husamalt ja kiiremini reageerida rikeidele ja tĂ”rgetele, kuid see pole piisav. Esiteks on vĂ€ga keeruline jĂ€lgida suurt hulka servereid - selleks on vajalik suur hulk inimesi. Teiseks, tuleb hĂ€sti mĂ”ista, kuidas rakendus töötab, et prognoosida selle seisukorda. Seega on vaja palju inimesi, kes mĂ”istavad hĂ€sti meie arendatavaid sĂŒsteeme, nende nĂ€itajaid ja omadusi. Oletame, isegi kui leida piisav hulk inimesi, kes on valmis sellega tegelema, vajab nende koolitamine samuti palju aega.

Mis siis teha? Siin tuleb meile appi tehisintellekt. Artiklis kÀsitletakse ennustavat hooldust (ennustav hooldus). See lÀhenemine kasvab aktiivselt populaarsust. On kirjutatud palju artikleid, sealhulgas ka Habras. Suured ettevÔtted kasutavad seda lÀhenemist oma serverite töövÔimekuse tagamiseks. PÀrast suurte artiklite uurimist otsustasime proovida seda lÀhenemist. Mis sellest vÀlja tuli?

Sissejuhatus

Arendatud tarkvarasĂŒsteem jĂ”uab varem vĂ”i hiljem kasutusse. Kasutajale on oluline, et sĂŒsteem töötab tĂ”rgeteta. Kui siiski juhtub erakorraline olukord, peab see olema kĂ”rvaldatud minimaalsete viivitustega.

TarkvarasĂŒsteemi tehnilise toe lihtsustamiseks, eriti kui servereid on palju, kasutatakse tavaliselt jĂ€lgimisprogramme, mis koguvad töötava tarkvarasĂŒsteemi mÔÔdikud, vĂ”imaldavad diagnoosida selle seisundit ja aitavad kindlaks teha, mis tĂ€pselt pĂ”hjustas rikke. Seda protsessi nimetatakse tarkvarasĂŒsteemi jĂ€lgimiseks.

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 1. Grafana jÀlgimisliides

Metrika on erinevad nĂ€itajad tarkvarasĂŒsteemis, selle kĂ€itamis keskkonnas vĂ”i fĂŒĂŒsilises arvutustehnoloogias, mille all sĂŒsteem töötas, ajamĂ€rgistusega, mis nĂ€itab aega, mil mÔÔdud saadud. Staatilises analĂŒĂŒsis nimetatakse mÔÔduteabe ajakuvanditeks. TarkvarasĂŒsteemi oleku jĂ€lgimiseks esitatakse nĂ€itajad graafikute kujul: X-teljel on aeg ja Y-teljel on vÀÀrtused (joonis 1). Töötavast tarkvarasĂŒsteemist saab mÔÔta mitmeid tuhandeid nĂ€itajaid (igal sĂ”lmel). Need loovad mÔÔtmisruumi (mitme mÔÔtmeliste ajakuvandite kompleksi).

Kuna keeruliste tarkvarasĂŒsteemide puhul kogutakse arvestatav hulk mÔÔdikuid, muutub kĂ€sitsi jĂ€lgimine keeruliseks ĂŒlesandeks. JĂ€lgimistööde mahu vĂ€hendamiseks sisaldavad monitooringuvahendid automaatsete probleemide tuvastamise tööriistu. NĂ€iteks saab seadistada puhverpinget, mis aktiveerub, kui vaba kettaruumi kogus langeb mÀÀratud piirini. Samuti saab automaatselt diagnoosida serveri seiskumist vĂ”i teeninduskiirusel tekkivat kriitilist aeglustumist. Praktikas suudavad monitooringuvahendid ĂŒsna hĂ€sti tuvastada juba toimunud rikkeid vĂ”i tuvastada lihtsaid tulevaste riketega seotud sĂŒmptomeid, kuid ĂŒldiselt jÀÀb vĂ”imalike rikete ennustamine neile tĂ”eliseks pĂ€hkliks. Ennustamine kĂ€sitsi mÔÔdikute analĂŒĂŒsi teel nĂ”uab kvalifitseeritud spetsialistide kaasamist. See on madala tootlikkusega. Enamik potentsiaalsed rikked vĂ”ivad jÀÀda tĂ€helepanuta.

Viimastel aegadel on suuremate IT-ettevĂ”tete seas, mis tegelevad tarkvara arendamisega, ĂŒha suuremat populaarsust kogumas nn prognoosiv hooldus tarkvarasĂŒsteemide jaoks. Selle lĂ€henemise olemus seisneb probleemide tuvastamises, mis viivad sĂŒsteemi degradeerumiseni varajases staadiumis, enne selle riket, kasutades tehisintellekti. See lĂ€henemine ei vĂ€lista tĂ€ielikult kĂ€sitsi sĂŒsteemi jĂ€lgimist. See on abistav kogu jĂ€lgimisprotsessis.

Prognoosiva hoolduse peamine tööriist on anomaaliate leidmise ĂŒlesanne ajasĂŒsteemides, kuna anomaalia tekkimise korral on andmetes suur tĂ”enĂ€osus, et mĂ”ne aja pĂ€rast esineb tĂ”rge vĂ”i rikete. Anomaalia on mingi kĂ”rvalekalle tarkvarasĂŒsteemi nĂ€itajatest, nagu nĂ€iteks ĂŒhe tĂŒĂŒbi pĂ€ringu tĂ€itmise kiirus vĂ”i keskmise teenindatud pĂ€ringute arvu vĂ€henemine konstantse kliendiseansside arvu juures.

Anomaaliate otsimise ĂŒlesanne tarkvarasĂŒsteemides omab oma spetsiifikat. Idee kohaselt on iga tarkvarasĂŒsteemi jaoks vajalik olemasolevate meetodite vĂ€ljatöötamine vĂ”i tĂ€iustamine, kuna anomaaliate otsimine sĂ”ltub tugevalt andmetest, milles see toimub, ja tarkvarasĂŒsteemide andmed varieeruvad oluliselt sĂ”ltuvalt sĂŒsteemi rakendamise tööriistadest, isegi sĂ”ltuvalt sellest, millisel arvutil see kĂ€ivitatakse.

Anomaaliate otsimise meetodid tarkvarasĂŒsteemide riketete prognoosimisel

Esiteks tuleb öelda, et riketete prognoosimise idee on inspireeritud artiklist „MasinĂ”pe IT-monitooringus“. Aneemaks, et automatiseeritud anomaaliate avastamise meetodi tĂ”husust kontrollida, valiti tarkvarasĂŒsteem „Web-Konsolideerimine“, mis on ĂŒks NPO „Krista“ projektest. Varasemalt tehti sellele kĂ€sitsi seire saadud meetrite pĂ”hjal. Kuna sĂŒsteem on piisavalt keeruline, jĂ€lgitakse selle jaoks suurt hulka meetmeid: JVM nĂ€itajaid (prĂŒgikogumise koormus), operatsioonisĂŒsteemi nĂ€itajaid, mille all kood töötab (virtuaalne mĂ€lu, protsessori koormus %), vĂ”rgu nĂ€itajaid (vĂ”rgu koormus), serveri nĂ€itajaid (protsessori koormus, mĂ€lu), wildfly nĂ€itajaid ja rakenduse enda meetmeid kĂ”igi kriitiliste alamsĂŒsteemide kohta.

KĂ”ik meetmed saadakse sĂŒsteemist graphite'i abil. Alguses kasutati whisperi andmebaasi kui standardset lahendust grafana jaoks, kuid klientide arvu kasvu tĂ”ttu lĂ”petas graphite diskreetse alamsĂŒsteemi lĂ€bilaskevĂ”ime koostööd. PĂ€rast seda tehti otsus otsida tĂ”husamat lahendust. Valik langes graphite+clickhouse, mis vĂ€hendas oluliselt kettasĂŒsteemi koormust ja viis kuue kuni viie korra vĂ”rra vĂ€hendas kasutatavat kettamahtu. Allpool on esitatud metrikate kogumise mehhanismi skeem, kasutades graphite+clickhouse (joonis 2).

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 2. Metriikate kogumise skeem

Skeem on vĂ”etud sisemisest dokumentatsioonist. Sellega on nĂ€idatud andmevahetust grafana (valdava kasutajaliidese, mida me kasutame) ja graphite'i vahel. Metrikate kogumisega tegeleb eraldi tarkvara – jmxtrans. See salvestab need graphite'i.
SĂŒsteemil „Web-Konsolideerimine” on mitmeid omadusi, mis tekitavad probleeme rikkeennustamisel:

  1. trendide vahetus toimub sageli. Selle tarkvarasĂŒsteemi jaoks vĂ€ljastatakse erinevaid versioone. Igal neist on muutused sĂŒsteemi tarkvaras. Seega mĂ”jutavad arendajad otseselt selle sĂŒsteemi metriika ja vĂ”ivad pĂ”hjustada trendide vahetust;
  2. rakendamise eripĂ€ra ja sĂŒsteemi klientide kasutamise eesmĂ€rgid tekitavad sageli anomaaliaid ilma eelneva degradeerumiseta;
  3. anomaaliate protsent kogu andmestikus on madal (< 5%);
  4. vĂ”ivad esineda katkestused sĂŒsteemi nĂ€itajate saamisel. MĂ”nel lĂŒhikesel ajavahemikul ei Ă”nnestu jĂ€lgimissĂŒsteemil mÔÔdikuid saada. NĂ€iteks, kui server on ĂŒle koormatud. See on nĂ€rvivĂ”rgule kriitiline. TĂ”useb vajadus tĂ€ita lĂŒnki sĂŒnteetiliselt;
  5. Anomaaliate juhtumid on sageli asjakohased ainult teatud arvu/kuid/aja (hooaegsus) osas. Antud sĂŒsteemil on kasutajate jaoks ĂŒheselt mĂ”istetav regulatiivne raamistiku. Seega on mÔÔdikud asjakohased ainult teatud aja jaoks. SĂŒsteem ei pruugi olla pidevas kasutuses, vaid ainult teatud kuudel: valikuliselt sĂ”ltuvalt aastast. Tekkivad olukorrad, kus sama mÔÔdiku kĂ€itumine ĂŒhes olukorras vĂ”ib viia programmide sĂŒsteemi tĂ”rkeni, aga teises mitte.
    Alguses analĂŒĂŒsiti meetodeid anomaaliate tuvastamiseks tarkvarasĂŒsteemide jĂ€lgimisandmetes. Sel teemal kirjutatud artiklites soovitatakse sageli madala anomaaliate protsendi korral vĂ”rreldes ĂŒlejÀÀnud andmestikuga kasutada nĂ€rvivĂ”rke.

PÔhiloogika anomaaliate otsimiseks nÀrvivÔrkude abil on kujutatud joonisel 3:

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 3. Anomaaliate otsimine nÀrvivÔrgu abil

Hetke mÔÔtmete voosi prognoosi vĂ”i taastamise tulemused arvutatakse kĂ”rvalekalle töötava tarkvarasĂŒsteemi saadud nĂ€itajatest. Kui saadud nĂ€itajate ja nĂ€rvivĂ”rgu tulemuste vahel on suur erinevus, vĂ”ib teha jĂ€relduse, et kĂ€esolev andmepĂ€devus on anomaalne. Selle tĂ”ttu tekib rida probleeme nĂ€rvivĂ”rkude kasutamiseks:

  1. et mudelid töötaksid Ôigesti reaalajas, peavad koolitamiseks kasutatavad andmed sisaldama vaid 'normaalseid' nÀitajaid;
  2. on vajalik omada ajakohast mudelit korrektseks avastamiseks. Suundumuse ja hooaegade muutused nÀitajates vÔivad pÔhjustada palju valehÀireid mudelis. Selleks, et mudelit uuendada, tuleb selgelt mÀÀratleda aeg, mil mudel on aegunud. Kui mudelit uuendada liiga hilja vÔi vara, jÀÀb tÔenÀoliselt palju valehÀireid.
    Samuti ei tohiks unustada valehĂ€irete otsimist ja ennetamist. Eeldatakse, et need esinevad kĂ”ige sagedamini erakorralistes olukordades. Siiski vĂ”ivad need olla tingitud ka nĂ€rvivĂ”rgu veast, mis tuleneb selle ebapiisavast koolitamisest. ValehĂ€irete arvu tuleb minimeerida. Vastasel juhul kulutab valeprognoos palju aega administraatori jaoks, kes on mÀÀratud sĂŒsteemi kontrollimiseks. Varsti vĂ”i hiljem viib see selleni, et administraator lĂ”petab lihtsalt "paranoilise" jĂ€lgimisse sĂŒsteemi reageerimise.

Rekurrentsne nÀrvivÔrk

Ahnomaliade tuvastamiseks ajareal saab kasutada rekurrentsset nĂ€rvivĂ”rku LSTM mĂ€luga. Probleem seisneb vaid selles, et seda saab kasutada ainult prognoositavatele ajarealtele. Meie puhul ei ole kĂ”ik mÔÔdikud prognoositavad. Üritus rakendada RNN LSTM ajareale on esitatud joonisel 4.

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 4. Rekurrentsse nÀrvivÔrgu LSTM mÀlurakkude toimimise nÀide

Nagu nĂ€ha joonisel 4, suutis RNN LSTM tuvastada anomaalia antud ajahetkes. Seal, kus tulemus nĂ€itab suurt ennustamisviga (keskmine viga), leidis tĂ”epoolest aset anomaalia nĂ€itajates. Ainult ĂŒhe RNN LSTM kasutamine ei ole ilmselgelt piisav, kuna see on rakendatav piiratud arvu mÔÔdikute suhtes. Anomaalia otsimise abimeetodina saab kasutada.

Autokooder rikete ennustamiseks

Autokooder – pĂ”himĂ”tteliselt kunstlike neuronite vĂ”rk. Sissevoolu kiht – kodeerija, vĂ€ljundkiht – dekodeerija. KĂ”igi selliste nĂ€rvivĂ”rkude puuduseks on halb anomaaliate lokaliseerimine. Valiti sĂŒnkroonse autokoodri arhitektuur.

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 5. Autokoodri töö nÀide

Autokooderid Ă”pivad normaalsest andmestikust ja leiavad siis mudelisse söödetud andmetes midagi anomaalset. Just seda on selle ĂŒlesande jaoks vaja. Tuleb ainult valida, milline autokooder sobib antud ĂŒlesande jaoks. Arhitektuuriliselt kĂ”ige lihtsam autokooder on sirge, tagasisaatmata nĂ€rvivĂ”rk, mis on vĂ€ga sarnane kihtedega perzeptronile (multilayer perceptron, MLP), sisendtaseme, vĂ€ljundtaseme ja ĂŒhe vĂ”i mitme peidi kihi vaheliste ĂŒhendustega.
Kuid erinevused autokooderite ja MLP vahel seisnevad selles, et autokoodri vÀljundtasemel on sama palju sÔlmi kui sisendtasemel ning et autokooder ei Ôpi Y sihtvÀÀrtuse prognoosimist, mis on mÀÀratud X sisendiga, vaid autokooder Ôpib rekonstrueerima enda X. SeetÔttu on autokooderid mittetÀiendavad Ôppemudelid.

Autokoodri ĂŒlesanne on leida ajatu indeksid r0 
 rn, mis vastavad anomaalsetele elementidele sisendvektoris X. See efekt saavutatakse kvadratiivse vea otsimise kaudu.

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 6. SĂŒnkroonsed autokooderid

Autokooderi jaoks valiti sĂŒnkrooniline arhitektuur. Selle eelised: voogude töötlemise reĆŸiimi kasutamise vĂ”imalus ja vĂ”rreldes teiste arhitektuuridega suhteliselt vĂ€henenud nĂ€rvivĂ”rgu parameetrid.

ValehÀirete minimeerimise mehhanism

Kuna erinevaid ebanormaalseid olukordi vÔib tekkida, samuti vÔib esineda olukord, kus nÀrvivÔrgu koolitus on ebapiisav, otsustati vÀlja töötada mehhanism valehÀirete minimeerimiseks arendatava kÔrvalekalde tuvastamise mudeli jaoks. See mehhanism pÔhineb mallide baasil, mida klassifitseerib administraator.

DĂŒnaamilise ajaskaalat muutmise algoritm (DTW-algoritm, inglise keeles dynamic time warping) vĂ”imaldab leida optimaalse vastavuse ajasekventide vahel. Esmakordselt rakendati hÀÀletuvastuses: seda kasutati selle mÀÀramiseks, kuidas kaks hÀÀle signaali esindavad ĂŒhte ja sama algselt vĂ€ljendatud fraasi. Hiljem leiti, et seda saab rakendada ka teistes valdkondades.

Valevuse minimiseerimise peamine pĂ”himĂ”te on referentside kogumine operaatori abil, kes klassifitseerib kahtlased juhtumid, mida tuvastavad nĂ€rvivĂ”rgud. Edasi toimub klassifitseeritud referentsi vĂ”rdlemine juhtumiga, mille sĂŒsteem avastas, ning tehakse jĂ€reldus, kas juhtum kuulub vale vĂ”i tĂ”rke juhtumite hulka. Just kahte ajaseeriat vĂ”rreldes kasutatakse DTW algoritmi. Peamiseks vahendiks minimiseerimise osas on siiski klassifitseerimine. Eeldatakse, et pĂ€rast suure hulga referentsjuhtumite kogumist hakkab sĂŒsteem operaatorilt vĂ€hem kĂŒsima, kuna enamiku juhtumite sarnasus ja sarnaste juhtumite teke vĂ€heneb.

KokkuvĂ”ttes rajati ĂŒlaltoodud nĂ€rvivĂ”rkude meetodite pĂ”hjal eksperimentaalne programm sĂŒsteemi "Web-Konsolideerimise" tĂ”rgete prognoosimiseks. Selle programmi eesmĂ€rk oli, kasutades olemasolevat jĂ€lgimisandmete arhiivi ja teavet juba toimunud tĂ”rgete kohta, hinnata kĂ€esoleva lĂ€henemise tĂ”husust meie tarkvarasĂŒsteemide puhul. Programmi töö skeem on esitatud allpool, joonisel 7.

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 7. Rikkete ennustamise skeem, mis pĂ”hineb mÔÔdikute ruumi analĂŒĂŒsil.

Skeemilt on nĂ€ha kaks pĂ”hiblokki: anomaalsete ajavahemike otsimine jĂ€lgimisandmete (mÔÔdikute) voos ja valehĂ€irete minimeerimise mehhanism. MĂ€rkus: eksperimentaalsetel eesmĂ€rkidel saadakse andmed JDBC-ĂŒhenduse kaudu andmebaasist, kuhu need salvestatakse, graphite.
Edasi on esitatud saadud tulemuste jĂ€lgimissĂŒsteemi arendamise liides (joonis 8).

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 8. Eksperimentaalse jĂ€lgimissĂŒsteemi liides

Liideses kuvatakse anomaalsuse protsent saadud mÔÔdikutest. Meie puhul simuleeritakse andmete saamist. Meil on juba mitme nĂ€dala andmed ja laadime neid jĂ€rk-jĂ€rgult, et kontrollida anomaaliat, mis viib rikkumiseni. Alumises staatusebaaris kuvatakse andmete ĂŒldine anomaalsuse protsent antud ajahetkel, mille mÀÀrab automaatne kodeerija. Samuti kuvatakse prognoositud mÔÔdikute jaoks eraldi protsent, mille arvutab RNN LSTM.

NÀide anomaalia tuvastamisest CPU nÀitajate pÔhjal RNN LSTM nÀrvivÔrgu abil (joonis 9).

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 9. RNN LSTM tuvastamine

See on ĂŒsna lihtne juhtum, pĂ”himĂ”tteliselt tavaline anomaalia, kuid see pĂ”hjustas sĂŒsteemi tĂ”rke, mille RNN LSTM abil suudeti edukalt tuvastada. Aeganomaalsuse nĂ€itaja sel ajal on 85-95%; kĂ”ik, mis ĂŒletab 80% (piir on mÀÀratud eksperimenteerimise teel), arvatakse anomaaliaks.
Anomaalia tuvastamise nĂ€ide, kus sĂŒsteem ei suutnud pĂ€rast vĂ€rskendamist kĂ€ivituda. See olukord tuvastatakse autokooderijaga (joonis 10).

Otsime anomaaliaid ja ennustame rikkeid nÀrvivÔrkude abil

Joonis 10. NĂ€ide autokooderija tuvastamisest

Nagu jooniselt nĂ€ha, on PermGen ĂŒhel tasemel kinni. Autokooderija leidis selle kummalisena, kuna ta ei olnud varem midagi sellist nĂ€inud. Siin pĂŒsib anomaalsus 100% kuni sĂŒsteem taastub töökindlaks. Anomaalsus kuvatakse lĂ€bi kĂ”ikide mÔÔdikute. Nagu varem mainitud, ei oska autokooderija anomaaliaid lokaliseerida. Operaatoreid nĂ”utakse, et tĂ€ita seda funktsiooni antud olukordades.

KokkuvÔte

PK «Web-ĐšĐŸĐœsolideerimine» on vĂ€lja töötatud juba mitu aastat. SĂŒsteem on piisavalt stabiilses seisundis ning registreeritud intsidentide arv on vĂ€ike. Siiski on Ă”nnestunud leida anomaaliaid, mis viivad rikkumiseni 5–10 minutit enne rikkumist. Mitmel juhul oleks varajane riketeade aidanud sÀÀsta regulatiivset aega, mis on ette nĂ€htud „remondi“ teostamiseks.

KĂ€idud katsetest on veel vara teha lĂ”plikke jĂ€reldusi. Praegu on tulemused vastuolulised. Ühest kĂŒljest on nĂ€ha, et nĂ€rvivĂ”rgupĂ”hised algoritmid suudavad tuvastada „kasulikke“ anomaaliaid. Teiselt poolt jÀÀb suur protsent valehĂ€ireid ning mitte kĂ”ik anomaaliad, mida kvalifitseeritud spetsialist suudab nĂ€rvivĂ”rgust leida, ei Ă”nnestu tuvastada. Puudusteks vĂ”ib pidada ka seda, et praegu nĂ”uab nĂ€rvivĂ”rk normaalset töötamist Ă”petajaga koolitamist.

SĂŒsteemi tĂ”rgete prognoosimise arendamiseks ja selle viimiseks rahuldavale tasemele on vĂ”imalik ette nĂ€ha mitmeid teid. See hĂ”lmab detailsemat analĂŒĂŒsi anomaaliaga juhtumite osas, mis pĂ”hjustavad rikkeid, lisades sellega oluliste mÔÔdikute nimekirja, mis mĂ”jutavad oluliselt sĂŒsteemi seisukorda, ja kĂ”rvaldades need, mis ei mĂ”juta seda. Samuti, kui jĂ€tkata antud suunas, saame proovida spetsialiseerida algoritme spetsiifiliselt meie anomaaliaga juhtumitele, mis pĂ”hjustavad rikkeid. On ka teine tee: nĂ€rvivĂ”rkude arhitektuuri tĂ€iustamine ja seelĂ€bi avastuste tĂ€psuse suurendamine, lĂŒhendades samal ajal koolitusaega.

TĂ€nan kolleege, kes aitasid mind selle artikli kirjutamisel ja ajakohasena hoidmisel: Viktor Verbitski ja Sergei Finogenov.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster