Разработать Django приложение для обработки агрегации Apache лога сост

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Разработать Django приложение для обработки и агрегации Apache лога.
В составе приложения должна быть Management command, которая на вход принимает ссылку на лог файл определенного формата, скачивает ее, парсит и записывает в БД. При загрузке, обработке и записи данных в бд нужно выводить прогресс бар.
Ссылка для теста http://www.almhuette-raith.at/apache-log/access.log (размер файла 186 Мб)
В приложении должна быть модель, которая описывает распарсенные данные из лога. Поля модели должны содержать минимум: IP адрес, Дата из лога, http метод (GET, POST,...), URI запроса, Код ошибки, Размер ответа. Другие данные из лога - опциональны.
На фронтенд необходимо реализовать вывод данных, описанных в модели, с пагинацией и поиском.
Под таблицей также необходимо вывести статистику которая будет содержать следующие данные:
Количество уникальных IP
Top 10 самых распространенных IP адресов, в формате таблички где указан IP адрес и количество его вхождений
Количество GET, POST, ... (http методов)
Общее кол-во переданных байт (суммарное значение по полю "размер ответа")
Учесть, что эти агрегированные данные должны меняться при использовании поиска.
Плюсами будут:
Хорошее оформление и комментирование кода (не излишнее, но хорошее);
Оформление frontend части;
Упаковка проекта в docker/docker-compose;
Оптимизация запросов к БД;
Кнопка экспорта данных на таблице с результатами, при нажатии на которую будет скачиваться файлик в формате XLSX с результатами выдачи;
Backend Middle - Тяжелая
Написать сервис, используя Django Framework, со следующим функционалом:
Проверка определенного в сервисе почтового ящика по IMAP протоколу
Сохранение новых писем, отфильтрованных по содержанию в заголовке письма определенного в сервисе тега, например, [ALERT].
Для хранения писем используется Elasticsearch, минимальный набор полей для хранения:
Тема письма
Отправитель
Дата получения
Тело письма
Реализовать интерфейс полнотекстового поиска с русской морфологией (необходим дополнительный плагин для Elasticsearch, https://github.com/imotov/elasticsearch-analysis-morphology) по записей в Elasticsearch.
Для найденных писем необходимо:
подсвечивать поисковые фразы (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html)
иметь возможность экспорта в zip-архиве
Управление данными о почтовом ящике и списке тегов можно реализовать, используя стандартную админку Django
User Interface без каких-либо требований, но можно и Bootstrap натянуть.