Apache 2.0 · Open source

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
docker run -p 8080:8080 -v "$(pwd)/dashboards:/dashboards" \
  ghcr.io/bleemeo/dashglass -prometheus-url http://your-prometheus:9090

Poi 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:

binary
./dashglass -prometheus-url http://localhost:9090 -dashboards-dir ./dashboards

Nessun 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:

compose
git clone https://github.com/bleemeo/dashglass && cd dashglass
docker compose up

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

Dashboard di Dashglass in tema scuro: un indicatore, un pannello di valore e un grafico di traffico di rete, sopra una riga di pannelli CPU ripetuti per variabile.

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.

10
tipi di pannello
1
binario da distribuire
0
database da gestire

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.

Dashglass disegna i dashboard. Non ti sveglierà.

Qui l'alerting è un non-obiettivo, di proposito. Bleemeo Cloud aggiunge avvisi, notifiche, retention lunga e dashboard su tutti i tuoi server, sulle stesse metriche.

Ti manca l'agente che riempie Prometheus? Scopri Glouton.

Fino a 3 server gratis, per sempre · Senza carta di credito