Add database overview feature with metrics and UI enhancements

This commit introduces a detailed database overview endpoint and service, providing key metrics such as replication status, database sizes, and performance indicators. On the frontend, a new UI section displays these metrics along with improved forms and troubleshooting tips. Enhancements improve user experience by adding informative tooltips and formatting for byte and time values.
This commit is contained in:
2026-02-12 10:00:13 +01:00
parent d1d8ae43a4
commit f12dd46c21
10 changed files with 643 additions and 15 deletions

View File

@@ -0,0 +1,79 @@
from datetime import datetime
from pydantic import BaseModel
class DbSizeItem(BaseModel):
name: str
size_bytes: int
class TableSizeItem(BaseModel):
schema: str
table: str
size_bytes: int
class ReplicationClientItem(BaseModel):
application_name: str | None = None
client_addr: str | None = None
state: str | None = None
sync_state: str | None = None
write_lag_seconds: float | None = None
flush_lag_seconds: float | None = None
replay_lag_seconds: float | None = None
replay_lag_bytes: float | None = None
class DiskSpaceInfo(BaseModel):
source: str
status: str
free_bytes: int | None = None
message: str | None = None
class InstanceOverview(BaseModel):
server_version: str | None = None
role: str
postmaster_start_time: datetime | None = None
uptime_seconds: float | None = None
current_database: str | None = None
port: int | None = None
class StorageOverview(BaseModel):
current_database_size_bytes: int | None = None
all_databases: list[DbSizeItem]
largest_tables: list[TableSizeItem]
wal_directory_size_bytes: int | None = None
disk_space: DiskSpaceInfo
class ReplicationOverview(BaseModel):
mode: str
replay_lag_seconds: float | None = None
replication_slots_count: int | None = None
active_replication_clients: int | None = None
clients: list[ReplicationClientItem]
class PerformanceOverview(BaseModel):
xact_commit: int | None = None
xact_rollback: int | None = None
deadlocks: int | None = None
temp_files: int | None = None
temp_bytes: int | None = None
blk_read_time: float | None = None
blk_write_time: float | None = None
checkpoints_timed: int | None = None
checkpoints_req: int | None = None
autovacuum_workers: int | None = None
class DatabaseOverviewOut(BaseModel):
collected_at: datetime
cache_ttl_seconds: int
instance: InstanceOverview
storage: StorageOverview
replication: ReplicationOverview
performance: PerformanceOverview
partial_failures: list[str]