Используя Yii2, реализовать приложение, которое является агрегатором данных из access логов apache с сохранением в БД. Разбор файлов должен выполняться по cron'у (команда Yii2).
В приложении реализовать такие функции:
- авторизация (пользователи в БД)
- просмотр данных сохраненных в БД (группировка по IP, по дате, выборка по промежутку дат)
- API для получения данных в виде JSON (смысл тот же: получение данных по временному промежутку, возможность группировать/фильтровать по IP)
- конфигурация через файл настроек (где лежат логи, маска файлов, и все, что Вам потребуется для настройки приложения)
Для исполнения интерфейса использовать bootstrap
Клонировать репозиторий, указать в настройках доступ к база данных, запустить миграцию.
'DocumentRoot' в конфиге виртуального хоста должен указать на папку web.
Путь для файла с логами и регулярное выражения для их чтения указан в файле basic/config/params.php, как параметры как параметры 'log_file' и 'log_parse_reg' соответственно.
Параметр 'log_file' по по-умолчанию указывает на файл logs/access.log.
Доступ к базе данных прописан в basic/config/db.php.
Команда для чтения лога запускается через basic/yii parse-log.
Получить логи через Api в формате JSON:
curl -i -g --user 100token: "http://gds/api"
где:
http://gds - имя домена, где развернут сайт
100token - 'accessToken' пользователя, по которому мы его авторизуем
Если нужно отфильтровать логи по интервалу дат или/и по имени хоста, нужно добавить к url запроса параметр 'search' c подпараметрами.
curl -i -g --user 100token: "http://gds/api?search[begin]=2017-01-19&search[end]=2017-01-21&search[host]=127"
подпараметры в параметре 'search':
'begin' - начало временного интервала
'end' - конец временного интервала
'host' - c какой строки должно начинаться имя хоста
Примечание: для получения логов за один день достаточно указать его в подпараметрах 'begin' и 'end'.