Ծրագրային համակարգերի արդյունաբերական զարգացումը մեծ ուշադրություն է պահանջում վերջնական արտադրանքի սխալ հանդուրժողականության նկատմամբ, ինչպես նաև արագ արձագանքել ձախողումներին և խափանումներին, եթե դրանք տեղի ունենան: Մոնիտորինգը, իհարկե, օգնում է անհաջողություններին և ձախողումներին ավելի արդյունավետ և արագ արձագանքել, բայց ոչ բավարար: Նախ, շատ դժվար է հետևել մեծ թվով սերվերների. մեծ թվով մարդիկ են անհրաժեշտ: Երկրորդ, դուք պետք է լավ պատկերացնեք, թե ինչպես է աշխատում հավելվածը, որպեսզի կանխատեսեք դրա վիճակը: Հետևաբար, մեզ պետք են շատ մարդիկ, ովքեր լավ կհասկանան մեր մշակած համակարգերը, դրանց կատարողականը և առանձնահատկությունները: Ենթադրենք, որ նույնիսկ եթե դուք գտնում եք, որ բավարար մարդիկ պատրաստ են դա անել, դեռ շատ ժամանակ է պահանջվում նրանց մարզելու համար:
Ինչ անել? Այստեղ է, որ արհեստական ինտելեկտը մեզ օգնության է հասնում: Հոդվածում կխոսվի
Ներածություն
Մշակված ծրագրային համակարգը վաղ թե ուշ գործարկվում է։ Օգտագործողի համար կարևոր է, որ համակարգը աշխատի առանց ձախողումների: Եթե իսկապես արտակարգ դեպք է տեղի ունենում, այն պետք է լուծվի նվազագույն ուշացումով:
Ծրագրային համակարգի տեխնիկական աջակցությունը պարզեցնելու համար, հատկապես, եթե կան շատ սերվերներ, սովորաբար օգտագործվում են մոնիտորինգի ծրագրեր, որոնք չափումներ են վերցնում գործող ծրագրային համակարգից, հնարավորություն են տալիս ախտորոշել դրա վիճակը և օգնում են որոշել, թե կոնկրետ ինչն է ձախողման պատճառ դարձել: Այս գործընթացը կոչվում է ծրագրային համակարգի մոնիտորինգ:
Նկար 1. Grafana մոնիտորինգի ինտերֆեյս
Չափիչները ծրագրային համակարգի, դրա կատարման միջավայրի կամ ֆիզիկական համակարգչի տարբեր ցուցիչներ են, որոնց տակ գործում է համակարգը՝ չափումների ստացման պահի ժամանակի դրոշմով: Ստատիկ վերլուծության մեջ այս ցուցանիշները կոչվում են ժամանակային շարքեր: Ծրագրային համակարգի վիճակը վերահսկելու համար չափումները ցուցադրվում են գրաֆիկների տեսքով. ժամանակը X առանցքի վրա է, իսկ արժեքները Y առանցքի երկայնքով (Նկար 1): Մի քանի հազար չափումներ կարելի է վերցնել գործող ծրագրային համակարգից (յուրաքանչյուր հանգույցից): Դրանք կազմում են չափումների տարածություն (բազմաչափ ժամանակային շարքեր)։
Քանի որ մեծ թվով չափումներ են հավաքվում բարդ ծրագրային համակարգերի համար, ձեռքով մոնիտորինգը դառնում է բարդ խնդիր: Ադմինիստրատորի կողմից վերլուծվող տվյալների քանակը նվազեցնելու համար մոնիտորինգի գործիքները պարունակում են գործիքներ՝ ավտոմատ կերպով բացահայտելու հնարավոր խնդիրները: Օրինակ, դուք կարող եք կարգավորել ձգանն այնպես, որ գործարկվի, երբ սկավառակի ազատ տարածությունն ընկնում է նշված շեմից ցածր: Կարող եք նաև ավտոմատ կերպով ախտորոշել սերվերի անջատումը կամ ծառայության արագության կտրուկ դանդաղումը: Գործնականում մոնիտորինգի գործիքները լավ աշխատանք են կատարում՝ հայտնաբերելու արդեն իսկ տեղի ունեցած ձախողումները կամ բացահայտելու ապագա անհաջողությունների պարզ ախտանիշները, բայց ընդհանուր առմամբ, հնարավոր ձախողման կանխատեսումը մնում է նրանց համար դժվար ընկույզ: Չափումների ձեռքով վերլուծության միջոցով կանխատեսումը պահանջում է որակյալ մասնագետների ներգրավում: Դա ցածր արտադրողականություն է: Հնարավոր ձախողումների մեծ մասը կարող է աննկատ մնալ:
Վերջերս ծրագրային ապահովման համակարգերի, այսպես կոչված, կանխատեսող սպասարկումը գնալով ավելի տարածված է դարձել ՏՏ ծրագրային ապահովման մշակման խոշոր ընկերությունների շրջանում: Այս մոտեցման էությունն այն է, որ արհեստական ինտելեկտի կիրառմամբ համակարգի դեգրադացիայի վաղ փուլերում, նախքան դրա ձախողումը, գտնել խնդիրները: Այս մոտեցումը ամբողջությամբ չի բացառում համակարգի ձեռքով մոնիտորինգը: Այն օժանդակ է մոնիտորինգի գործընթացին որպես ամբողջություն:
Կանխատեսող սպասարկման իրականացման հիմնական գործիքը ժամանակային շարքերում անոմալիաների որոնման խնդիրն է, քանի որ երբ անոմալիա է առաջանում տվյալների մեջ մեծ է հավանականությունը, որ որոշ ժամանակ անց կլինի ձախողում կամ ձախողում. Անոմալիան որոշակի շեղում է ծրագրային համակարգի աշխատանքի մեջ, ինչպես օրինակ՝ մեկ տեսակի հարցումների կատարման արագության դեգրադացիան կամ սպասարկվող հարցումների միջին քանակի նվազումը հաճախորդի նիստերի մշտական մակարդակում:
Ծրագրային համակարգերի համար անոմալիաների որոնման խնդիրն ունի իր առանձնահատկությունները: Տեսականորեն, յուրաքանչյուր ծրագրային համակարգի համար անհրաժեշտ է մշակել կամ կատարելագործել գոյություն ունեցող մեթոդները, քանի որ անոմալիաների որոնումը շատ կախված է այն տվյալներից, որոնցում այն իրականացվում է, և ծրագրային համակարգերի տվյալները մեծապես տարբերվում են՝ կախված համակարգի ներդրման գործիքներից: , մինչև այն, թե ինչ համակարգչի վրա է այն աշխատում:
Ծրագրային համակարգերի խափանումների կանխատեսման ժամանակ անոմալիաների որոնման մեթոդներ
Նախ, հարկ է ասել, որ անհաջողությունները կանխատեսելու գաղափարը ոգեշնչվել է հոդվածից
Բոլոր ցուցանիշները վերցված են համակարգից՝ օգտագործելով գրաֆիտ: Սկզբում whisper տվյալների բազան օգտագործվում էր որպես ստանդարտ լուծում grafana-ի համար, բայց քանի որ հաճախորդի բազան մեծանում էր, գրաֆիտն այլևս չէր կարողանում հաղթահարել՝ սպառելով DC սկավառակի ենթահամակարգի կարողությունները: Սրանից հետո որոշվեց ավելի արդյունավետ լուծում գտնել։ Ընտրությունը կատարվել է հօգուտ
Գծապատկեր 2. Չափումների հավաքման սխեմա
Դիագրամը վերցված է ներքին փաստաթղթերից: Այն ցույց է տալիս grafana-ի (մեր կողմից օգտագործվող մոնիտորինգի միջերեսի) և գրաֆիտի միջև հաղորդակցությունը: Հավելվածից չափորոշիչների հեռացումն իրականացվում է առանձին ծրագրաշարի միջոցով.
Վեբ համախմբման համակարգը ունի մի շարք առանձնահատկություններ, որոնք խնդիրներ են ստեղծում ձախողումների կանխատեսման համար.
- Միտումը հաճախ փոխվում է. Այս ծրագրային համակարգի համար հասանելի են տարբեր տարբերակներ: Նրանցից յուրաքանչյուրը փոփոխություններ է բերում համակարգի ծրագրային մասում: Համապատասխանաբար, այս կերպ մշակողները ուղղակիորեն ազդում են տվյալ համակարգի չափումների վրա և կարող են առաջացնել միտումի փոփոխություն.
- իրականացման առանձնահատկությունը, ինչպես նաև այն նպատակները, որոնց համար հաճախորդներն օգտագործում են այս համակարգը, հաճախ առաջացնում են անոմալիաներ՝ առանց նախկինում դեգրադացիայի.
- Անոմալիաների տոկոսը տվյալների ամբողջ հավաքածուի նկատմամբ փոքր է (< 5%);
- Համակարգից ցուցանիշներ ստանալու հարցում կարող են բացեր լինել։ Որոշ կարճ ժամանակահատվածում մոնիտորինգի համակարգը չի կարողանում չափումներ ստանալ: Օրինակ, եթե սերվերը ծանրաբեռնված է: Սա չափազանց կարևոր է նեյրոնային ցանցի վերապատրաստման համար: Բացերը սինթետիկ լրացնելու անհրաժեշտություն կա.
- Անոմալիաներով դեպքերը հաճախ տեղին են միայն կոնկրետ ամսաթվի/ամիս/ժամանակի համար (սեզոնայնություն): Այս համակարգն ունի օգտատերերի կողմից դրա օգտագործման հստակ կանոնակարգեր: Համապատասխանաբար, չափումները տեղին են միայն որոշակի ժամանակի համար: Համակարգը չի կարող օգտագործվել անընդհատ, այլ միայն որոշ ամիսների ընթացքում՝ ընտրովի՝ կախված տարվանից: Իրավիճակներ են առաջանում, երբ չափումների նույն վարքագիծը մի դեպքում կարող է հանգեցնել ծրագրային համակարգի խափանման, իսկ մյուսում՝ ոչ:
Սկզբից վերլուծվել են ծրագրային համակարգերի մոնիտորինգի տվյալների անոմալիաների հայտնաբերման մեթոդները: Այս թեմայի վերաբերյալ հոդվածներում, երբ անոմալիաների տոկոսը փոքր է տվյալների մնացած հավաքածուի համեմատ, առավել հաճախ առաջարկվում է օգտագործել նեյրոնային ցանցեր:
Նյարդային ցանցի տվյալների օգտագործմամբ անոմալիաների որոնման հիմնական տրամաբանությունը ներկայացված է Նկար 3-ում.
Նկար 3. Անոմալիաների որոնում՝ օգտագործելով նեյրոնային ցանց
Չափումների ընթացիկ հոսքի պատուհանի կանխատեսման կամ վերականգնման արդյունքի հիման վրա հաշվարկվում է գործող ծրագրային համակարգից ստացվածից շեղումը: Եթե ծրագրային ապահովման համակարգից և նեյրոնային ցանցից ստացված ցուցանիշների միջև մեծ տարբերություն կա, կարող ենք եզրակացնել, որ տվյալների ընթացիկ հատվածը անոմալ է: Նեյրոնային ցանցերի օգտագործման համար առաջանում են հետևյալ խնդիրների շարքը.
- հոսքային ռեժիմում ճիշտ աշխատելու համար նեյրոնային ցանցի մոդելների վերապատրաստման տվյալները պետք է ներառեն միայն «նորմալ» տվյալներ.
- ճիշտ հայտնաբերման համար անհրաժեշտ է ունենալ արդի մոդել։ Մետրիկայի փոփոխվող միտումները և սեզոնայնությունը կարող են մեծ թվով կեղծ դրական արդյունքներ առաջացնել մոդելում: Այն թարմացնելու համար անհրաժեշտ է հստակ որոշել այն ժամանակը, երբ մոդելը հնացել է: Եթե մոդելը թարմացնեք ավելի ուշ կամ ավելի վաղ, ապա, ամենայն հավանականությամբ, կհետևեն մեծ թվով կեղծ պոզիտիվներ:
Չպետք է մոռանալ նաև կեղծ պոզիտիվների հաճախակի առաջացումը որոնելու և կանխելու մասին: Ենթադրվում է, որ դրանք առավել հաճախ տեղի կունենան արտակարգ իրավիճակներում։ Այնուամենայնիվ, դրանք կարող են լինել նաև նեյրոնային ցանցի սխալի հետևանք՝ անբավարար պատրաստվածության պատճառով: Անհրաժեշտ է նվազագույնի հասցնել մոդելի կեղծ պոզիտիվների քանակը: Հակառակ դեպքում, կեղծ կանխատեսումները կվատնեն ադմինիստրատորի շատ ժամանակ, որը նախատեսված է համակարգը ստուգելու համար: Վաղ թե ուշ ադմինիստրատորը պարզապես կդադարի արձագանքել «պարանոիդ» մոնիտորինգի համակարգին։
Կրկնվող նեյրոնային ցանց
Ժամանակային շարքերում անոմալիաները հայտնաբերելու համար կարող եք օգտագործել
Նկար 4. LSTM հիշողության բջիջներով կրկնվող նյարդային ցանցի օրինակ
Ինչպես երևում է Նկար 4-ից, RNN LSTM-ը կարողացել է հաղթահարել անոմալիաների որոնումը այս ժամանակահատվածում: Այնտեղ, որտեղ արդյունքն ունի բարձր կանխատեսման սխալ (միջին սխալ), իրականում տեղի է ունեցել ցուցանիշների անոմալիա: Մեկ RNN LSTM-ի օգտագործումը ակնհայտորեն բավարար չի լինի, քանի որ այն կիրառելի է փոքր թվով չափումների համար: Կարող է օգտագործվել որպես անոմալիաների որոնման օժանդակ մեթոդ:
Ավտոկոդավորիչ ձախողման կանխատեսման համար
Նկար 5. Ավտոկոդավորիչի շահագործման օրինակ
Ավտոկոդավորիչները վերապատրաստվում են սովորական տվյալների վրա, այնուհետև մոդելին սնվող տվյալների մեջ ինչ-որ անոմալի բան են գտնում: Պարզապես այն, ինչ ձեզ հարկավոր է այս առաջադրանքի համար: Մնում է միայն ընտրել, թե որ ավտոկոդավորիչը հարմար է այս առաջադրանքի համար: Ավտոկոդավորիչի ճարտարապետական առումով ամենապարզ ձևը առաջընթաց, չվերադարձվող նեյրոնային ցանցն է, որը շատ նման է.
Այնուամենայնիվ, ավտոկոդավորիչների և MLP-ների միջև տարբերությունն այն է, որ ինքնակոդավորիչում ելքային շերտն ունի նույն թվով հանգույցներ, ինչ մուտքային շերտը, և որ X մուտքագրով տրված Y թիրախային արժեքը կանխատեսելու համար մարզվելու փոխարեն, ինքնակոդավորիչը մարզվում է: վերակառուցել իր սեփական X-երը: Հետևաբար, Autoencoder-ները չվերահսկվող ուսուցման մոդելներ են:
Autoencoder-ի խնդիրն է գտնել ժամանակի r0 ... rn ինդեքսները, որոնք համապատասխանում են X մուտքային վեկտորի անոմալ տարրերին: Այս էֆեկտը ձեռք է բերվում քառակուսի սխալի որոնմամբ:
Նկար 6. Սինխրոն ինքնակոդավորիչ
Ինքնակոդավորիչի համար ընտրվել է
Կեղծ պոզիտիվները նվազագույնի հասցնելու մեխանիզմ
Հաշվի առնելով այն հանգամանքը, որ առաջանում են տարբեր աննորմալ իրավիճակներ, ինչպես նաև նեյրոնային ցանցի անբավարար վերապատրաստման հնարավոր իրավիճակը, մշակվող անոմալիաների հայտնաբերման մոդելի համար, որոշվեց, որ անհրաժեշտ է մշակել կեղծ դրականները նվազագույնի հասցնելու մեխանիզմ: Այս մեխանիզմը հիմնված է կաղապարի բազայի վրա, որը դասակարգված է ադմինիստրատորի կողմից:
Կեղծ պոզիտիվները նվազագույնի հասցնելու հիմնական սկզբունքը ստանդարտների տվյալների բազայի հավաքումն է օպերատորի օգնությամբ, որը դասակարգում է նեյրոնային ցանցերի միջոցով հայտնաբերված կասկածելի դեպքերը: Այնուհետև դասակարգված ստանդարտը համեմատվում է այն դեպքի հետ, որը հայտնաբերել է համակարգը, և եզրակացություն է արվում այն մասին, թե արդյոք գործը կեղծ է կամ հանգեցնում է ձախողման: DTW ալգորիթմն օգտագործվում է ճշգրիտ երկու ժամանակային շարքերի համեմատության համար: Մինիմալացման հիմնական գործիքը դեռ դասակարգումն է: Ակնկալվում է, որ մեծ թվով տեղեկանք գործեր հավաքելուց հետո համակարգը կսկսի ավելի քիչ հարցնել օպերատորին՝ դեպքերի մեծ մասի նմանության և նմանատիպ դեպքերի առկայության պատճառով:
Արդյունքում, վերը նկարագրված նեյրոնային ցանցի մեթոդների հիման վրա ստեղծվել է փորձնական ծրագիր՝ կանխատեսելու «Web-Consolidation» համակարգի ձախողումները: Այս ծրագրի նպատակն էր, օգտագործելով մոնիտորինգի տվյալների և նախկին խափանումների վերաբերյալ առկա արխիվը, գնահատել այս մոտեցման իրավասությունը մեր ծրագրային համակարգերի համար: Ծրագրի սխեման ներկայացված է ստորև՝ Նկար 7-ում:
Նկար 7. Անհաջողության կանխատեսման սխեման՝ հիմնված մետրային տարածության վերլուծության վրա
Դիագրամում կարելի է առանձնացնել երկու հիմնական բլոկ՝ մոնիտորինգի տվյալների հոսքում ժամանակի անոմալ ժամանակահատվածների որոնում (չափանիշներ) և կեղծ պոզիտիվները նվազագույնի հասցնելու մեխանիզմ: Նշում․
Հետևյալը մշակման արդյունքում ստացված մոնիտորինգի համակարգի միջերեսն է (Նկար 8):
Նկար 8. Փորձարարական մոնիտորինգի համակարգի ինտերֆեյս
Ինտերֆեյսը ցուցադրում է անոմալիայի տոկոսը՝ հիմնված ստացված չափումների վրա: Մեր դեպքում ստացականը մոդելավորվում է։ Մենք արդեն ունենք մի քանի շաբաթվա բոլոր տվյալները և աստիճանաբար բեռնում ենք դրանք ձախողման տանող անոմալիայի դեպքը ստուգելու համար։ Ստատուսի ստորին տողում ցուցադրվում է տվյալ պահին տվյալների անոմալիայի ընդհանուր տոկոսը, որը որոշվում է ավտոմատ կոդավորիչի միջոցով: Նաև առանձին տոկոս է ցուցադրվում կանխատեսված չափումների համար, որը հաշվարկվում է RNN LSTM-ի կողմից:
Անոմալիաների հայտնաբերման օրինակ՝ հիմնված պրոցեսորի աշխատանքի վրա, օգտագործելով RNN LSTM նեյրոնային ցանցը (Նկար 9):
Գծապատկեր 9. RNN LSTM հայտնաբերում
Բավականին պարզ դեպք, ըստ էության սովորական արտաքուստ, բայց տանող համակարգի ձախողման, հաջողությամբ հաշվարկվել է RNN LSTM-ի միջոցով: Անոմալիայի ցուցիչը այս ժամանակահատվածում 85–95% է, 80%-ից բարձր ամեն ինչ (շեմը որոշվել է փորձնականորեն) համարվում է անոմալիա։
Անոմալիայի հայտնաբերման օրինակ, երբ համակարգը չի կարողացել բեռնել թարմացումից հետո: Այս իրավիճակը հայտնաբերվում է autoencoder-ի կողմից (Նկար 10):
Նկար 10. Ավտոկոդավորիչի հայտնաբերման օրինակ
Ինչպես տեսնում եք նկարից, PermGen-ը խրված է մեկ մակարդակի վրա: Ավտոկոդավորիչը սա տարօրինակ թվաց, քանի որ նախկինում նման բան չէր տեսել: Այստեղ անոմալիան մնում է 100%-ով, քանի դեռ համակարգը չի վերադառնում աշխատանքային վիճակի։ Բոլոր չափումների համար ցուցադրվում է անոմալիա: Ինչպես նշվեց ավելի վաղ, autoencoder-ը չի կարող տեղայնացնել անոմալիաները: Օպերատորը կոչված է կատարել այս գործառույթը այս իրավիճակներում:
Ամփոփում
PC «Web-Consolidation»-ը մշակվում է արդեն մի քանի տարի: Համակարգը բավականին կայուն վիճակում է, գրանցված միջադեպերի թիվը քիչ է։ Այնուամենայնիվ, հնարավոր եղավ գտնել անոմալիաներ, որոնք հանգեցնում էին ձախողման 5-10 րոպե առաջ ձախողման առաջանալուց: Որոշ դեպքերում, խափանման մասին նախապես ծանուցումը կօգնի խնայել նախատեսված ժամանակը, որը հատկացվում է «վերանորոգման» աշխատանքների իրականացմանը:
Կատարված փորձերի հիման վրա դեռ վաղ է վերջնական եզրակացություններ անել։ Առայժմ արդյունքները հակասական են։ Մի կողմից, պարզ է, որ նեյրոնային ցանցերի վրա հիմնված ալգորիթմներն ի վիճակի են գտնել «օգտակար» անոմալիաներ։ Մյուս կողմից, մնում է կեղծ պոզիտիվների մեծ տոկոս, և նեյրոնային ցանցում որակավորված մասնագետի կողմից հայտնաբերված բոլոր անոմալիաները չեն կարող հայտնաբերվել: Թերությունները ներառում են այն փաստը, որ այժմ նեյրոնային ցանցը պահանջում է վերապատրաստում ուսուցչի հետ նորմալ աշխատանքի համար:
Խափանումների կանխատեսման համակարգը հետագայում զարգացնելու և այն բավարար վիճակի հասցնելու համար կարելի է մի քանի ուղիներ նախատեսել։ Սա անոմալիաների դեպքերի ավելի մանրամասն վերլուծություն է, որոնք հանգեցնում են ձախողման, ինչը պայմանավորված է համակարգի վիճակի վրա մեծապես ազդող կարևոր չափորոշիչների ցանկին ավելացմամբ և դրա վրա չազդող ավելորդներից հրաժարվելով: Բացի այդ, եթե մենք շարժվենք այս ուղղությամբ, մենք կարող ենք փորձեր անել մասնագիտացնել ալգորիթմները հատուկ մեր դեպքերի համար, որոնք անոմալիաներ են բերում, որոնք հանգեցնում են ձախողումների: Մեկ այլ ճանապարհ էլ կա. Սա նեյրոնային ցանցերի ճարտարապետության բարելավում է և դրանով իսկ մեծացնում է հայտնաբերման ճշգրտությունը՝ ուսուցման ժամանակի կրճատմամբ:
Ես իմ շնորհակալությունն եմ հայտնում իմ գործընկերներին, ովքեր օգնեցին ինձ գրել և պահպանել այս հոդվածի արդիականությունը.
Source: www.habr.com