April 12, 2019

Конкурсное задание Brandquad: easy

Задача: разработать Django-приложение для обработки и агрегации Apache-лога.

В составе приложения должна быть Management command, которая на вход принимает ссылку на лог файл определенного формата, скачивает ее, парсит и записывает в БД. При загрузке, обработке и записи данных в бд нужно выводить прогресс-бар.

Ссылка для теста - размер файла 186 Мб.

В приложении должна быть модель, которая описывает распарсенные данные из лога.

Поля модели должны содержать минимум:

  1. IP адрес, Дата из лога
  2. http метод (GET, POST,...)
  3. URI запроса
  4. Код ошибки
  5. Размер ответа
  6. Другие данные из лога - опциональны.

На frontend необходимо реализовать вывод данных, описанных в модели, с пагинацией и поиском.

Под таблицей также необходимо вывести статистику? которая будет содержать следующие данные:

  1. Количество уникальных IP
  2. Top 10 самых распространенных IP адресов в формате таблички, где указан IP адрес и количество его вхождений.
  3. Количество GET, POST, ... (http методов)
  4. Общее количество переданных байт (суммарное значение по полю "размер ответа")
  5. Учесть, что эти агрегированные данные должны меняться при использовании поиска.

Плюсами будут:

  • Хорошее оформление и комментирование кода (не излишнее, но хорошее);
  • Оформление frontend части;
  • Упаковка проекта в docker/docker-compose;
  • Оптимизация запросов к БД;
  • Кнопка экспорта данных на таблице с результатами, при нажатии на которую будет скачиваться файлик в формате XLSX с результатами выдачи