Автоматизация сбора данных об использовании лицензий, поиск в сетке для модели машинного обучения, прогнозирование использования в будущем, оповещение перед достижением порогового значения

В мобильной сети существуют различные сетевые элементы, которые выполняют определенные сетевые функции. Каждый сетевой элемент имеет множество элементов, контролируемых лицензией, для ограничения функций и возможностей определенного ресурса. Например, поставщики телекоммуникационных услуг будут контролировать количество подключенных пользователей LTE, если операторы хотят одновременно обслуживать больше пользователей, они должны приобрести соответствующую лицензию у своего поставщика. Внутри мобильного оператора стандартная процедура покупки может быть длительной и стоить несколько месяцев. Таким образом, как технический отдел, мы должны прогнозировать будущее использование лицензии через несколько месяцев, когда мы покупаем лицензию у поставщиков.

Предыдущий рабочий процесс

В прошлом, в первую очередь, мы собирали запись об использовании лицензии вручную. Поставщики оборудования обычно предоставляют графический интерфейс, в котором мы можем вводить команды на основе их собственного синтаксиса человеко-машинного языка (MML) для отображения текущего использования лицензии на экране. Затем мы скопировали информацию и сохранили ее в виде Excel. Это была утомительная работа, и иногда ответственный персонал мог забыть отобразить или повредить файл Excel. Мы не можем делать это так часто, так как это требует слишком много рабочей силы.

К счастью, поставщики оборудования также позволяют нам подключаться через telnet к машине под названием Network Management System (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, доступную здесь.