Files
michaelschiemer/docs/claude/livecomponents-monitoring-debugging.md
Michael Schiemer fc3d7e6357 feat(Production): Complete production deployment infrastructure
- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
2025-10-25 19:18:37 +02:00

16 KiB

LiveComponents Monitoring & Debugging

Status: Implemented Date: 2025-10-09

Comprehensive monitoring and debugging infrastructure for LiveComponents system.


Overview

Production-ready monitoring and development debugging tools for LiveComponents:

  • Production Monitoring: Metrics, health checks, performance tracking
  • Development Debugging: Debug panel, component inspector
  • Admin-Only Security: All endpoints require admin authentication

1. Production Monitoring

1.1 Monitoring Controller

Location: src/Framework/LiveComponents/Controllers/LiveComponentMonitoringController.php

Dependencies:

  • CacheMetricsCollector - Cache performance metrics
  • ComponentRegistry - Component statistics
  • ComponentMetadataCache - Metadata caching info
  • ComponentStateCache - State caching info
  • ProcessorPerformanceTracker - Optional template processor profiling

1.2 Monitoring Endpoints

GET /api/livecomponents/metrics

Auth: Admin only (#[Auth(roles: ['admin'])])

Comprehensive system metrics including:

{
  "cache": {
    "overall": {
      "hit_rate": "85.50%",
      "miss_rate": "14.50%",
      "total_requests": 1000,
      "average_lookup_time_ms": 0.15
    },
    "by_type": {
      "state": { "hit_rate": "70.00%", ... },
      "slot": { "hit_rate": "60.00%", ... },
      "template": { "hit_rate": "80.00%", ... }
    },
    "performance_assessment": {
      "state_cache": { "grade": "B", "meets_target": true },
      "slot_cache": { "grade": "B", "meets_target": true },
      "template_cache": { "grade": "A", "meets_target": true },
      "overall_grade": "B+"
    }
  },
  "registry": {
    "total_components": 15,
    "component_names": ["counter", "timer", "chat", ...],
    "memory_estimate": 76800
  },
  "processors": {
    "enabled": true,
    "metrics": { ... }
  },
  "system": {
    "memory_usage": 12582912,
    "peak_memory": 15728640
  },
  "timestamp": 1696857600
}

Use Cases:

  • Production monitoring dashboards
  • Performance trend analysis
  • Capacity planning
  • Alerting integration

GET /api/livecomponents/health

Auth: Public (no authentication required)

Quick health check for monitoring systems:

{
  "status": "healthy",  // or "degraded"
  "components": {
    "registry": true,
    "cache": true
  },
  "warnings": [],
  "timestamp": 1696857600
}

HTTP Status Codes:

  • 200 OK - System healthy
  • 503 Service Unavailable - System degraded

Use Cases:

  • Load balancer health checks
  • Uptime monitoring (Pingdom, UptimeRobot, etc.)
  • Auto-scaling triggers
  • Alerting systems

GET /api/livecomponents/metrics/cache

Auth: Admin only

Focused cache metrics:

{
  "overall": { ... },
  "by_type": { ... },
  "performance_assessment": { ... }
}

GET /api/livecomponents/metrics/registry

Auth: Admin only

Component registry statistics:

{
  "total_components": 15,
  "component_names": [...],
  "memory_estimate": 76800
}

POST /api/livecomponents/metrics/reset

Auth: Admin only Environment: Development only

Reset all collected metrics:

{
  "message": "Metrics reset successfully",
  "timestamp": 1696857600
}

Returns 403 Forbidden in production.


2. Component Inspector

2.1 Inspector Endpoints

GET /api/livecomponents/inspect/{componentId}

Auth: Admin only

Detailed component inspection for debugging:

{
  "component": {
    "id": "counter:demo",
    "name": "counter",
    "instance_id": "demo",
    "class": "App\\Application\\LiveComponents\\CounterComponent"
  },
  "metadata": {
    "properties": [
      {
        "name": "count",
        "type": "int",
        "nullable": false,
        "hasDefault": true
      }
    ],
    "actions": [
      {
        "name": "increment",
        "parameters": []
      },
      {
        "name": "decrement",
        "parameters": []
      }
    ],
    "constructor_params": ["id", "initialData"],
    "compiled_at": "2025-10-09 01:45:23"
  },
  "state": {
    "cached": true,
    "data": {
      "count": 5,
      "label": "My Counter"
    }
  },
  "cache_info": {
    "metadata_cached": true,
    "state_cached": true
  },
  "timestamp": 1696857600
}

Use Cases:

  • Runtime debugging
  • State inspection
  • Metadata verification
  • Cache status checking
  • Development troubleshooting

GET /api/livecomponents/instances

Auth: Admin only

List all available component types:

{
  "total": 15,
  "instances": [
    {
      "name": "counter",
      "class": "App\\Application\\LiveComponents\\CounterComponent",
      "metadata_cached": true
    },
    {
      "name": "timer",
      "class": "App\\Application\\LiveComponents\\TimerComponent",
      "metadata_cached": true
    }
  ],
  "timestamp": 1696857600
}

Use Cases:

  • Component discovery
  • System overview
  • Debugging aid
  • Cache status overview

3. Development Debug Panel

3.1 Debug Panel Renderer

Location: src/Framework/LiveComponents/Debug/DebugPanelRenderer.php

Features:

  • Auto-rendered in development environment
  • Collapsible panel with component details
  • State inspection with JSON preview
  • Performance metrics (render time, memory usage)
  • Cache hit/miss indicators
  • Component metadata display
  • Zero overhead in production

3.2 Activation

Environment Variables:

# Option 1: Development environment
APP_ENV=development

# Option 2: Explicit debug flag
LIVECOMPONENT_DEBUG=true

Auto-Detection:

DebugPanelRenderer::shouldRender()
// Returns true if APP_ENV=development OR LIVECOMPONENT_DEBUG=true

3.3 Debug Panel Display

Visual Example:

┌─────────────────────────────────────────────────────┐
│ 🔧 counter                                         ▼ │
├─────────────────────────────────────────────────────┤
│ Component: App\Application\LiveComponents\...      │
│ Render Time: 2.35ms                                 │
│ Memory: 2.5 MB                                      │
│ Cache: ✅ HIT                                       │
│                                                     │
│ State:                                              │
│ {                                                   │
│   "count": 5,                                       │
│   "label": "My Counter"                             │
│ }                                                   │
│                                                     │
│ Actions: increment, decrement, reset                │
│ Metadata: 3 properties, 3 actions                   │
└─────────────────────────────────────────────────────┘

Features:

  • Click header to collapse/expand
  • Inline styles (no external CSS needed)
  • JSON-formatted state with syntax highlighting
  • Performance metrics
  • Cache status indicators

3.4 Integration

Automatic Injection:

  • Debug panel automatically appended after component rendering
  • Only in development environment
  • No code changes required in components
  • Fully transparent to production

Component Registry Integration:

// In ComponentRegistry::render()
if ($this->debugPanel !== null && DebugPanelRenderer::shouldRender()) {
    $renderTime = (microtime(true) - $startTime) * 1000;
    $html .= $this->renderDebugPanel($component, $renderTime, $cacheHit);
}

4. Metrics Collection

4.1 Cache Metrics Collector

Location: src/Framework/LiveComponents/Cache/CacheMetricsCollector.php

Features:

  • Real-time metric collection
  • Per-cache-type tracking (State, Slot, Template)
  • Aggregate metrics across all caches
  • Performance target validation
  • Automatic performance grading (A-F)

Metrics Tracked:

public function recordHit(CacheType $cacheType, float $lookupTimeMs): void
public function recordMiss(CacheType $cacheType, float $lookupTimeMs): void
public function recordInvalidation(CacheType $cacheType): void
public function updateSize(CacheType $cacheType, int $size): void

Performance Assessment:

$assessment = $collector->assessPerformance();
// [
//   'state_cache' => [
//     'target' => '70.0%',
//     'actual' => '85.5%',
//     'meets_target' => true,
//     'grade' => 'A'
//   ],
//   ...
// ]

Performance Targets:

  • State Cache: 70% hit rate (faster initialization)
  • Slot Cache: 60% hit rate (faster resolution)
  • Template Cache: 80% hit rate (faster rendering)

Grading Scale:

  • A: ≥90% hit rate
  • B: 80-89%
  • C: 70-79%
  • D: 60-69%
  • F: <60%

4.2 Performance Warnings

Automatic Detection:

if ($collector->hasPerformanceIssues()) {
    $warnings = $collector->getPerformanceWarnings();
    // [
    //   "State cache hit rate (65.2%) below target (70.0%)",
    //   "Template cache hit rate (75.3%) below target (80.0%)"
    // ]
}

Integration:

  • Health check endpoint includes warnings
  • Monitoring alerts can trigger on warnings
  • Debug panel shows performance issues

5. Processor Performance Tracking

5.1 Performance Tracker

Location: src/Framework/View/ProcessorPerformanceTracker.php

Features:

  • Optional profiling (disable in production)
  • Minimal overhead (<0.1ms when enabled)
  • Per-processor metrics
  • Performance grading (A-F)
  • Bottleneck identification

Activation:

# Enable via environment variable
ENABLE_TEMPLATE_PROFILING=true

Metrics Tracked:

public function measure(string $processorClass, callable $execution): string
// Tracks:
// - Execution time (ms)
// - Memory usage (bytes)
// - Invocation count
// - Average/min/max times

Performance Report:

$report = $tracker->generateReport();
// ProcessorPerformanceReport {
//   processors: [
//     'PlaceholderReplacer' => [
//       'total_time_ms' => 15.3,
//       'invocation_count' => 100,
//       'average_time_ms' => 0.153,
//       'grade' => 'A'
//     ],
//     ...
//   ],
//   bottlenecks: ['ForProcessor'],
//   overall_grade: 'B+'
// }

6. Usage Examples

6.1 Production Monitoring

Prometheus/Grafana Integration:

# Scrape metrics endpoint
curl -s https://api.example.com/api/livecomponents/metrics \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  | jq '.cache.overall.hit_rate'

Health Check Monitoring:

# Simple uptime check
curl -f https://api.example.com/api/livecomponents/health || alert_team

# Detailed health with warnings
curl -s https://api.example.com/api/livecomponents/health | jq '.warnings[]'

Alerting Rules:

# Prometheus alert rule
- alert: LiveComponentsCacheDegraded
  expr: livecomponents_cache_hit_rate < 0.7
  for: 5m
  annotations:
    summary: "LiveComponents cache performance degraded"

6.2 Development Debugging

Component Inspection:

# Inspect specific component instance
curl https://localhost/api/livecomponents/inspect/counter:demo \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  | jq '.state.data'

# List all available components
curl https://localhost/api/livecomponents/instances \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  | jq '.instances[].name'

Debug Panel:

# Enable debug panel
export APP_ENV=development

# Or via dedicated flag
export LIVECOMPONENT_DEBUG=true

# Debug panel auto-appears in rendered components
# Click panel header to collapse/expand

7. Security Considerations

7.1 Authentication

Admin-Only Endpoints:

  • All monitoring endpoints require admin role
  • Health check endpoint is public (by design)
  • Component inspector admin-only
  • Metrics reset admin-only + development-only

Authentication Pattern:

#[Route('/api/livecomponents/metrics', method: Method::GET)]
#[Auth(roles: ['admin'])]
public function metrics(): JsonResult

7.2 Environment Restrictions

Production Safety:

  • Debug panel disabled in production (APP_ENV check)
  • Metrics reset blocked in production
  • Performance tracking optional (minimal overhead)

Development Features:

  • Debug panel auto-enabled in development
  • Metrics reset available
  • Component inspector with full details

8. Performance Impact

8.1 Production Overhead

Metrics Collection:

  • Memory: ~5KB per component metadata
  • CPU: <0.1ms per metric recording
  • Storage: In-memory metrics (no persistence)

Health Check Endpoint:

  • Response Time: <10ms
  • Memory: Negligible
  • CPU: Minimal

Monitoring Endpoints:

  • Response Time: 50-100ms (includes metric aggregation)
  • Memory: Temporary allocation for JSON serialization
  • CPU: Metric calculation and formatting

8.2 Development Overhead

Debug Panel:

  • Render Time: +1-2ms per component
  • Memory: +10KB per component (metadata + panel HTML)
  • Zero Overhead: Completely disabled in production

Component Inspector:

  • Query Time: 10-50ms (metadata + state lookup)
  • Memory: Temporary allocation
  • No Impact: On-demand only

9. Integration with Performance Optimizations

9.1 Metrics Integration

Cache Metrics:

  • ComponentMetadataCache reports to CacheMetricsCollector
  • ComponentStateCache reports to CacheMetricsCollector
  • SlotContentCache reports to CacheMetricsCollector
  • TemplateFragmentCache reports to CacheMetricsCollector

Performance Tracking:

  • ProcessorPerformanceTracker integrates with TemplateProcessor
  • Optional profiling via environment variable
  • Minimal overhead when disabled

9.2 Debug Integration

Debug Panel Data Sources:

  • ComponentMetadataCache for metadata
  • ComponentStateCache for state
  • Render timing from ComponentRegistry
  • Memory usage from PHP runtime

Component Inspector:

  • ComponentMetadataCache for structure
  • ComponentStateCache for runtime state
  • ComponentRegistry for class mapping

10. Future Enhancements

10.1 Planned Features

Metrics Persistence:

  • Store metrics in database for historical analysis
  • Metric retention policies
  • Trend analysis and visualization

Advanced Alerting:

  • Custom alert rules
  • Slack/Email notifications
  • Automated incident creation

Component Profiler:

  • Detailed performance profiling per component
  • Flame graphs for render pipeline
  • Bottleneck identification

Interactive Debug UI:

  • Web-based debug panel (alternative to inline)
  • State manipulation
  • Action testing
  • Component playground

10.2 Integration Opportunities

APM Integration:

  • New Relic integration
  • Datadog integration
  • Elastic APM integration

Logging Integration:

  • Structured logging for all metrics
  • Log aggregation (ELK, Splunk)
  • Metric-to-log correlation

11. Troubleshooting

11.1 Common Issues

Metrics Not Updating:

# Check if metrics collector is registered
curl https://localhost/api/livecomponents/metrics/cache | jq '.overall.total_requests'

# Reset metrics (development only)
curl -X POST https://localhost/api/livecomponents/metrics/reset \
  -H "Authorization: Bearer $ADMIN_TOKEN"

Debug Panel Not Showing:

# Verify environment
echo $APP_ENV  # Should be "development"
echo $LIVECOMPONENT_DEBUG  # Should be "true"

# Check DebugPanelRenderer registration
# Should be auto-registered via DebugPanelInitializer

Health Check Failing:

# Check detailed health status
curl -s https://localhost/api/livecomponents/health | jq '.'

# Check warnings
curl -s https://localhost/api/livecomponents/health | jq '.warnings'

11.2 Performance Degradation

Cache Hit Rate Low:

  • Check cache TTL configuration
  • Verify cache key generation
  • Review cache invalidation patterns
  • Analyze workload patterns

High Memory Usage:

  • Check component count (registry statistics)
  • Review metadata cache size
  • Analyze state cache retention
  • Consider cache eviction policies

Summary

Comprehensive monitoring and debugging infrastructure providing:

Production:

  • Metrics endpoint (cache, registry, performance)
  • Health check endpoint (200/503 responses)
  • Cache metrics collection with grading
  • Performance tracking (optional)
  • Admin-only security

Development:

  • Debug panel (auto-rendered)
  • Component inspector (detailed runtime info)
  • Component instance listing
  • Metrics reset capability
  • Zero production overhead

Integration:

  • Works with all performance optimizations
  • Integrates with cache layers
  • Hooks into component registry
  • Template processor profiling support
  • Framework-compliant patterns