Dasha 1.8: recomendaciones de índices, análisis de E/S, comprobaciones de esquemas e información de los registros
Dasha es un panel de rendimiento de código abierto diseñado para gestionar entornos PostgreSQL. Se conecta a los clústeres mediante un rol con permisos de solo lectura, permite conocer el estado y la actividad actual de las bases de datos y ofrece orientación sobre las acciones que conviene realizar. No requiere la instalación de ningún componente en los hosts de las bases de datos, ya sea un agente o extensiones adicionales a las que ya se encuentren instaladas.
Una sola instancia de Dasha puede gestionar múltiples clústeres y todas sus réplicas. Dado que la mayoría de las estadísticas de PostgreSQL son específicas de cada instancia y no se replican, Dasha consulta todos los hosts de un clúster para obtener una visión global de la situación. Por ejemplo, un índice que parece no utilizarse en el servidor primario podría estar atendiendo toda la carga de lectura de una réplica en standby.
Novedades desde la última publicación
- Recomendaciones de índices. Dasha analiza
pg_stat_statementsen cada host del clúster para identificar los índices B-tree que faltan y recomendar su creación. Para cada índice propuesto, indica el orden de las columnas, proporciona una sentenciaCREATE INDEX CONCURRENTLYlista para ejecutar e identifica las consultas que se beneficiarían de él, junto con la proporción del tiempo de ejecución que representan. El análisis también tiene en cuenta los contadores de escritura y las tablas particionadas medianteATTACH PARTITION. Las recomendaciones pueden complementarse con planes de ejecución registrados porauto_explain, que muestran los escaneos secuenciales de la tabla, su costo y el número de registros descartados por los filtros. Si la estimación de la cantidad de registros es incorrecta, Dasha advierte que conviene ejecutarANALYZEantes de crear el índice. - Página de E/S basada en
pg_stat_io(PostgreSQL 16+). Permite analizar las operaciones de E/S del servidor según el tipo de backend, el objeto y el contexto (normal, vacuum, bulkread y bulkwrite), incluyendo WAL en PostgreSQL 18. Ofrece un modo en vivo y un historial de instantáneas, junto con indicadores sobre la eficiencia deshared_buffers, el costo de vacuum y las operaciones masivas. - Validaciones del esquema. 17 comprobaciones que permiten detectar problemas estructurales que podrían pasar inadvertidos hasta que se produce un fallo. Entre ellas se incluyen secuencias cercanas a agotarse, tablas sin clave primaria ni clave única, relaciones
UNLOGGEDque quedaron olvidadas, un esquemapublicdonde cualquier usuario puede crear objetos (CVE-2018-1058), UUID almacenados como varchar, claves foráneas que permiten valores nulos, restriccionesNOT VALIDque nunca se validaron y palabras reservadas utilizadas como nombres. Cada hallazgo indica su nivel de severidad e incluye el SQL necesario para solucionarlo. - Análisis de logs. La búsqueda de logs ahora es compatible con OpenSearch, Elasticsearch y VictoriaLogs, además de Yandex Managed PostgreSQL. Los eventos de un período de tiempo se agrupan por categorías (deadlocks, esperas de bloqueos, cancelaciones, checkpoints, autovacuum, archivos temporales y errores), mostrando también las plantillas de mensajes más frecuentes. Los planes generados por
auto_explainse agrupan por sentencia y por estructura del plan. El árbol de ejecución permite detectar escaneos secuenciales sobre tablas grandes, estimaciones de registros que difieren por varios órdenes de magnitud y operaciones de ordenamiento que terminaron utilizando disco. Al comparar dos períodos, se muestran las sentencias cuyos planes se han deteriorado. - Análisis de consultas por base de datos. El informe de consultas y los paneles de las 10 consultas principales permiten cambiar entre la base de datos actual y la instancia completa.
- Soporte para Postgres Pro. Si
pg_stat_statementsno está disponible, Dasha utilizapgpro_statsautomáticamente, sin necesidad de configuración adicional. - Detección automática de bases de datos. Dasha obtiene del clúster la lista de bases de datos y la mantiene actualizada.
Características
- Health Score: una puntuación global de 0 a 100 para cada instancia, calculada a partir de ocho categorías, que incluye recomendaciones priorizadas y asociadas a una base de datos concreta. También puede calcularse opcionalmente a partir de series temporales de Prometheus/VictoriaMetrics, incorporando la tendencia y una línea base estacional.
- Análisis de consultas: permite identificar las consultas con mayor tiempo de ejecución y generación de WAL, así como las consultas que están ejecutándose o bloqueadas y sus respectivos eventos de espera. También permite trabajar con snapshots de
pg_stat_statements, que pueden almacenarse en una base de datos, compartirse mediante una URL y compararse con otro snapshot o con los datos actuales. - Snapshots automáticos: un daemon independiente recopila snapshots de la contención de bloqueos a nivel de consultas y de toda la instancia cuando detecta picos de actividad o cambios de rol entre el primario y una réplica. Así, la información necesaria para averiguar qué ocurrió a las 03:00 estará disponible a la mañana siguiente.
- Análisis de índices: identifica bloat, índices duplicados o no válidos y árboles B sobre arrays. Además, permite determinar si es seguro eliminar un índice, considerando los reinicios de las estadísticas, los contadores por host y los índices particionados, en lugar de asumir que
idx_scan = 0significa que el índice no se utiliza. - Tablas y mantenimiento: muestra el tamaño de las tablas con un desglose de TOAST, ofrece información detallada de cada tabla y calcula los umbrales de autovacuum y wraparound utilizando la fórmula propia de PostgreSQL. También muestra el progreso de VACUUM e identifica las tablas e índices más activos a partir de snapshots delta programados.
- Bloqueos, esperas y conexiones: proporciona árboles de bloqueos, eventos de espera agrupados por tipo, estados y orígenes de las conexiones, así como información detallada sobre las sesiones activas.
- Control de acceso: ofrece tres modos de autenticación: acceso abierto, claves de API estáticas u OIDC con cookies de sesión cifradas. También incorpora RBAC mediante Casbin, tokens de acceso personal y limitación de solicitudes por identidad.
- Conector MCP: servidor MCP de solo lectura que permite a los asistentes de IA acceder a los diagnósticos de toda la flota. Dispone de 31 herramientas, que incluyen recomendaciones de índices, validaciones de esquemas, análisis de E/S, búsqueda en registros y detección de regresiones en los planes de ejecución. Además, ofrece 5 prompts, transferencia de tokens por usuario y una base de conocimientos integrada que contiene las reglas utilizadas para calcular las puntuaciones.
La interfaz está disponible en inglés, ruso y alemán.
Requisitos
- Los clústeres que se vayan a supervisar deben utilizar PostgreSQL 14 o una versión posterior (probado con las versiones 14 a 18) y ser accesibles mediante un rol con los permisos
pg_monitoryCONNECTen todas las bases de datos supervisadas. - Se requiere
pg_stat_statements(opgpro_statsen Postgres Pro) para recopilar estadísticas de las consultas. La extensiónpgstattuplees opcional. - La página de E/S está disponible únicamente con PostgreSQL 16 o versiones posteriores.
- Opcional: una fuente de logs (OpenSearch, Elasticsearch, VictoriaLogs o Yandex Managed PostgreSQL) para buscar registros y obtener información sobre los planes de ejecución, con auto_explain habilitado para analizar los planes.
- Opcional: una base de datos PostgreSQL independiente para almacenar snapshots, el historial de los objetos más activos y los tokens de acceso personal. El resto de las funcionalidades funciona sin necesidad de ella.
Documentación
- README: configuración, privilegios del rol de monitoreo, despliegue y valores de Helm
- Modelo de puntuación del Health Score
- Historial de cambios

