https://github.com/vildan-valeev/apache_log_parser_service
Microservice for parse apache logs
https://github.com/vildan-valeev/apache_log_parser_service
django django-rest-framework dramatiq ofelia postgresql
Last synced: 2 months ago
JSON representation
Microservice for parse apache logs
- Host: GitHub
- URL: https://github.com/vildan-valeev/apache_log_parser_service
- Owner: vildan-valeev
- Created: 2022-04-06T06:03:06.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-05-02T12:53:17.000Z (about 4 years ago)
- Last Synced: 2025-01-19T09:09:45.796Z (over 1 year ago)
- Topics: django, django-rest-framework, dramatiq, ofelia, postgresql
- Language: Python
- Homepage:
- Size: 164 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Apache log parser
Приложение, которое является агрегатором данных из access логов apache
с сохранением в БД. Разбор файлов выполняется по cron'у.
В приложении реализованы функции:
- авторизация (пользователи в БД)
- просмотр данных сохраненных в БД (группировка по IP, по дате, выборка по промежутку дат)
- API для получения данных в виде JSON (смысл тот же: получение данных по временному промежутку, возможность
группировать/фильтровать по IP)
- конфигурация через файл настроек (где лежат логи, маска файлов, и все, что Вам потребуется для настройки приложения)
СУБД: mysql/postgresql
# Запуск
0. добавить LOG_PATH в .env.dev
1. запуск
```sh
$ docker-compose -f docker-compose.dev.yml up --build
```
2. закидываем дефолтные данные, включая админа
```sh
$ docker exec -it app poetry run python manage.py loaddata default_data.json
```
3. админка логин - admin, пароль - 25658545
`http://127.0.0.1:8000/api/swagger/` - документация API
`http://127.0.0.1:8000/admin/` - админка
# Пояснения
1. Перед запуском необходимо настроить/изменить путь LOG_PATH в файле .env - указать директорию откуда будут браться
файлы логов для агрегатора по крону(по команде pwd можно определить путь и вставить). В локальной разработке путь до файлов может быть любой, в development,
т.е. через docker из контейнера путь до файлов только через директорию logs к которой примонтирована директория из
переменных окружения LOG_PATH в docker-compose
2. Если нет переменной LOG_PATH, то выставляется дефолтный путь - директория logs внутри проекта
и ожидается что файлы будут там появляться.
3. Периодичность проверки и обработки логов установлена по дефолту - в 1 час
(для тестов 15 сек - надо раскомментировать в конфиге ofelia).
4. Начал реализовывать функционал на сelery + celery-beat, но как выяснилось django-celery-beat отвалилась
и не ставится на Django выше 4 версии. Можно было бы откатить версии и продолжить, но было принято решение
создать новый велосипед :-))).
Периодичность выполняется по кастомной команде, запускает ее шедулер [Ofelia](https://github.com/mcuadros/ofelia).
Дальнейшая обработка файлов передается в задачи Dramatiq
# Database dump/load
```shell
$ docker exec -it app sh -c "poetry run python manage.py dumpdata --natural-foreign --natural-primary --exclude=contenttypes --exclude=auth.Permission --exclude=admin.logentry --exclude=sessions.session --indent 4 > default_data.json"
docker exec -it app poetry run python manage.py loaddata default_data.json
```
## Enter to container
```sh
$ docker exec -it bash
$ docker exec -it poetry run
```