From: Dasha via PostgreSQL Announce <announce-noreply@postgresql.org>
To: PostgreSQL Announce <pgsql-announce@lists.postgresql.org>
Subject: Dasha - performance dashboard
Date: Wed, 12 Aug 2026 07:31:12 +0000
Message-ID: <178651987263.1222.1114848160838159264@wrigleys.postgresql.org> (raw)
Dasha is an open source performance dashboard for PostgreSQL fleets. It connects to your clusters
with a read-only role, shows what the databases are doing right now, and explains what to do about
it. Nothing is installed on the database hosts: no agent, no extension beyond the ones you already
have.
One instance serves many clusters and all of their replicas. Because most PostgreSQL statistics are
per-instance and are *not* replicated, Dasha reads every host of a cluster and reasons over the
combined picture — an index that looks unused on the primary may be serving the entire read
workload on a standby.
---
## Features
* **Health Score** — a composite 0-100 score per instance across eight categories, with
prioritized recommendations and per-database drill-down. Optionally computed from
Prometheus/VictoriaMetrics time series instead of point-in-time SQL, with a trend and seasonal
baseline.
* **Query analysis** — top queries by execution time and WAL, running and blocked queries, and
`pg_stat_statements` snapshots that can be saved to a storage database, shared by URL, and
diffed against another snapshot or against live data.
* **Automatic snapshots** — a separate daemon captures query and lock-contention snapshots on
activity spikes or primary/replica role changes, so the evidence exists the next morning, when
someone asks what happened at 03:00.
* **Index analysis** — bloat, duplicates, invalid indexes, B-tree on arrays, plus a *may I drop
this index?* verdict that accounts for statistics resets, per-host counters and partitioned
indexes, instead of trusting `idx_scan = 0`.
* **Tables and maintenance** — size with TOAST breakdown, per-table describe, autovacuum and
wraparound thresholds computed with PostgreSQL's own formula, vacuum progress, and hot
tables/indexes derived from scheduled delta snapshots.
* **Locks, waits, connections** — lock trees, wait events grouped by type, connection states and
sources, active session details.
* **Access control** — three auth modes (open, static API keys, or OIDC with encrypted session
cookies), Casbin RBAC, personal access tokens and per-identity rate limiting.
* **MCP connector** — a read-only [MCP](https://modelcontextprotocol.io) server that exposes the
fleet diagnostics to AI assistants: 26 tools, 5 prompts, per-user token passthrough, and an
embedded knowledge base of the scoring rules.
The interface is available in English, Russian and German.
## Requirements
* **PostgreSQL 14 or newer** (tested on 14-18) for the monitored clusters, reachable with a role
holding `pg_monitor` and `CONNECT`.
* `pg_stat_statements` for query statistics; `pgstattuple` is optional.
* A separate PostgreSQL database if you want snapshots, hot-object history and personal access
tokens — everything else works without it.
## Documentation
* [README](https://github.com/dbulashev/dasha/blob/main/README.md) — configuration, deployment, Helm values.
* [Health Score scoring model](https://github.com/dbulashev/dasha/blob/main/README-health-score.md)
* [Changelog](https://github.com/dbulashev/dasha/blob/main/CHANGELOG.md)
## License
Dasha is licensed under the **GNU General Public License v3.0**; see
[LICENSE](https://github.com/dbulashev/dasha/blob/main/LICENSE).
Project page: [github.com/dbulashev/dasha](https://github.com/dbulashev/dasha)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-announce@postgresql.org
Cc: announce-noreply@postgresql.org, pgsql-announce@lists.postgresql.org
Subject: Re: Dasha - performance dashboard
In-Reply-To: <178651987263.1222.1114848160838159264@wrigleys.postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox