TotalLog - журнал всех запросов MODX: кто, что, откуда, чем закончилось и сколько стоило.

Журнал всех запросов, которые обрабатывает MODX: кто, что, откуда, чем закончилось, сколько выполнялось и во сколько запросов к базе обошлось. Плагин работает на OnMODXInit, поэтому в журнал попадают и запросы к API, и обработчики компонентов, и старый код мимо API, и запуски из консоли.

Внимание. Компоненту нужен gtsAPI — на нём держатся REST-слой и таблицы интерфейса. Он ставится автоматически как зависимость, отдельно скачивать не нужно.

Проверено установкой на чистые сайты: MODX 2.8.9 + PHP 7.4 + MySQL 5.7, MODX 3.2.3 + PHP 8.3 + MySQL 5.7, MODX 3.2.3 + PHP 8.3 + MySQL 8.2.

Зачем
1. Кто что изменил. Запись остаётся, даже если действие прошло мимо API — старым кодом или из консоли.
2. Какую нагрузку и откуда создают запросы: время выполнения, число SQL-запросов и время в базе, страница-источник.

Быстрый старт
После установки зайти в админке в Компоненты->Журнал запросов. Журнал начинает писать сразу, настраивать ничего не нужно.


Полный журнал можно вывести и на страницу сайта:
[[!mixVue? &app=`totallog` &config=`{"module":"TLAll"}`]]
Второй интерфейс — для пользователей: начальник отдела смотрит, что делали на его участке, не дёргая администратора. Он видит не «POST /api/…», а человеческий текст. Задаются заголовок и компоненты, записи которых показывать:
[[!mixVue? &app=`totallog` &config=`{"module":"TLUser","component":"gcNaryadLink,newsmena","title":"Кто менял наряды"}`]]


Свои описания вместо «POST /api/…»
Расшифровку делает сниппет-анализатор: он вызывается в момент записи и превращает запрос в осмысленное описание. Под свои задачи склонируйте сниппет TotalLogAnalyzer, опишите в нём свои действия, укажите имя копии в настройке totallog_analyzer_snippet — и заведите нужные доп. поля в gtsAPI, тогда журнал покажет ваши сущности отдельными колонками.

Что попадает в запись
Пользователь и IP, URL, метод, действие, компонент и таблица, страница-источник ссылкой, REQUEST и тело запроса (пароли и токены маскируются, крупные тела обрезаются), исход с причиной отказа, длительность, число SQL и время в базе, id соединения MySQL с окном времени — для разбора по бинлогу, если он включён.

Чтобы не заваливало
Шум выключается по частям, каждое своим рубильником со списком масок:
totallog_log_get         писать ли GET (по умолчанию нет)
totallog_log_service     служебные действия: просмотры, автодополнения
totallog_log_modx        процессоры менеджера MODX
totallog_skip_urls       маски адресов, которые не логировать
totallog_days            срок хранения в днях, чистка идёт сама
Гитхаб tuniekov/TotalLog
Гитхаб gtsAPI touol/gtsAPI

modstore
Александр Туниеков
modx.pro
52
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0