Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wu3VQ-000RS8-1o for pgsql-announce@arkaria.postgresql.org; Wed, 12 Aug 2026 07:36:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wu3VO-006G4L-0N for pgsql-announce@arkaria.postgresql.org; Wed, 12 Aug 2026 07:36:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wu3RY-005vLQ-0Y for pgsql-announce@lists.postgresql.org; Wed, 12 Aug 2026 07:32:09 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wu3RV-00000000Jl9-3s47 for pgsql-announce@lists.postgresql.org; Wed, 12 Aug 2026 07:32:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Message-ID:Date:Reply-To:From:To:Subject: MIME-Version:Content-Type:Sender:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=aFcl93pSokIOzdO2Rr4alN9izz6syF8BNwlptPokONI=; b=tGLT26Q/jUJmH9Cd9C+fv18yVU kRIk13xULCgN/x3UQmPDd9JdVzrdmj6OXK/1+kwdHdnvYZ7uMhXkJ0z4Q8Ya2M3iGZA6UAUroQVDC qJjrAHu2OB8UPSWkev8IWhies9zmC0d002bFQ+Dt2545imj/VeGnqOmOEcJjbxtbjo9de5kvhXvlW B7PxfPYna+UhjuRHYZ6EKhDCv4OkG1+sk1mjt7JXbkOJgrZlVfcNKz28t5nM27sRsGpq1cfnWJCjt SWDGX5kcE0EBZ5z1ucvaQ8Mpmw5qx/ez0cCCenYJrAY9YNPWxGfseQpptL1Ix/FzFPJAyk8YJVQjE KHA85i2w==; Received: from wrigleys.postgresql.org ([2a02:16a8:dc51::60]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wu3RU-000hLb-2f for pgsql-announce@lists.postgresql.org; Wed, 12 Aug 2026 07:32:05 +0000 Received: from localhost ([127.0.0.1] helo=wrigleys.postgresql.org) by wrigleys.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1wu3RT-00000002EqK-2sva for pgsql-announce@lists.postgresql.org; Wed, 12 Aug 2026 07:32:03 +0000 Content-Type: multipart/alternative; boundary="===============7114062985022448392==" MIME-Version: 1.0 Subject: Dasha - performance dashboard To: PostgreSQL Announce From: Dasha via PostgreSQL Announce Reply-To: d.bulashev@gmail.com Date: Wed, 12 Aug 2026 07:31:12 +0000 Message-ID: <178651987263.1222.1114848160838159264@wrigleys.postgresql.org> X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-pglister-tags: related X-pglister-tagsig: c35f84297e31a628946b6d0d325b80e2b3ad9477715960fd329b44319606a8ac List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============7114062985022448392== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Dasha is an open source performance dashboard for PostgreSQL fleets. It con= nects to your clusters with a read-only role, shows what the databases are doing right now, and ex= plains what to do about it. Nothing is installed on the database hosts: no agent, no extension beyo= nd the ones you already have. One instance serves many clusters and all of their replicas. Because most P= ostgreSQL statistics are per-instance and are *not* replicated, Dasha reads every host of a cluster = and reasons over the combined picture =E2=80=94 an index that looks unused on the primary may be= serving the entire read workload on a standby. --- ## Features * **Health Score** =E2=80=94 a composite 0-100 score per instance across = eight categories, with prioritized recommendations and per-database drill-down. Optionally com= puted from Prometheus/VictoriaMetrics time series instead of point-in-time SQL, wi= th a trend and seasonal baseline. * **Query analysis** =E2=80=94 top queries by execution time and WAL, run= ning 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** =E2=80=94 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** =E2=80=94 bloat, duplicates, invalid indexes, B-tree= on arrays, plus a *may I drop this index?* verdict that accounts for statistics resets, per-host coun= ters and partitioned indexes, instead of trusting `idx_scan =3D 0`. * **Tables and maintenance** =E2=80=94 size with TOAST breakdown, per-tab= le describe, autovacuum and wraparound thresholds computed with PostgreSQL's own formula, vacuum pr= ogress, and hot tables/indexes derived from scheduled delta snapshots. * **Locks, waits, connections** =E2=80=94 lock trees, wait events grouped= by type, connection states and sources, active session details. * **Access control** =E2=80=94 three auth modes (open, static API keys, o= r OIDC with encrypted session cookies), Casbin RBAC, personal access tokens and per-identity rate lim= iting. * **MCP connector** =E2=80=94 a read-only [MCP](https://modelcontextproto= col.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 histor= y and personal access tokens =E2=80=94 everything else works without it. ## Documentation * [README](https://github.com/dbulashev/dasha/blob/main/README.md) =E2=80= =94 configuration, deployment, Helm values. * [Health Score scoring model](https://github.com/dbulashev/dasha/blob/ma= in/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/das= ha) --===============7114062985022448392== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Dasha - performance dashboard
 

Dasha - performance dashboard

Dasha is an open source performance dashboa= rd for PostgreSQL fleets. It connects to your clusters with a read-only role, shows what the databases are doing right now, and ex= plains what to do about it. Nothing is installed on the database hosts: no agent, no extension beyo= nd the ones you already have.

One instance serves many clusters and all o= f their replicas. Because most PostgreSQL statistics are per-instance and are not replicated, Dasha reads every host of a c= luster and reasons over the combined picture =E2=80=94 an index that looks unused on the primary may be= serving the entire read workload on a standby.


Features

  • Health = Score =E2=80=94 a composite 0-100 score per instance across eight = categories, with prioritized recommendations and per-database drill-down. Optionally com= puted from Prometheus/VictoriaMetrics time series instead of point-in-time SQL, wi= th a trend and seasonal baseline.
  • Query a= nalysis =E2=80=94 top queries by execution time and WAL, running a= nd blocked queries, and pg_stat_statements snapshots that can be saved to a storag= e database, shared by URL, and diffed against another snapshot or against live data.
  • Automat= ic snapshots =E2=80=94 a separate daemon captures query and lock-c= ontention 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 a= nalysis =E2=80=94 bloat, duplicates, invalid indexes, B-tree on ar= rays, plus a may I drop this index? verdict that accounts for statistics resets, per-host = counters and partitioned indexes, instead of trusting idx_scan =3D 0.
  • Tables = and maintenance =E2=80=94 size with TOAST breakdown, per-table des= cribe, autovacuum and wraparound thresholds computed with PostgreSQL's own formula, vacuum pr= ogress, and hot tables/indexes derived from scheduled delta snapshots.
  • Locks, = waits, connections =E2=80=94 lock trees, wait events grouped by ty= pe, connection states and sources, active session details.
  • Access = control =E2=80=94 three auth modes (open, static API keys, or OIDC= with encrypted session cookies), Casbin RBAC, personal access tokens and per-identity rate lim= iting.
  • MCP con= nector =E2=80=94 a read-only MCP 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

  • Postgre= SQL 14 or newer (tested on 14-18) for the monitored clusters, reac= hable with a role holding pg_monitor and CONNECT.
  • pg_stat_s= tatements for query statistics; pgstattuple is optional= .
  • A separate Post= greSQL database if you want snapshots, hot-object history and personal acce= ss tokens =E2=80=94 everything else works without it.

Documentation

License

Dasha is licensed under the GNU Gen= eral Public License v3.0; see LICENSE.

Project page: gith= ub.com/dbulashev/dasha

This email was sent to you from Dasha. It was delivered on their behalf by the PostgreSQL project. Any questions about the content of the message shou= ld be sent to Dasha.

You were sent this email as a subscriber of the pgsql-announce mai= linglist, for the content tag Related Open Source. To unsubscribe from further emails, or change which emails you want to receive, please click th= e personal unsubscribe link that you can find in the headers of this email, or visit https://lists.postgresql.org/unsubscribe/.
 
--===============7114062985022448392==--