Exports metrics from Radarr, Sonarr, and Jellyfin to Prometheus. Includes pre-built Grafana dashboards.
docker pull ghcr.io/joshuarmost/arr-scraper:latest
docker run -d \
--name media-exporter \
-p 9877:9877 \
-e RADARR_URL=http://your-radarr:7878 \
-e RADARR_API_KEY=your_api_key \
-e SONARR_URL=http://your-sonarr:8989 \
-e SONARR_API_KEY=your_api_key \
-e JELLYFIN_URL=http://your-jellyfin:8096 \
-e JELLYFIN_API_KEY=your_api_key \
ghcr.io/joshuarmost/arr-scraper:latestMetrics available at: http://localhost:9877/metrics
Access:
- Grafana: http://localhost:3000 (login: admin/admin)
- Prometheus: http://localhost:9090
- Exporter: http://localhost:9877/metrics
Add this to your prometheus.yml:
scrape_configs:
- job_name: 'media-exporter'
scrape_interval: 60s
static_configs:
- targets: ['exporter-host:9877']Pre-built dashboards are in grafana/dashboards/.
Import the unified dashboard directly in Grafana using this URL:
Method 1: Via Grafana UI
- Open Grafana (http://localhost:3000)
- Login (default: admin/admin)
- Click ☰ menu → Dashboards → Import
- Click Upload JSON file
- Select a dashboard file from
grafana/dashboards/ - Choose your Prometheus datasource
- Click Import
Method 2: Copy-Paste JSON
- Open a dashboard JSON file in a text editor
- Copy all contents
- In Grafana: Dashboards → Import → Import via panel json
- Paste the JSON
- Select Prometheus datasource → Import
Method 3: Auto-provisioned (docker-compose only)
- Dashboards are automatically loaded on startup
- No manual import needed if using
docker-compose.yml
- media-overview.json - Unified view: Radarr, Sonarr, Jellyfin stats and breakdowns
| Service | Variables |
|---|---|
| Radarr | RADARR_URL, RADARR_API_KEY |
| Sonarr | SONARR_URL, SONARR_API_KEY |
| Jellyfin | JELLYFIN_URL, JELLYFIN_API_KEY |
Configure at least one service.
Radarr/Sonarr: Settings → General → API Key
Jellyfin: Dashboard → API Keys → New API Key
- Radarr: Movie counts, disk usage, genres, codecs, download queue, historical data
- Sonarr: Series/episode counts, disk usage, genres, status, download queue
- Jellyfin: Active streams, user activity, playback methods, top content
# Total library size in TB
(radarr_disk_usage_bytes + sonarr_disk_usage_bytes) / 1024^4
# Percentage downloaded
(radarr_movies_downloaded / radarr_movies_total) * 100
# Active streams
jellyfin_active_streams
docker build -t media-exporter .Public domain