Appearance
Diagnostics Dashboard
EN
A developer-only debugging and monitoring dashboard, accessible at /api/diagnostics (HTML) and /api/diagnostics/api (JSON). Enabled only when debug=true; returns 404 in production.
What it does
Single-page vanilla JS app with 14 lazy-loaded tabs:
| Tab | What it shows |
|---|---|
| Service Health | PostgreSQL, 4 Redis DBs, S3, log file, Sentry — connectivity + latency |
| Environment | PHP version, extensions, memory/upload limits |
| Routes | All registered API routes with methods and middleware |
| Endpoint Tester | Interactive HTTP request tool (any method, headers, body, auth) |
| PHPUnit | Run full test suite, parsed testdox output |
| Database | Table browser: structure, indexes, constraints, paginated row data |
| Marketplace | User/product counts, status breakdown, price stats, top categories |
| Security & Auth | Failed logins, locked accounts, rate limits, password reset tokens |
| Search | Query frequency, zero-result queries, top makes/categories |
| Cache | Redis key inventory by prefix, hit rates, timing buffer stats |
| Audit | Admin action log with filters and pagination |
| Logs & Errors | Log viewer (tail + filters) and grouped exception dashboard |
| Performance | Request latency P50/P95/P99, error rate, slow endpoints |
| Architecture | Tech stack, dependencies, config overview |
How it works
- Page action (
/api/diagnostics) renders HTML with embedded JS - API action (
/api/diagnostics/api?check=<name>) returns JSON for each tab - 5 health check classes in
app/Diagnostics/Check/: Database, Redis, S3, LogFile, Sentry LogParserparses Monolog logs for the Logs & Errors tab
Safeguards
- Debug-mode only (404 otherwise)
- Table name validation prevents SQL injection
- Exception filtering separates user errors from real bugs
RU
Панель диагностики для разработчиков, доступна по адресу /api/diagnostics (HTML) и /api/diagnostics/api (JSON). Работает только при debug=true; в продакшене возвращает 404.
Что делает
Одностраничное JS-приложение с 14 вкладками (данные загружаются лениво):
| Вкладка | Что показывает |
|---|---|
| Service Health | PostgreSQL, 4 базы Redis, S3, лог-файл, Sentry — связность и задержка |
| Environment | Версия PHP, расширения, лимиты памяти и загрузки |
| Routes | Все зарегистрированные API-маршруты с методами и middleware |
| Endpoint Tester | Интерактивный HTTP-клиент (любой метод, заголовки, тело, авторизация) |
| PHPUnit | Запуск тестов, разобранный testdox-вывод |
| Database | Обозреватель таблиц: структура, индексы, ограничения, данные с пагинацией |
| Marketplace | Количество пользователей/товаров, статусы, цены, топ категорий |
| Security & Auth | Неудачные входы, заблокированные аккаунты, rate limits, токены сброса пароля |
| Search | Частота запросов, запросы без результатов, топ марок/категорий |
| Cache | Инвентарь ключей Redis по префиксам, попадания в кэш, буфер таймингов |
| Audit | Журнал действий администратора с фильтрами и пагинацией |
| Logs & Errors | Просмотр логов (tail + фильтры) и панель сгруппированных исключений |
| Performance | Задержки запросов P50/P95/P99, частота ошибок, медленные эндпоинты |
| Architecture | Технологический стек, зависимости, обзор конфигурации |
Как работает
- Page action (
/api/diagnostics) отдаёт HTML со встроенным JS - API action (
/api/diagnostics/api?check=<name>) возвращает JSON для каждой вкладки - 5 классов проверок в
app/Diagnostics/Check/: Database, Redis, S3, LogFile, Sentry LogParserразбирает логи Monolog для вкладки Logs & Errors
Защита
- Работает только в debug-режиме (иначе 404)
- Валидация имён таблиц предотвращает SQL-инъекции
- Фильтрация исключений отделяет пользовательские ошибки от реальных багов