Server di ingest e dashboard per il progetto Watch. Applicazione Laravel che riceve gli eventi inviati dagli agent (Cipiwatch o cipi/watch) dalle app Laravel e li visualizza tramite Filament.
- API di ingest (
POST /api/ingest): riceve i payload degli agent, autenticati tramite Bearer token (token del progetto). - Progetti: ogni progetto ha un token univoco; le app Laravel usano quel token per inviare i dati.
- Eventi: richieste HTTP, eccezioni, query, comandi, job, log, mail, notifiche, cache, richieste in uscita, task schedulati.
- Issue: raggruppamento delle eccezioni per
group_hashcon stato (open/resolved), priorità e conteggio occorrenze. - Dashboard Filament: widget e pagine per esplorare eventi e issue per progetto.
- PHP 8.2+
- Laravel 12.x
- MySQL / MariaDB (o altro DB supportato da Laravel)
- Composer, Node/npm per asset frontend
# Clona il repo (se non l’hai già) e entra nella cartella del server
cd watch-server
# Dipendenze PHP
composer install
# Ambiente
cp .env.example .env
php artisan key:generateIn .env imposta ad esempio:
DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=watch
DB_USERNAME=root
DB_PASSWORD=Poi:
php artisan migratenpm install
npm run buildCrea il primo utente admin:
php artisan watch:create-user --name="Admin" --email="admin@example.com" --password="tua-password"Avvia l’app e accedi alla dashboard:
php artisan serveApri http://localhost:8000 (o l’URL configurato) e accedi con l’email e la password appena create. Dalla dashboard Filament crea un Progetto, copia il token generato e usalo nelle tue app Laravel nella configurazione dell’agent (Cipiwatch o cipi/watch).
| Variabile | Descrizione |
|---|---|
APP_NAME |
Nome applicazione (es. Watch Server) |
APP_URL |
URL pubblico del server (es. https://watch.tuodominio.com) |
DB_* |
Connessione database |
SESSION_DRIVER |
Driver sessione (es. database) |
QUEUE_CONNECTION |
Code (es. database per sviluppo) |
CACHE_STORE |
Cache (es. database) |
Le altre voci in .env.example seguono lo standard Laravel (mail, redis, ecc.).
- Endpoint:
POST /api/ingest - Autenticazione: header
Authorization: Bearer <token_progetto> - Body: JSON array di record (formato inviato da Cipiwatch/cipi/watch).
Risposte:
401: manca il token.403: token non valido (progetto non trovato).422: payload non valido.200: successo, body tipo{ "status": "ok", "received": N }.
Ping: inviando un payload con __ping viene risposto { "status": "pong" } (utile per verificare token e connettività).
app/
├── Filament/
│ ├── Pages/ # Requests, Exceptions, Queries, Jobs, Logs, Mail, ecc.
│ ├── Resources/ # Project, Issue
│ └── Widgets/ # Stats, chart, eccezioni recenti
├── Http/Controllers/Api/
│ └── IngestController.php
└── Models/
├── Event.php
├── Issue.php
├── Project.php
└── User.php
# Server + queue + log + vite
composer devOppure in terminali separati:
php artisan serve
php artisan queue:listen
npm run devcomposer test
# oppure
php artisan testMIT.