Я создал инфраструктуру, которая регистрирует все виды действий пользователя от внешнего JS-приложения до вызова ajax. По соображениям производительности он основан на асинхронных четных и буферизующих действиях до тех пор, пока некоторое число не будет поставлено в очередь (обычно 10) или событие закрытия окна. Эти данные хранятся в серверной базе данных (у нас фиксированная схема SQL, поэтому мы нормализовали все журналы в определенном формате).
Мы нашли, что это очень хороший инструмент для отладки и аудита. Он потребляет скромную полосу пропускания, и у нас есть только несколько сотен одновременных пользователей, но я думаю, что при хорошей конструкции сервера он может хорошо масштабироваться (мы используем два набора серверов в двух центрах обработки данных).
Это помогает классифицировать «действия», поэтому у нас есть некоторые навигационные действия для изменения фокуса, некоторые api-действия для других вызовов ajax, журналы ошибок для чего-то необычного, некоторые входные действия для редактирования данных формы и т. Д. Мы всегда регистрируем идентификатор сеанса, идентификатор пользователя, отметка времени и т. д. Лучшая часть - это то, что фреймворк делает все это, и разработчику приложения не нужно думать об этом, если они явно не хотят вызывать функцию регистрации.
Ваш пробег будет варьироваться в зависимости от ваших требований / условий, но он очень хорошо работает для нас.