Автоматизиране на събирането на използването на лицензи, търсене в мрежата за ML модел, прогнозиране на бъдещото използване, предупреждение преди достигане на прага

В мобилната мрежа има различни мрежови елементи, които изпълняват определена мрежова функция. Всеки мрежов елемент има множество контролирани от лиценз елементи за ограничаване на функцията и капацитета на определен ресурс. Например, телекомуникационните доставчици ще контролират броя на LTE свързаните потребители, ако операторите искат да обслужват повече потребители едновременно, те трябва да закупят съответния лиценз от своя доставчик. В рамките на мобилния оператор стандартната процедура за закупуване може да бъде дълга и да струва няколко месеца. По този начин, като инженерен отдел, трябва да предвидим бъдещото използване на лиценза няколко месеца по-късно в момента, в който купуваме лиценза от доставчици.

Предишен работен процес

В миналото, на първо място, събирахме ръчно записа за използване на лиценза. Доставчиците на оборудване обикновено предоставят GUI, в който можем да въвеждаме команди въз основа на техния собствен синтаксис на езика човек-машина (MML), за да покажем текущото използване на лиценза на екрана. След това копирахме информацията и я записахме под формата на Excel. Това беше досадна работа и понякога отговорният персонал може да забрави да покаже или файлът на Excel да се повреди. Не можем да правим това толкова често, тъй като отнема твърде много работна ръка.

За щастие, доставчиците на оборудване също ни позволяват да се свързваме по телнет към машина, наречена Система за управление на мрежата (NMS). Можем да въвеждаме специални команди за взаимодействие с различни мрежови елементи под него.

Нов автоматизиран работен процес

За да автоматизираме този процес, ние използваме пакета на библиотеката на Python telnetlib за събиране на използването на лиценза. Модулът telnetlib предоставя клас Telnet, който имплементира протокола Telnet.

И след това декодираме изходния резултат в полезна DataFrame от pandas. Проектирахме нашата таблица с база данни като преходна, тъй като елементите на лиценза могат да бъдат добавени или премахнати, ако мрежовите елементи са били надстроени. Промяната на схемата на таблицата всеки път не е осъществима: първо, има няколко надстройки на различни мрежови елементи всяка седмица, второ, не можем да знаем предишни надстройки кои лицензни елементи са добавени или премахнати. Ние финализирахме колоните като:

result_time: времето за събиране;
object_name: името на мрежовия елемент;
resource_name: името на лиценза елемент;
total_resource: капацитетът на лиценза, т.е. максимално допустимото количество от този лиценз;
used_resource: заетото количество на елемента на лиценза към този момент момент;
използване: просто използван_ресурс, разделен на общ_ресурс.

Тази структура може да добавя или премахва произволни лицензионни елементи без промяна на схемата на базата данни.

(P.S. Това е досадно натоварване, тъй като всеки мрежов елемент има своя команда и формат на показване. Трябва да персонализираме един по един.)

Най-накрая събрахме всички лицензни елементи! Общо над 1782 различни елемента в 60 мрежови елемента.

Прогнозиране на използването на лиценза

След като имаме данните, вече можем да използваме модела ARIMA за прогнозиране. ARIMA (Авторегресивна интегрирана подвижна средна) е модел за машинно обучение за анализиране и прогнозиране на данни от времеви серии. Това отговаря на целта ни да прогнозираме зависимо от времето използване на лиценз. Повече подробности можете да намерите в този пасаж: „Как да създадете ARIMA модел за прогнозиране на времеви редове в Python“ от „Джейсън Браунли“.



Извършихме търсене в мрежа с помощта на StatsModels за намиране на най-добрия набор от параметри на (p,d,q) от общо 63 комбинации. Извършихме нашето търсене в мрежата почти една седмица!

След това имаме най-добрия параметър за всеки лиценз и извършваме прогнозата всеки ден. Не е за вярване в миналото, че можем да избираме само някои важни лицензионни елементи и успяваме да предвидим само използването на всяко тримесечие. Но сега можем да прогнозираме използването на нашия лиценз всеки ден и да ни предупреждаваме, ако използването на лиценза е в опасност.

Ако използването на лиценза достигне 80% за 1 месец, получаваме червен сигнал. Трябва да се действа незабавно. В противен случай, ако използването на лиценза достигне 80% за 3 месеца, той дава оранжев сигнал и накрая ще получим жълт сигнал, ако използването достигне 80% за 6 месеца.

Заключение

Този проект значително намали натоварването ни при събиране на данни за използването на лиценза и изградихме система за предупреждение, която ни напомня да закупим лиценза, преди да се изразходва.

За да видите повече за този проект, вижте връзката към моя Github, достъпна тук.