now supports multi machine monitoring
This commit is contained in:
+46
-7
@@ -22,17 +22,20 @@ backend/
|
||||
│ │ ├── monitoring.py
|
||||
│ │ ├── media.py
|
||||
│ │ ├── users.py
|
||||
│ │ ├── settings.py
|
||||
│ │ ├── files.py
|
||||
│ │ └── jobs.py
|
||||
│ ├── clients/
|
||||
│ │ ├── jellyfin.py
|
||||
│ │ ├── jellyseerr.py
|
||||
│ │ ├── local.py
|
||||
│ │ ├── resources.py
|
||||
│ │ └── ssh.py
|
||||
│ ├── domain/
|
||||
│ │ └── media.py
|
||||
│ └── services/
|
||||
│ └── media_index.py
|
||||
│ ├── media_index.py
|
||||
│ └── settings_store.py
|
||||
└── tests/
|
||||
```
|
||||
|
||||
@@ -47,7 +50,9 @@ pip install -e '.[dev]'
|
||||
|
||||
## Configuration
|
||||
|
||||
Create a `.env` file in the project root (or set environment variables):
|
||||
Set environment variables directly in your shell or a wrapper script before running the app or Compose. The Docker Compose files use interpolation and do not require an `env_file` entry.
|
||||
|
||||
For local `.env` development, you can still create one if you prefer, but it is optional.
|
||||
|
||||
```bash
|
||||
JELLYFIN_URL=https://jellyfin.example.com
|
||||
@@ -101,17 +106,51 @@ API docs available at: http://localhost:8000/docs
|
||||
|
||||
The repository root includes a production `docker-compose.yml` and a development `docker-compose.dev.yml`.
|
||||
The backend media index is stored in the `backend_cache` Docker volume so it survives container restarts and image rebuilds.
|
||||
The production compose file expects required environment variables to be supplied via interpolation (shell exports or inline `VAR=value docker compose ...`).
|
||||
|
||||
### Configuration workflow examples
|
||||
|
||||
1. Export your runtime variables before launching Compose:
|
||||
|
||||
```bash
|
||||
export JELLYFIN_URL=https://jellyfin.example.com
|
||||
export JELLYFIN_API_KEY=your-api-key
|
||||
export SSH_HOST=media-server.example.com
|
||||
export SSH_USERNAME=username
|
||||
export SSH_KEY_HOST_DIR=$HOME/.ssh
|
||||
export SSH_KEY_NAME=id_ed25519
|
||||
export BACKEND_APP_HOST=manage.example.com
|
||||
export FRONTEND_APP_HOST=manage.example.com
|
||||
export CERT_RESOLVER=letsencrypt
|
||||
export VITE_OIDC_ISSUER=https://authentik.example/application/o/manage/
|
||||
export VITE_OIDC_CLIENT_ID=manage
|
||||
export VITE_OIDC_REDIRECT_URI=https://manage.example.com/
|
||||
export VITE_OIDC_POST_LOGOUT_REDIRECT_URI=https://manage.example.com/
|
||||
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
2. After the API is running, open the app, go to **Settings**, and add machine entries:
|
||||
- **Local**: monitors the API host itself without SSH.
|
||||
- **SSH**: monitors another machine using a host, username, key directory, and key name.
|
||||
|
||||
3. Open **Monitoring** to see one section per configured machine. Each section uses its own collector state, disk path, metrics queries, and recent action history, which are populated automatically by the backend poller.
|
||||
|
||||
## API Endpoints
|
||||
|
||||
- `GET /api/dashboard/counts` — Movie/series/episode totals
|
||||
- `GET /api/dashboard/libraries` — Per-library breakdown
|
||||
- `GET /api/dashboard/now-playing` — Active playback sessions
|
||||
- `GET /api/monitoring/status` — Collector status
|
||||
- `GET /api/monitoring/metrics` — Resource samples (last hour)
|
||||
- `GET /api/monitoring/disk` — Disk space
|
||||
- `POST /api/monitoring/start|stop|restart` — Collector controls
|
||||
- `GET /api/monitoring/diagnostics` — Collector debug info
|
||||
- `GET /api/monitoring/machines` — Persistent monitoring machine definitions
|
||||
- `GET /api/monitoring/status?machine_id=` — Collector status for a machine
|
||||
- `GET /api/monitoring/metrics?machine_id=` — Resource samples (last hour)
|
||||
- `GET /api/monitoring/disk?machine_id=` — Disk space
|
||||
- `POST /api/monitoring/start|stop|restart?machine_id=` — Collector controls
|
||||
- `GET /api/monitoring/diagnostics?machine_id=` — Collector debug info
|
||||
- `GET /api/monitoring/poller` — Backend poller status and configuration
|
||||
- `GET /api/monitoring/machines/{machine_id}/actions` — Recent machine action history
|
||||
- `GET /api/dashboard/monitoring` — Dashboard-wide per-machine monitoring summary table with 10-minute averages and min/max subtext
|
||||
- `GET /api/settings/machines` — Manage machine definitions
|
||||
- `GET /api/media/status` — Index status
|
||||
- `POST /api/media/build` — Rebuild index
|
||||
- `GET /api/media/query` — Query with filters/sort/pagination
|
||||
|
||||
Reference in New Issue
Block a user