Проект сделан командой Pegasus в рамках хакатона VirusHack 2020.
Наше решение использует логи Radius'а для прогнозирования нагрузки на сеть.
Фронтенд решения на React содержит визуализацию основных показателей Radius'а и данных с сетевых устройств.
Бэкенд - Python + Flask.
При возникновении подозрительных событий соответствующие уведомления направляются на фронтенд и в бот Telegram.
Показатели с SNMP Traps поступают в онлайн режиме в специализированные сборщик и хранилище, после чего отображаются визуально на дэшборде (используется связка Prometheus-Grafana).
Необходимо установить питоновские пакеты из файла requirements.txt
.
Нужно скачать и разархивировать в папку /data
файлы по ссылке https://yadi.sk/d/bdZNeshwy2slmQ
.
to run server run in root directory (port 4500):
python backend.py
or
python3 backend.py
json
{
"date": date
}
available 24 hours from '2020-04-30 00:00:00' untill '2020-04-30 23:00:00'
example:
date = 2020-04-30 16:00:00
json
{
"xticks" : [],
"start_stop_alige_count_Start": [],
"start_stop_alige_count_Stop": [],
"type__count_Billing-Accounting": [],
"type__count_Billing-Authentication": [],
"mean_delay": [],
"mean_input_trafic": [],
"mean_output_trafic": [],
"count_failed": [],
"start_stop_alige_count_Start_pred": [],
"start_stop_alige_count_Stop_pred": [],
"type__count_Billing-Accounting_pred": [],
"type__count_Billing-Authentication_pred": [],
"mean_delay_pred": [],
"mean_input_trafic_pred": [],
"mean_output_trafic_pred": [],
"count_failed_pred": [],
}
pay attention:
xticks has size of n
and target_pred has a size of n
, but target has a size of n-1
because target has all real values of time series and target_pred has a size of the history of predicted values and forecasting for the next hour
{
"xticks" : [],
"temp" : [],
"mem" : [],
"cpu" : []
}
{
"hour": hour
}
sample value:
"hour": "05-03 00"
{
"failed_alert" : [list_of_users, list_of_values],
"stops_alert" : [list_of_users, list_of_values],
"tr_inp_zero_alert" : [list_of_users, list_of_values],
"tr_out_zero_alert" : [list_of_users, list_of_values]
}
Запустить отдельным фоновым процессом из папки alerting
команду python static_bot_runner.py
. Для корректной работы может понадобиться VPN.
- Установить
nvm
(перелогиниться после этого):curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
- Установить
node
:nvm install node
cd frontend/alarms
npm install
npm start
В браузере Chrome
откроется страница приложения на localhost:4000
.
См. файл hardware/readme.md