Files
michaelschiemer/docs/logging/log-health-check-command.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

163 lines
5.3 KiB
Markdown

# LogHealthCheckCommand
Comprehensive log infrastructure health monitoring command.
## Status
**Functionally Complete** - All health checks implemented and working
**Discovery Issue** - Command not automatically discovered by console system
**Workaround Available** - Manual execution via test script
## Features
- **Directory Checks**: Verifies existence of log directories (storage/logs, app, debug, security)
- **Permission Checks**: Tests write permissions with automatic fix option
- **Disk Space Monitoring**: Reports total, used, and free disk space with threshold warnings
- **Log File Analysis**: Lists all log files with size information and rotation warnings
- **Color-Coded Output**: Visual indicators for pass/fail status
- **Auto-Fix Mode**: `--fix-permissions` flag for automatic permission remediation
## Usage
### Manual Execution (Current Workaround)
```bash
# Run via test script
docker exec php php tests/debug/test-log-health-check-v2.php
# With detailed output
docker exec php php tests/debug/test-log-health-check-v2.php --detailed
```
### Expected Console Usage (Not Working Due To Discovery Issue)
```bash
# These commands do NOT work currently:
php console.php logs:health-check
php console.php logs:health-check --detailed
php console.php logs:health-check --fix-permissions
```
## Output Example
```
═══════════════════════════════════════════════════
Log Infrastructure Health Check
═══════════════════════════════════════════════════
📁 Checking log directories...
✓ storage/logs
✗ storage/logs/app (missing)
✗ storage/logs/debug (missing)
✗ storage/logs/security (missing)
🔐 Checking write permissions...
✓ Write permissions OK (permissions: 0777)
💾 Checking disk space...
Total: 1006.85 GB
Used: 76.02 GB (7.55%)
Free: 930.83 GB
✓ Disk space OK
📄 Checking log files...
Found 7 log file(s)
Total log size: 804 B
═══════════════════════════════════════════════════
Summary
═══════════════════════════════════════════════════
✗ FAIL Directories
✓ PASS Permissions
✓ PASS Disk space
✓ PASS Log files
Command completed with exit code: 1
```
## Health Check Details
### 1. Directory Checks
Verifies existence of required log directories:
- `storage/logs` - Main log directory
- `storage/logs/app` - Application logs
- `storage/logs/debug` - Debug logs
- `storage/logs/security` - Security logs
**Fix Mode**: Automatically creates missing directories with 0777 permissions
### 2. Permission Checks
Tests write permissions by creating a temporary file:
- Checks if log directory is writable
- Reports current permission bits
- Automatically fixes permissions if `--fix-permissions` flag is used
### 3. Disk Space Checks
Monitors available disk space:
- Reports total, used, and free space in human-readable format
- Calculates percentage used
- **Warning Threshold**: < 100MB free OR > 90% used
### 4. Log File Checks
Analyzes existing log files:
- Recursively finds all `.log`, `.log.N`, and `.log.N.gz` files
- Reports individual file sizes and modification times (with `--detailed` flag)
- **Warning Threshold**: Individual files > 50MB
- Calculates total log size across all files
## Exit Codes
- `0` (SUCCESS): All checks passed
- `1` (GENERAL_ERROR): One or more checks failed
## Known Issues
### Discovery Issue
**Problem**: Command is not discovered by the console system despite:
- Proper `#[ConsoleCommand]` attribute on `execute()` method
- Correct namespace (`App\Framework\Logging\Commands`)
- No constructor dependencies (self-contained like `RotateLogsCommand`)
- Valid PHP syntax (verified with `php -l`)
- Following same pattern as working `RotateLogsCommand`
**Investigation Results**:
- Attribute is correctly set (verified via Reflection)
- File exists in correct location
- Autoloader updated multiple times
- Discovery cache cleared
- PHP container restarted
- Command instantiates and executes perfectly when called manually
**Root Cause**: Unknown - the discovery system fails to register this specific command despite all conditions being met.
**Workaround**: Use manual test script at `tests/debug/test-log-health-check-v2.php`
## Technical Details
**File**: `src/Framework/Logging/Commands/LogHealthCheckCommand.php`
**Dependencies**: None (self-contained)
**Path Resolution**: Uses `getcwd()` to determine base path (defaults to `/var/www/html`)
**Attribute Configuration**:
```php
#[ConsoleCommand(name: 'logs:health-check', description: 'Check log infrastructure health and identify issues')]
```
## Future Improvements
1. **Resolve Discovery Issue**: Investigate why command not discovered by console system
2. **Additional Checks**:
- Log rotation configuration validation
- Log handler health checks
- Logger module initialization status
3. **Metrics Collection**: Store health check results for trending
4. **Alerting Integration**: Send alerts when checks fail
5. **Automated Remediation**: Expand auto-fix capabilities beyond permissions