Dashglass:dashboard per Prometheus, in un solo binario Go.
Un binario Go, nessun database, nient'altro da distribuire: la parte dashboard di Grafana, e solo quella.
Sviluppato da Bleemeo sugli stessi componenti di grafici e di editing PromQL del nostro pannello di monitoraggio. Modifichi nel browser, rileggi il diff in git.
Avvio rapido
Puntalo su un Prometheus e apri un browser
Esegui l'immagine pubblicata contro il tuo Prometheus.
docker run -p 8080:8080 -v "$(pwd)/dashboards:/dashboards" \
ghcr.io/bleemeo/dashglass -prometheus-url http://your-prometheus:9090Poi apri http://localhost:8080. I dashboard sono normali file nella directory montata: metti quella directory in git e hai il GitOps. Le immagini sono taggate latest e per release (CalVer, per esempio 2026.07.25.120000); un tag snapshot mobile segue il branch principale e può rompersi.
Parti da un'istanza vuota? La schermata iniziale propone dashboard di esempio in un clic — «Prometheus overview» e «Prometheus internals» — costruiti solo sulle metriche che Prometheus espone su se stesso, quindi mostrano dati reali su qualsiasi installazione.
Preferisci un binario unico? Gli eseguibili per Linux, macOS e Windows sono allegati a ogni release:
./dashglass -prometheus-url http://localhost:9090 -dashboards-dir ./dashboardsNessun Prometheus a portata di mano? Il repository include una demo Compose con un Prometheus che fa scraping di se stesso, così i dashboard di esempio hanno dati reali:
git clone https://github.com/bleemeo/dashglass && cd dashglass
docker compose upUna cosa da sapere prima di esporlo: un'istanza nuova parte senza autenticazione, quindi chiunque riesca a raggiungerla è un amministratore anonimo — un banner nell'interfaccia lo ricorda. Crea il primo utente da Admin → Users perché tutti debbano autenticarsi, oppure imposta DASHGLASS_BOOTSTRAP_ADMIN_PASSWORD per un deploy automatizzato.
L'applicazione
Una griglia, un editor PromQL e una modalità kiosk
Una griglia a 24 colonne con sezioni, annulla/ripeti e un'anteprima dal vivo che usa le tue variabili e il tuo intervallo di tempo reali. I pannelli si ripetono sui valori di una variabile, i data link portano variabili e intervallo correnti verso un altro dashboard o uno strumento esterno, e ogni grafico supporta zoom e selezione. Temi chiaro e scuro, più una modalità kiosk per gli schermi a parete.

Cosa fa
Costruire, collegare, versionare
I dashboard si modificano nell'interfaccia e restano semplici file, che puoi mettere in git. Le query non lasciano mai il backend. Questo è tutto il progetto.
Costruire
- Pannelli serie temporali, valore, indicatore, tabella, barre, heatmap, griglia di stato, markdown, immagine e orologio, con unità e soglie.
- Editor PromQL con autocompletamento e controllo dal vivo, appoggiato all'API di Prometheus.
- Variabili, anche concatenate, dove un elenco dipende da un altro.
- Ripetizione del pannello per variabile: una definizione, un riquadro per istanza.
- Data link e drill-down che portano le variabili correnti e $__from / $__to.
- Due editor: una griglia visuale e una vista as-code del file grezzo, validata al salvataggio.
- Modalità Explore per le query ad hoc, modalità kiosk e temi chiaro e scuro.
Collegare
- Il browser non parla mai con Prometheus: ogni query passa da un proxy in sola lettura nel backend.
- Le credenziali restano lato server — autenticazione basic o token bearer, mai nella pagina.
- Header aggiuntivi per la multi-tenancy Mimir/Cortex (X-Scope-OrgID) o uno schema Authorization personalizzato.
- CA personalizzata per un endpoint con autorità privata, e certificato client + chiave per mTLS.
- Il test di connessione verifica TLS, header e credenziali prima di salvare qualsiasi cosa.
- Fornisci la sorgente dati in dashglass.yaml, oppure configurala a runtime da Admin.
Versionare
- Serializzazione deterministica in JSON, YAML o TOML: modificare un campo produce un diff di una riga.
- Cronologia git nell'interfaccia: sfogliare i commit che toccano un dashboard, confrontarli, ripristinarne uno.
- Commit al salvataggio, a nome dell'utente autenticato, così git blame resta onesto.
- La sincronizzazione remota fa pull a intervalli e push dopo un commit, rebasando una cronologia divergente.
- Osservazione dei file e ricarica dal vivo via SSE: modifichi un file su disco e il dashboard aperto lo segue.
- La modalità provisioned (-readonly) rifiuta ogni scrittura, amministratori compresi.
- dashglass lint valida i file: un dashboard rotto fallisce in CI, non nel browser.
Eseguirlo
Un solo artefatto, qualunque sia il deploy
La SPA è incorporata nel binario Go, quindi non c'è altro da servire.
Docker
Il comando di avvio rapido qui sopra, da ghcr.io/bleemeo/dashglass. I tag seguono CalVer per release, più latest e uno snapshot mobile.
Binario unico
Gli eseguibili per Linux, macOS e Windows sono allegati a ogni release. Un file statico — solo le funzioni di cronologia git chiedono altro, cioè il binario git nel PATH.
Demo Compose
Un docker compose up in un clone ti dà Dashglass e un Prometheus che fa scraping di se stesso, così i dashboard di esempio mostrano dati reali.
Dai sorgenti
pnpm install, poi pnpm build-binary produce il binario unico con la SPA incorporata. La guida per i contributi copre il ciclo di sviluppo.
Documentazione:Guida utenteConfigurazione annotataDocumento di progettazione
Migrazione
Se arrivi da Grafana
Importa quello che hai già e vedi esattamente cosa è cambiato.
Da grafana.com
Incolla l'URL di un dashboard o il suo id numerico e premi Load. Il backend accetta solo un id numerico e parla solo con grafana.com, il che esclude gli SSRF.
Da un export JSON
Incolla o carica il JSON dello Share → Export di Grafana. La conversione avviene nel browser.
Al meglio possibile, e senza nasconderlo
Vengono convertiti i pannelli comuni, le righe in sezioni, le query PromQL, il templating e le variabili label_values. Ciò che non è mappabile viene importato così com'è invece di essere scartato, e ogni approssimazione è elencata prima del salvataggio.
Perimetro
Cosa Dashglass non è
Sono non-obiettivi del documento di progettazione, non lacune in attesa di essere colmate.
- Non è un sistema di alerting. Nessuna regola di allerta, nessun canale di notifica, nessuna gestione degli incidenti. Dashglass disegna ciò che il tuo Prometheus già sa; svegliare qualcuno non è il suo compito — è quello di Alertmanager, o di una piattaforma che lo fa per te.
- Non è una piattaforma multi-sorgente. Solo Prometheus. Il livello della sorgente dati è un'interfaccia, quindi un'altra resta possibile in futuro, ma SQL, Loki e i trace sono oggi esplicitamente fuori perimetro. Mimir e Cortex funzionano, tramite l'header di tenancy.
- Non è multi-tenant. Tre ruoli fissi — viewer, editor, admin — con utenti locali, header di reverse proxy oppure OIDC. Nessuna ACL per dashboard, nessun team, nessuna organizzazione. Chi lo ospita in casa ha ruoli veri; la linea è tracciata sul grano fine e sul multi-tenant.
- Non è un marketplace di plugin. I pannelli sono plugin, ma vengono composti al momento della build. Nessun caricamento di plugin di terze parti a runtime e nessun marketplace da sfogliare.
Le domande che ci fanno su Dashglass
Dove si colloca, e dove si ferma volutamente.
È un sostituto di Grafana?
Per la parte dashboard è esattamente l'intenzione — e importa ciò che hai già costruito. Per il resto no: alerting, sorgenti dati diverse da Prometheus e un ecosistema di plugin sono non-obiettivi dichiarati. Se ti servono, tieni Grafana.
Quali sorgenti dati sono supportate?
Prometheus e tutto ciò che parla la sua API HTTP, inclusi Mimir e Cortex, dove l'header di tenancy si imposta nella configurazione della sorgente. SQL, Loki e i trace sono fuori perimetro.
Il browser può raggiungere direttamente il mio Prometheus?
Mai. Ogni query passa da un proxy in sola lettura nel backend Go, quindi URL, credenziali, CA e certificato client restano lato server e non arrivano mai alla pagina.
Si possono fornire dashboard bloccati?
Sì. Parti con -readonly (o dashboards.readonly: true) e l'API rifiuta le scritture mentre l'interfaccia rimuove ogni possibilità di modifica, amministratori compresi. I dashboard si gestiscono allora solo modificando i file in git.
Come funziona l'autenticazione?
Un'istanza nuova è aperta di proposito: finché non esiste il primo utente, chiunque è amministratore anonimo, e un banner lo segnala. Crea il primo amministratore perché tutti debbano autenticarsi. Da lì: utenti locali con tre ruoli cumulativi, autenticazione tramite header di reverse proxy, oppure OIDC con authorization code + PKCE e mappatura dei gruppi sui ruoli. LDAP è previsto, non rilasciato.
Serve git per usarlo?
No. I dashboard sono file; git è ciò che rende quei file rivedibili. Le funzioni di cronologia richiedono che la directory sia un repository git e che il binario git sia nel PATH: senza uno dei due tutto il resto funziona e quelle funzioni semplicemente non compaiono. Trasformerai la directory in repository quando vuoi.
Costruito su strumenti di cui ti fidi già
Dashglass incorpora diversi progetti open source come librerie: Apache ECharts per i grafici, il pacchetto ufficiale CodeMirror PromQL di Prometheus per l'editing e l'autocompletamento, react-grid-layout per la griglia, Zod per lo schema dei dashboard e la validazione dei file, Chakra UI e React lato interfaccia, e Go con la SPA incorporata per l'unico artefatto da distribuire.