Разработка ПО: SNMP и подсчет трафика

Один из наших клиентов обратился с задачей в рамках которой необходимо ежемесячно считать 95%
статистику по трафику клиентов с целью реализации burstable billing. Такой подход позволяет при
анализе утилизации вашего канала различными клиентами исключить редкие пики в скорости и смотреть на более актуальную картину. Подробности здесь https://ru.wikipedia.org/wiki/Burstable_billing
Задача была реализована на языке Python. Статистика собирается по SNMP протоколу со свичей с задаваемой в настройках периодичностью. Были учтены различные нюансы. Например, возможный сброс
SNMP счетчиков свитчах, вероятность того, что скрипт, может быть запущен не четко по заранее
указанным временным промежуткам, в связи с чем статистику должны быть усреднена каким-либо
алгоритмом исходя из предпочтений клиента.
Скрипт позволяет выводить текущие значения счетчиков со свичей, показывать текущую 95%
статистику, задавать для свичей номера стоек, а для портов человеко-читаемые псевдонимы (например, имена клиентов).
Для хранения статистики используется NoSQL БД MongoDB. Помимо консольного доступа данные по
статистике можно получить через REST API релизованного с использованием выскопроизводительного
фреймворка Falcon с Cython и использованием Gevent для поддержки асинхронных операций, работающем на стеке Nginx + uWSGI + Python что позволяет добиться хорошей производительности и
отзывчивости API на больших нагрузках.
Качественно реализуем API для доступа извне к вашему проекту, напишем серверное приложени,
панель управления. Поможем автоматизировать настройку серверов с помощью Puppet манифестов и
модулей, либо playbook-ов для Ansible.
Помощь в сопровождении процесса разработки: поднятие приватного репозитория с помощью gitlab,
помощь в написании Vagrant файлов с любыми provider-ами (docker, vmware, virtualbox) и provisioner-ами (ansible, puppet, shell) для эмуляции рабочего окружения на рабочих машинах
разработчиков. Помощь в автоматизации развертывания приложений на серверах.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *