Skip to content

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:

TabWhat it shows
Service HealthPostgreSQL, 4 Redis DBs, S3, log file, Sentry — connectivity + latency
EnvironmentPHP version, extensions, memory/upload limits
RoutesAll registered API routes with methods and middleware
Endpoint TesterInteractive HTTP request tool (any method, headers, body, auth)
PHPUnitRun full test suite, parsed testdox output
DatabaseTable browser: structure, indexes, constraints, paginated row data
MarketplaceUser/product counts, status breakdown, price stats, top categories
Security & AuthFailed logins, locked accounts, rate limits, password reset tokens
SearchQuery frequency, zero-result queries, top makes/categories
CacheRedis key inventory by prefix, hit rates, timing buffer stats
AuditAdmin action log with filters and pagination
Logs & ErrorsLog viewer (tail + filters) and grouped exception dashboard
PerformanceRequest latency P50/P95/P99, error rate, slow endpoints
ArchitectureTech 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
  • LogParser parses 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 HealthPostgreSQL, 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-инъекции
  • Фильтрация исключений отделяет пользовательские ошибки от реальных багов