production-request 0.7.0
Metric collector for production
License: BSD

production-request
===============================

author: BARS Group

Описание
--------

Позволяет логировать метрики запросов
(клиенсткое время, серверное время, время SQL) в production-средах


Установка
---------

Установка производится командой
-e git+https://stash.bars-open.ru/scm/budg/production_request.git@master#egg=production_request. 
При этом необходимо, чтобы при запуске *pip install* в качестве альтернативного 
index-url был указан http://pypi.bars-open.ru/simple/ 


Настройка
---------

Для подключения логирования необходимо:

1. В качестве *DATABASE_ENGINE* указать *production_request*
2. Добавить *ProductionRequestLoggingMiddleware* в перечень *MIDDLEWARE*
3. Подключить к рабочему столу *production_request_client.js* и *xhr_interceptor.js*
4. Зарегистрировать *ProductionRequestPack* в контроллере
5. Выполнить в инициализации шаблона рабочего стола функцию *startLogging*. 
Данная функция принимает на вход URL action'а *action_save_client_log* из предыдущего пункта
6. Если необходимо логировать celery-task, то в *CELERY_IMPORTS* нужно добавить *'production_request.celery_handlers'* 
    
## История изменений

**0.7.0**
- Добавлена поддержка django 4.0

**0.6.8**
- Исправлено получение параметра path при логировании.

**0.6.7**
- Добавлена совместимость с Django>=3.0

**0.6.6**
- Исправлена выдача данных для _client части логов в связи с добавлением поддержки asyncpg

**0.6.5**
- Добавлена поддержка asyncpg

**0.6.4**
- Интервалы визуализаций "Суммарное время выполнения запросов" и "Среднее время выполнения запросов" снижены с 2 часов до 5 минуты

**0.6.3**
- В класс перечисления Типов операций в sql добавлен атрибут списка типов пишущих sql-запросов. В класс данных потока production-request добавлен метод проверки наличия пишущих запросов.

**0.6.2**
- Для диапазонов с бесконечной границей убрано поле "to" со значением null, которое приводило к ошибке импорта визуализаций в Stack Management 7.8.0

**0.6.1**
- Указание кодировки для файлов, без которой может упасть при импорте пакета на Python 2
- Добавлен Avg-блок визуализации для запросов

**0.6.0**
- Добавлен экспорт dashboard'а для elk

**0.5.7**
- Наименование совпадающих параметров в client- и server-логах унифицированы
- Исправлен README

**0.5.6**
- Добавлен собственный prerun-сигнал для Celery как точка расширения

**0.5.5**
- Добавлена возможность указывать кастомные атрибуты для сохранения в логах

**0.5.4**
- Исправлена ошибка логирования фоновых процессов

**0.5.3**
- Добавлено сохранение оригинального пути запроса для случаев, когда при выполнении делается redirect

**0.5.2**
- Удален неиспользуемый атрибут c_started

**0.5.1**
- Добавлено логирование статуса выполнения запроса (успешно/с ошибкой)
- Добавлено логирование алиасов БД, к которым выполнялись запросы
- Доработано логирование фоновых процессов
- Доработано округление float-параметров

**0.5.0**
- Убрана зависимость от m3
- Исправлена ошибка, когда при использовании нескольких подключений к БД данные по запросам подсчитывались только для default
- Добавлен подсчет количества дублирующих SQL-запросов

**0.4.2**
- Исправлено логирование времени в разрезе типов SQL-операций

**0.4.1**
- Добавлена совместимость с middleware Django 2.*

**0.4.0**
- Добавлен декоратор production_request для работы с запросами, отличными от web
- Исправлен подсчет памяти при конвертации единиц измерения
- Добавлен подсчет времени SQL в разрезе операций
- Добавлены обработчики для логирования celery-задач
- Добавлено логирование длительности и количества транзакций

**0.0.3.4**
- Отключена транзакция на action сохранения результата клиенсткого лога

**0.0.3.3**
- Добавлена обработка отрицательных значений в c_total

**0.0.3.2**
- Добавлена обработка не HTTP-request'ов
- Добавлено логирование имени хоста, на котором производилась обработка запроса

**0.0.3.1**
- Исправлена ошибка с обработкой exception в middleware

**0.0.3**
- Убрана зависимость от BaseEnumerate
- Изменено пространство имен c Ext3 на Ext
- В типы операций SQL добавлены COMMIT и SAVEPOINT
- Изменен алгоритм генерации uuid для уменьшения размера лога
- Добавлен id пользователя в параметры логирования
- Добавлены метрики памяти процесса в параметры логирования (экспериментально)
- Добавлен pid процесса в параметры логирования
- Добавлено отдельное логирование моментов входа и выхода запроса с минимальным набором параметров
- Добавлен отдельный модуль для логирования метрки процессов (CPU и memory) по имени
- Добавлено сохранение логов в файлы в виде валидного JSON
- В типы операций SQL добавлены JOIN, DISTINCT и GROUP BY


**0.0.2**
- Добавлено логирование количества SQL-запросов в разрезе типов на клиенте
- Добавлен подсчет количества sql-запросов в разрезе типов (select, insert, update, delete)
- При отключенном логировании на стороне клиента - заголовки http больше не отправлюятся, чтобы сократить размер ответа
- В метрики добавлен подсчет количества SQL запросов
- В метрики добавлен подсчет времени работы приложения без учета sql запросов
- В подсчет времени sql добавлен учет времени commit
- Исправлена сборка статики при создании пакета
- Обновлена информация по пакете