Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Tarkvarasüsteemide tööstuslik arendamine nõuab suurt tähelepanu lõpptoote veataluvusele, samuti kiiret reageerimist riketele ja riketele nende ilmnemisel. Järelevalve muidugi aitab riketele ja riketele tõhusamalt ja kiiremini reageerida, kuid mitte piisavalt. Esiteks on suure hulga serverite jälgimine väga keeruline – vaja on palju inimesi. Teiseks peate selle oleku ennustamiseks hästi aru saama, kuidas rakendus töötab. Seetõttu vajame palju inimesi, kes tunneksid hästi meie arendatavaid süsteeme, nende jõudlust ja funktsioone. Oletame, et isegi kui leiate piisavalt inimesi, kes on selleks valmis, kulub nende koolitamiseks siiski palju aega.

Mida teha? Siin tuleb meile appi tehisintellekt. Artiklis tuleb juttu ennustav hooldus (ennustushooldus). See lähenemine kogub aktiivselt populaarsust. On kirjutatud suur hulk artikleid, sealhulgas Habré kohta. Suured ettevõtted kasutavad seda lähenemisviisi täielikult oma serverite jõudluse säilitamiseks. Pärast suure hulga artiklite uurimist otsustasime seda lähenemisviisi proovida. Mis sellest välja tuli?

Sissejuhatus

Väljatöötatud tarkvarasüsteem läheb varem või hiljem tööle. Kasutaja jaoks on oluline, et süsteem töötaks tõrgeteta. Kui hädaolukord siiski tekib, tuleb see lahendada minimaalse viivitusega.

Tarkvarasüsteemi tehnilise toe lihtsustamiseks, eriti kui servereid on palju, kasutatakse tavaliselt jälgimisprogramme, mis võtavad töötavast tarkvarasüsteemist mõõdikuid, võimaldavad diagnoosida selle seisukorda ja aitavad kindlaks teha, mis tõrke täpselt põhjustas. Seda protsessi nimetatakse tarkvarasüsteemi jälgimiseks.

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 1. Grafana jälgimisliides

Mõõdikud on erinevad indikaatorid tarkvarasüsteemi, selle täitmiskeskkonna või füüsilise arvuti kohta, mille all süsteem töötab, koos mõõdikute vastuvõtmise hetke ajatempliga. Staatilises analüüsis nimetatakse neid mõõdikuid aegridadeks. Tarkvarasüsteemi oleku jälgimiseks kuvatakse mõõdikud graafikute kujul: aeg on X-teljel ja väärtused piki Y-telge (joonis 1). Töötavast tarkvarasüsteemist (igast sõlmest) saab võtta mitu tuhat mõõdikut. Need moodustavad mõõdikute ruumi (mitmemõõtmelised aegridad).

Kuna keeruliste tarkvarasüsteemide jaoks kogutakse suur hulk mõõdikuid, muutub käsitsi jälgimine keeruliseks ülesandeks. Haldaja poolt analüüsitavate andmete hulga vähendamiseks sisaldavad seiretööriistad tööriistu, mis võimaldavad automaatselt tuvastada võimalikke probleeme. Näiteks saate konfigureerida päästiku käivituma, kui vaba kettaruumi langeb alla määratud läve. Samuti saate automaatselt diagnoosida serveri seiskumise või teenuse kiiruse kriitilise aeglustumise. Praktikas teevad monitooringu tööriistad head tööd juba toimunud rikete tuvastamisel või tulevaste rikete lihtsate sümptomite tuvastamisel, kuid üldiselt jääb võimaliku rikke ennustamine nende jaoks kõvaks pähkliks. Prognoosimine läbi mõõdikute käsitsi analüüsimise eeldab kvalifitseeritud spetsialistide kaasamist. See on madal tootlikkus. Enamik võimalikke tõrkeid võivad jääda märkamatuks.

Viimasel ajal on suurte IT-tarkvaraarendusettevõtete seas üha populaarsemaks muutunud tarkvarasüsteemide nn ennustav hooldus. Selle lähenemisviisi põhiolemus on tehisintellekti abil leida süsteemi degradeerumiseni viivad probleemid varases staadiumis, enne kui see ebaõnnestub. See lähenemisviis ei välista täielikult süsteemi käsitsi jälgimist. See on seireprotsessi kui terviku abivahend.

Peamine tööriist ennustava hoolduse rakendamisel on ülesanne otsida anomaaliaid aegridades, alates kui ilmneb anomaalia andmetes on suur tõenäosus, et mõne aja pärast tuleb ebaõnnestumine või ebaõnnestumine. Anomaalia on teatud hälve tarkvarasüsteemi jõudluses, näiteks tuvastatakse ühte tüüpi päringu täitmise kiiruse halvenemine või teenindatavate päringute keskmise arvu vähenemine kliendiseansside konstantsel tasemel.

Tarkvarasüsteemide anomaaliate otsimise ülesandel on oma spetsiifika. Teoreetiliselt on iga tarkvarasüsteemi jaoks vaja olemasolevaid meetodeid arendada või täiustada, kuna anomaaliate otsimine sõltub suuresti andmetest, milles seda tehakse, ja tarkvarasüsteemide andmed varieeruvad suuresti olenevalt süsteemi juurutamise tööriistadest. , kuni selleni, millises arvutis see töötab.

Meetodid anomaaliate otsimiseks tarkvarasüsteemide rikete ennustamisel

Kõigepealt tasub öelda, et ebaõnnestumiste ennustamise idee sai inspiratsiooni artiklist "Masinõpe IT-seires". Anomaaliate automaatse otsimisega lähenemise efektiivsuse testimiseks valiti tarkvarasüsteem Web-Consolidation, mis on üks MTÜ Krista ettevõtte projektidest. Varem tehti sellele käsitsi jälgimist saadud mõõdikute põhjal. Kuna süsteem on üsna keeruline, kasutatakse selle jaoks palju mõõdikuid: JVM-i indikaatorid (prügikoguja koormus), OS-i indikaatorid, mille alusel koodi käivitatakse (virtuaalmälu, OS-i protsessori koormus %), võrgunäitajad (võrgukoormus). ), server ise (CPU koormus, mälu), wildfly mõõdikud ja rakenduse enda mõõdikud kõigi kriitiliste alamsüsteemide jaoks.

Kõik mõõdikud võetakse süsteemist grafiidi abil. Algselt kasutati sosinate andmebaasi grafana standardlahendusena, kuid kliendibaasi kasvades ei saanud grafiit enam hakkama, kuna oli alalisvooluketta alamsüsteemi võimsus ammendanud. Pärast seda otsustati leida tõhusam lahendus. Valik tehti kasuks grafiit+clickhouse, mis võimaldas vähendada ketta alamsüsteemi koormust suurusjärgu võrra ja vähendada hõivatud kettaruumi viis kuni kuus korda. Allpool on diagramm mõõdikute kogumise mehhanismist grafiit+clickhouse abil (joonis 2).

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 2. Mõõdikute kogumise skeem

Diagramm on võetud sisedokumentatsioonist. See näitab suhtlust grafana (meie kasutatav jälgimisliides) ja grafiidi vahel. Mõõdikute eemaldamine rakendusest toimub eraldi tarkvara abil - jmxtrans. Ta paneb need grafiiti.
Veebikonsolideerimissüsteemil on mitmeid funktsioone, mis tekitavad probleeme tõrgete ennustamisel:

  1. Trend sageli muutub. Selle tarkvarasüsteemi jaoks on saadaval erinevad versioonid. Igaüks neist toob muudatusi süsteemi tarkvaraosas. Seega mõjutavad arendajad otseselt antud süsteemi mõõdikuid ja võivad põhjustada trendi muutust;
  2. juurutusfunktsioon ja eesmärgid, milleks kliendid seda süsteemi kasutavad, põhjustavad sageli kõrvalekaldeid ilma eelneva halvenemiseta;
  3. anomaaliate protsent kogu andmekogumi suhtes on väike (< 5%);
  4. Indikaatorite süsteemist vastuvõtmisel võib esineda lünki. Mõne lühikese aja jooksul ei suuda seiresüsteem mõõdikuid hankida. Näiteks kui server on ülekoormatud. See on närvivõrgu treenimisel kriitilise tähtsusega. Vahed tuleb täita sünteetiliselt;
  5. Anomaaliate juhtumid on sageli olulised ainult konkreetse kuupäeva/kuu/kellaaja (hooajalisuse) puhul. Sellel süsteemil on kasutajatele selle kasutamiseks selged eeskirjad. Seetõttu on mõõdikud asjakohased ainult teatud aja jooksul. Süsteemi ei saa kasutada pidevalt, vaid ainult mõnel kuul: valikuliselt, sõltuvalt aastast. Tekivad olukorrad, kui mõõdikute sama käitumine võib ühel juhul põhjustada tarkvarasüsteemi tõrke, teisel juhul mitte.
    Alustuseks analüüsiti tarkvarasüsteemide seireandmetes anomaaliate tuvastamise meetodeid. Seda teemat käsitlevates artiklites, kui anomaaliate protsent on ülejäänud andmekogumiga võrreldes väike, tehakse kõige sagedamini ettepanek kasutada närvivõrke.

Närvivõrgu andmete abil anomaaliate otsimise põhiloogika on näidatud joonisel 3:

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 3. Anomaaliate otsimine närvivõrgu abil

Mõõdikute jooksva voo prognoosi või akna taastamise tulemuse põhjal arvutatakse kõrvalekalle töötavast tarkvarasüsteemist saadavast. Kui tarkvarasüsteemist ja närvivõrgust saadud mõõdikute vahel on suur erinevus, võime järeldada, et praegune andmesegment on anomaalne. Närvivõrkude kasutamisel tekivad järgmised probleemid:

  1. voogedastusrežiimis korrektseks töötamiseks peavad närvivõrgu mudelite treenimise andmed sisaldama ainult "tavalisi" andmeid;
  2. õigeks tuvastamiseks on vaja ajakohast mudelit. Mõõdikute trendide ja hooajalisuse muutumine võib mudelis põhjustada suure hulga valepositiivseid tulemusi. Selle värskendamiseks on vaja selgelt kindlaks määrata aeg, millal mudel on aegunud. Kui värskendate mudelit hiljem või varem, järgneb tõenäoliselt suur hulk valepositiivseid tulemusi.
    Samuti ei tohi unustada valepositiivsete tulemuste otsimist ja sagedase esinemise vältimist. Eeldatakse, et need tekivad kõige sagedamini hädaolukordades. Kuid need võivad olla ka ebapiisava koolituse tõttu tekkinud närvivõrgu vea tagajärg. Mudeli valepositiivsete tulemuste arv on vajalik minimeerida. Vastasel juhul raiskavad valed ennustused palju süsteemi kontrollimiseks mõeldud administraatori aega. Varem või hiljem lõpetab administraator lihtsalt "paranoilisele" seiresüsteemile reageerimise.

Korduv närvivõrk

Aegridade kõrvalekallete tuvastamiseks võite kasutada korduv närvivõrk LSTM-mäluga. Ainus probleem on see, et seda saab kasutada ainult prognoositud aegridade jaoks. Meie puhul ei ole kõik mõõdikud prognoositavad. Katse rakendada RNN LSTM-i aegreale on näidatud joonisel 4.

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 4. Näide korduvast närvivõrgust LSTM mälurakkudega

Nagu jooniselt 4 näha, suutis RNN LSTM sel ajavahemikul anomaaliate otsimisega toime tulla. Kui tulemusel on suur ennustusviga (keskmine viga), on indikaatorites tegelikult ilmnenud anomaalia. Ühe RNN LSTM-i kasutamisest ilmselgelt ei piisa, kuna see on rakendatav väikese arvu mõõdikute puhul. Võib kasutada anomaaliate otsimise abimeetodina.

Autoencoder rikke ennustamiseks

Autoencoder – sisuliselt tehisnärvivõrk. Sisendkiht on kodeerija, väljundkiht on dekooder. Kõigi seda tüüpi närvivõrkude puuduseks on see, et need ei lokaliseeri hästi anomaaliaid. Valiti sünkroonne autoencoder arhitektuur.

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 5. Näide autoencoderi tööst

Autoenkoodereid õpetatakse kasutama tavalisi andmeid ja seejärel leiavad mudelile sisestatud andmetes midagi ebanormaalset. Just see, mida selle ülesande jaoks vajate. Jääb vaid valida, milline automaatkooder selle ülesande jaoks sobib. Arhitektuuriliselt lihtsaim autoenkoodri vorm on edasisuunav mittetagasi pöörduv närvivõrk, mis on väga sarnane mitmekihiline pertseptron (mitmekihiline perceptron, MLP), mille sisendkiht, väljundkiht ja üks või mitu peidetud kihti ühendavad neid.
Erinevused automaatkodeerijate ja MLP-de vahel seisnevad aga selles, et automaatkooderis on väljundkihil sama arv sõlmi kui sisendkihil ja selle asemel, et õpetada ennustama sisendi X poolt antud sihtväärtust Y, õpetatakse automaatkodeerijat. et rekonstrueerida oma X-id. Seetõttu on automaatkodeerijad järelevalveta õppimismudelid.

Autoenkoodri ülesandeks on leida sisendvektoris X anomaalsetele elementidele vastavad ajaindeksid r0 ... rn. See efekt saavutatakse ruuduvea otsimisega.

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 6. Sünkroonne autoenkooder

Autoencoder jaoks valiti sünkroonne arhitektuur. Selle eelised: võimalus kasutada voogedastustöötlusrežiimi ja suhteliselt väiksem arv närvivõrgu parameetreid võrreldes teiste arhitektuuridega.

Valepositiivsete tulemuste minimeerimise mehhanism

Tulenevalt asjaolust, et väljatöötatava anomaaliate tuvastamise mudeli jaoks tekivad mitmesugused ebanormaalsed olukorrad, aga ka võimalik närvivõrgu ebapiisava treenimise olukord, otsustati, et on vaja välja töötada valepositiivsete tulemuste minimeerimise mehhanism. See mehhanism põhineb malli alusel, mille administraator on klassifitseerinud.

Algoritm dünaamilise ajaskaala teisendamiseks (DTW algoritm, inglise keelest dynamic time warping) võimaldab leida ajajadade vahel optimaalse vastavuse. Esmakordselt kasutati kõnetuvastuses: kasutatakse määramaks, kuidas kaks kõnesignaali esindavad sama algset kõnefraasi. Hiljem leiti sellele rakendust ka teistes valdkondades.

Valepositiivsete tulemuste minimeerimise peamine põhimõte on standardite andmebaasi kogumine operaatori abil, kes klassifitseerib närvivõrkude abil tuvastatud kahtlased juhtumid. Järgmisena võrreldakse klassifitseeritud standardit juhtumiga, mille süsteem tuvastas, ja tehakse järeldus, kas juhtum on vale või viib tõrkeni. DTW algoritmi kasutatakse täpselt kahe aegrea võrdlemiseks. Peamine minimeerimisvahend on endiselt klassifitseerimine. Eeldatakse, et pärast suure hulga võrdlusjuhtumite kogumist hakkab süsteem enamiku juhtumite sarnasuse ja sarnaste esinemise tõttu operaatorilt vähem küsima.

Selle tulemusena koostati ülalkirjeldatud närvivõrgu meetodite põhjal eksperimentaalprogramm, et ennustada "Web-Consolidation" süsteemi tõrkeid. Selle programmi eesmärk oli olemasoleva seireandmete ja varasemate tõrgete teabe arhiivi abil hinnata selle lähenemisviisi pädevust meie tarkvarasüsteemide jaoks. Programmi skeem on toodud allpool joonisel 7.

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 7. Meetrilise ruumi analüüsil põhinev rikete prognoosimise skeem

Diagrammil saab eristada kahte peamist plokki: anomaalsete ajaperioodide otsimine seire andmevoos (mõõdikud) ja valepositiivsete tulemuste minimeerimise mehhanism. Märkus. Eksperimentaalsetel eesmärkidel saadakse andmed JDBC ühenduse kaudu andmebaasist, kuhu grafiit need salvestab.
Järgnevalt on välja toodud arenduse tulemusena saadud seiresüsteemi liides (joonis 8).

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 8. Eksperimentaalse seiresüsteemi liides

Liides kuvab saadud mõõdikute põhjal anomaalia protsendi. Meie puhul on kviitung simuleeritud. Meil on juba mitme nädala andmed olemas ja laadime neid järk-järgult, et kontrollida rikkeni viinud anomaaliat. Alumisel olekuribal kuvatakse andmeanomaalia üldine protsent antud ajahetkel, mis määratakse automaatse kodeerija abil. Samuti kuvatakse prognoositud mõõdikute jaoks eraldi protsent, mille arvutab RNN LSTM.

Näide anomaalia tuvastamisest, mis põhineb protsessori jõudlusel, kasutades RNN LSTM närvivõrku (joonis 9).

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 9. RNN LSTM avastus

Üsna lihtne juhtum, mis oli sisuliselt tavaline kõrvalekalle, kuid viis süsteemi tõrkeni, arvutati edukalt RNN LSTM-i abil. Anomaaliaindikaator sellel ajavahemikul on 85–95%, kõik üle 80% (lävi määrati katseliselt) loetakse kõrvalekaldeks.
Näide anomaalia tuvastamisest, kui süsteem ei saanud pärast värskendust alglaadida. Selle olukorra tuvastab automaatkooder (joonis 10).

Otsime kõrvalekaldeid ja ennustame tõrkeid närvivõrkude abil

Joonis 10. Autoenkoodri tuvastamise näide

Nagu jooniselt näha, on PermGen ühel tasemel kinni. Autoencoder pidas seda imelikuks, sest ta polnud midagi sellist varem näinud. Siin püsib anomaalia 100%, kuni süsteem naaseb tööolekusse. Kõigi mõõdikute puhul kuvatakse anomaalia. Nagu varem mainitud, ei saa automaatkooder kõrvalekaldeid lokaliseerida. Nendes olukordades kutsutakse operaatorit seda funktsiooni täitma.

Järeldus

Arvutit "Web-Consolidation" on arendatud juba mitu aastat. Süsteem on üsna stabiilses olekus ja registreeritud intsidentide arv on väike. Siiski oli võimalik leida rikkeni viinud anomaaliaid 5–10 minutit enne rikke ilmnemist. Mõnel juhul aitaks ette teatamine rikkest säästa planeeritud aega, mis on ette nähtud “remondi” töö tegemiseks.

Läbiviidud katsete põhjal on veel vara lõplikke järeldusi teha. Seni on tulemused vastuolulised. Ühest küljest on selge, et närvivõrkudel põhinevad algoritmid on võimelised leidma “kasulikke” kõrvalekaldeid. Teisest küljest jääb endiselt suur osa valepositiivseid tulemusi ja kõiki kvalifitseeritud spetsialisti poolt närvivõrgus tuvastatud kõrvalekaldeid ei ole võimalik tuvastada. Puudusteks on asjaolu, et praegu vajab närvivõrk normaalseks tööks õpetajaga koolitust.

Rikete prognoosimissüsteemi edasiarendamiseks ja rahuldavasse olekusse viimiseks võib ette näha mitmeid viise. See on üksikasjalikum analüüs juhtumitest, kus esinevad kõrvalekalded, mis viivad ebaõnnestumiseni, tänu sellele oluliste mõõdikute loendi lisamisele, mis süsteemi olekut oluliselt mõjutavad, ja tarbetute, mis seda ei mõjuta, kõrvaleheitmisest. Samuti, kui liigume selles suunas, saame teha katseid spetsialiseeruda algoritme spetsiaalselt meie juhtumite jaoks, mille kõrvalekalded põhjustavad tõrkeid. On veel üks viis. See on närvivõrgu arhitektuuri täiustamine ja seeläbi tuvastamise täpsuse suurendamine treeningaja lühenemisega.

Tänan oma kolleege, kes aitasid mul seda artiklit kirjutada ja selle asjakohasust säilitada: Viktor Verbitsky ja Sergei Finogenov.

Allikas: www.habr.com

Lisa kommentaar