Skip to content

cipi-sh/watch-server

Repository files navigation

Watch Server

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.

Funzionalità

  • 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_hash con stato (open/resolved), priorità e conteggio occorrenze.
  • Dashboard Filament: widget e pagine per esplorare eventi e issue per progetto.

Requisiti

  • PHP 8.2+
  • Laravel 12.x
  • MySQL / MariaDB (o altro DB supportato da Laravel)
  • Composer, Node/npm per asset frontend

Installazione

# 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:generate

Configurazione database

In .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 migrate

Frontend (Filament)

npm install
npm run build

Utente admin e primo progetto

Crea 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 serve

Apri 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).

Variabili d’ambiente principali

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.).

API Ingest

  • 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à).

Struttura app

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

Sviluppo

# Server + queue + log + vite
composer dev

Oppure in terminali separati:

php artisan serve
php artisan queue:listen
npm run dev

Test

composer test
# oppure
php artisan test

Licenza

MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages