fix: fixing webhook processing
Local Docker Build (Dev) / build-dev (pull_request) Successful in 19s
Local Docker Build (Dev) / build-dev (pull_request) Successful in 19s
This commit is contained in:
@@ -26,14 +26,37 @@ NFOGuard automatically updates movie and TV show NFO files with proper release d
|
||||
|
||||
## ✨ Features
|
||||
|
||||
- 🎬 **Movie & TV Support** - Works with both Radarr and Sonarr
|
||||
- 📅 **Smart Date Handling** - Prioritizes digital, physical, and theatrical release dates
|
||||
- 🔄 **Webhook Integration** - Triggers automatically on import, upgrade, and rename
|
||||
- 🗄️ **Database Integration** - Direct PostgreSQL access for better performance
|
||||
- 📝 **NFO Preservation** - Maintains existing metadata, adds fields cleanly at bottom
|
||||
- 🔒 **Metadata Locking** - Prevents overwrites with lockdata tags
|
||||
- ⚡ **Batch Processing** - Efficient handling of multiple files
|
||||
- 🐳 **Docker Ready** - Easy deployment with Docker Compose
|
||||
### **🎬 Core Media Management**
|
||||
- **Movie & TV Support** - Works with both Radarr and Sonarr
|
||||
- **Smart Date Handling** - Prioritizes digital, physical, and theatrical release dates
|
||||
- **Webhook Integration** - Triggers automatically on import, upgrade, and rename
|
||||
- **NFO Preservation** - Maintains existing metadata, adds fields cleanly at bottom
|
||||
- **Metadata Locking** - Prevents overwrites with lockdata tags
|
||||
|
||||
### **⚡ Performance & Scalability**
|
||||
- **Async I/O Operations** - High-performance concurrent file processing
|
||||
- **Batch Processing** - Efficient handling of multiple files simultaneously
|
||||
- **Database Integration** - Direct PostgreSQL/SQLite access for better performance
|
||||
- **Smart Concurrency** - Controlled parallel processing with rate limiting
|
||||
|
||||
### **🔧 Configuration & Validation**
|
||||
- **Comprehensive Config Validation** - Validates all settings before startup
|
||||
- **Runtime Health Checks** - Monitors system health and dependencies
|
||||
- **Path Validation** - Ensures media directories are accessible
|
||||
- **Database Connectivity Tests** - Validates database connections
|
||||
|
||||
### **📊 Monitoring & Observability**
|
||||
- **Health Check APIs** - `/api/v1/health`, `/api/v1/health/ready`, `/api/v1/health/live`
|
||||
- **Prometheus Metrics** - `/api/v1/metrics` endpoint for monitoring integration
|
||||
- **Performance Monitoring** - Operation timing, error rates, and bottleneck detection
|
||||
- **Structured Logging** - JSON logs with correlation IDs for request tracing
|
||||
- **System Status APIs** - Real-time performance and error metrics
|
||||
|
||||
### **🐳 Production Ready**
|
||||
- **Docker & Kubernetes** - Health checks for orchestration platforms
|
||||
- **Grafana Compatible** - Metrics endpoints for dashboard integration
|
||||
- **Configuration CLI** - Validation tools for troubleshooting
|
||||
- **Modular Architecture** - Clean separation of concerns for maintainability
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
@@ -123,11 +146,13 @@ image: sbcrumb/nfoguard:latest
|
||||
image: sbcrumb/nfoguard:dev
|
||||
```
|
||||
|
||||
### Specific Version
|
||||
### Specific Version
|
||||
```yaml
|
||||
image: sbcrumb/nfoguard:v1.5.5
|
||||
image: sbcrumb/nfoguard:v2.0.0 # Latest with monitoring & validation
|
||||
```
|
||||
|
||||
> **🚀 Version 2.0.0** includes major architecture improvements, async I/O performance enhancements, comprehensive monitoring, and configuration validation.
|
||||
|
||||
## 🔗 Webhook Setup
|
||||
|
||||
Configure these webhook URLs in your applications:
|
||||
@@ -162,13 +187,38 @@ curl -X POST "http://localhost:8080/bulk/update"
|
||||
|
||||
### API Endpoints
|
||||
|
||||
#### **Core Operations**
|
||||
| Endpoint | Method | Purpose |
|
||||
|----------|--------|---------|
|
||||
| `/health` | GET | Health check |
|
||||
| `/webhook/radarr` | POST | Radarr webhook handler |
|
||||
| `/webhook/sonarr` | POST | Sonarr webhook handler |
|
||||
| `/manual/scan` | POST | Manual media scanning |
|
||||
| `/bulk/update` | POST | Bulk movie updates from Radarr DB |
|
||||
| `/bulk/update` | POST | Bulk update from Radarr database |
|
||||
|
||||
#### **Health & Monitoring**
|
||||
| Endpoint | Method | Purpose |
|
||||
|----------|--------|---------|
|
||||
| `/api/v1/health` | GET | Comprehensive health status |
|
||||
| `/api/v1/health/ready` | GET | Kubernetes readiness probe |
|
||||
| `/api/v1/health/live` | GET | Kubernetes liveness probe |
|
||||
| `/api/v1/status` | GET | Complete system status |
|
||||
| `/api/v1/status/brief` | GET | Quick system overview |
|
||||
|
||||
#### **Metrics & Performance**
|
||||
| Endpoint | Method | Purpose |
|
||||
|----------|--------|---------|
|
||||
| `/api/v1/metrics` | GET | Prometheus metrics (text format) |
|
||||
| `/api/v1/metrics/json` | GET | Metrics in JSON format |
|
||||
| `/api/v1/metrics/processing` | GET | Processing-specific metrics |
|
||||
| `/api/v1/metrics/errors` | GET | Error metrics and recent failures |
|
||||
| `/api/v1/metrics/system` | GET | System resource metrics |
|
||||
|
||||
#### **Configuration & Debugging**
|
||||
| Endpoint | Method | Purpose |
|
||||
|----------|--------|---------|
|
||||
| `/debug/movie/{imdb_id}/priority` | GET | Debug movie priority logic |
|
||||
| `/debug/tmdb/{imdb_id}` | GET | Debug TMDB lookup |
|
||||
| `/ping` | GET | Simple connectivity test |
|
||||
|
||||
### Manual Scan Parameters
|
||||
|
||||
@@ -226,6 +276,79 @@ PATH_DEBUG=true
|
||||
curl http://localhost:8080/health
|
||||
```
|
||||
|
||||
## 📊 Monitoring & Observability
|
||||
|
||||
NFOGuard provides comprehensive monitoring capabilities for production deployments:
|
||||
|
||||
### **Health Checks**
|
||||
```bash
|
||||
# Basic health status
|
||||
curl http://localhost:8080/api/v1/health
|
||||
|
||||
# Kubernetes readiness probe
|
||||
curl http://localhost:8080/api/v1/health/ready
|
||||
|
||||
# Kubernetes liveness probe
|
||||
curl http://localhost:8080/api/v1/health/live
|
||||
|
||||
# Quick system overview
|
||||
curl http://localhost:8080/api/v1/status/brief
|
||||
```
|
||||
|
||||
### **Metrics for Grafana/Prometheus**
|
||||
```bash
|
||||
# Prometheus metrics format
|
||||
curl http://localhost:8080/api/v1/metrics
|
||||
|
||||
# JSON metrics for dashboards
|
||||
curl http://localhost:8080/api/v1/metrics/json
|
||||
|
||||
# Processing performance metrics
|
||||
curl http://localhost:8080/api/v1/metrics/processing
|
||||
|
||||
# Error rates and recent failures
|
||||
curl http://localhost:8080/api/v1/metrics/errors
|
||||
|
||||
# System resource usage
|
||||
curl http://localhost:8080/api/v1/metrics/system
|
||||
```
|
||||
|
||||
### **Configuration Validation**
|
||||
```bash
|
||||
# Validate configuration before deployment
|
||||
python config/validation_cli.py
|
||||
|
||||
# Include runtime tests (database, APIs, file access)
|
||||
python config/validation_cli.py --runtime
|
||||
|
||||
# JSON output for automation
|
||||
python config/validation_cli.py --runtime --json
|
||||
```
|
||||
|
||||
### **Docker Health Checks**
|
||||
Add to your `docker-compose.yml`:
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/health/live"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
```
|
||||
|
||||
### **Structured Logging**
|
||||
NFOGuard uses structured JSON logging with correlation IDs for request tracing:
|
||||
```bash
|
||||
# Enable structured logging
|
||||
STRUCTURED_LOGGING=true
|
||||
|
||||
# Log level configuration
|
||||
LOG_LEVEL=INFO
|
||||
|
||||
# Example log output with correlation ID
|
||||
{"timestamp": "2024-01-01T12:00:00Z", "level": "INFO", "correlation_id": "req_123", "message": "Webhook received", "context": {"webhook_type": "radarr", "media_type": "movie"}}
|
||||
```
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Permission Errors**: Ensure NFOGuard can write to mounted directories
|
||||
|
||||
Reference in New Issue
Block a user