Codeigniter поиск по БД и архивам NAT логов

Андрей12 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
29.02.2016

Доработка существующего проекта на Codeigniter.

1) Поиск по архивированным логам двух NAT серверов.

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

1. Пользователь на странице вводит параметры запроса: src_real_ip:port, dst_real_port, интервал времени (но не более суток)

2. Запрос отправляется на сервер и записываеься в БД в таблицу запросов (например назвать requests).

3. PHP скрипт опрашивает таблицу запросов скажем раз в 1-2 минуты и при наличии нового запроса:

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

- проверяет, нет ли такого файла локально, уже скачанного (экономим время на закачку), если нет - скачивает

- разворачивает архив в текстовый файл

- сканирует файл на параметры запроса и сохраняет их в другой файл.

- опционально данные из из предыдущего запроса могут быть залиты в таблицу результатов запросов, чтобы можно было повторно их не делать (например request_reports)

4. Страница статуса запросов показывает состояние запроса на каждом этапе (по информации из соответствующей таблицы). При готовности запроса можно перейти и посмотреть данные

т.е. можно сделать запрос и зайти за результатами позднее

2) Поиск по таблице БД.

Добавлена таблица billdata.radacct со следующей структурой

`radacctid` - уникальный идентфикатор

`acctsessionid` - идентификатор сессии

`username` - формат: имя_сети:vlan-port:mac_адресс

`group_name` - группа в виде профиля + статус

`account` - аккаунт

`mobile` номер мобильного, указанного при авторизации через смс

`nasipaddress` - ip address ISG

`nasportid` - порт ISG

`acctstarttime` - начало сеанса

`acctstoptime` - конец сеанса

`acctsessiontime` - длительность сеанса в секундах

`acctinputoctets` - байт принято от абонента

`acctoutputoctets` - байт отправлено абоненту

`calledstationid` - пусто

`callingstationid` - mac адрес

`framedipaddress` - ip адрес, выданный в сеанс

`session_start`- начало сеанса для контроля даты/времени

`session_end`- конец сеанса для контроля даты/времени

`session_last_update`- последнее обновление сеанса для контроля даты/времени

`opdata_export` - экспорт для ФСБ

Данные обновляются каждый час.