Собственная система аналитики для bozheslav.ru без подключения внешних счётчиков. Вся статистика посещений обрабатывается и хранится на своём VPS, что важно для производительности (не грузит сторонние скрипты) и приватности.
— Запись в БД идёт через queue, чтобы не блокировать response-time пользователя
— GeoIP-lookup кэшируется на час для повторных посещений с того же IP
— MaxMind база обновляется автоматически через еженедельный cron
— Индексы на visits(created_at, ip) для быстрых выборок по периодам
Стек: PHP 8.3, Laravel 12, Filament 3, PostgreSQL 16, MaxMind GeoLite2, Laravel Queue.
— Middleware TrackVisit — перехватывает каждый HTTP-запрос, сохраняет в visits таблицу: IP, User-Agent, referrer, путь, timestamp
— GeoIP через MaxMind GeoLite2 — по IP определяется страна, город, провайдер. База MaxMind обновляется cron-задачей
— Security Log: auth.log парсится и отображается в Filament — видны все попытки SSH-входа (успешные и неуспешные)
— Fail2Ban viewer в админке: список забаненных IP с причинами и датами банов, интегрирован в Filament
— Dashboard с виджетами: график посещений, топ страниц, гео-распределение трафика, статистика по источникам
— Фильтрация ботов: отсекаются известные crawler'ы по User-Agent, чтобы статистика была "живой"