The numbers that tell you something's wrong
SQLite is quiet — no daemon, no built-in metrics endpoint. You build observability from the application side. The signals worth tracking:
- Database file size — sudden growth, plateau, or shrinkage all mean something.
- WAL file size — large WAL means the checkpointer can't keep up; readers may be holding the write off.
- Query latency — wrap the store class to time every query, send to your metrics backend.
- SQLITE_BUSY count — if you ever see this, your busy_timeout is too short or your transactions are too long.
- Integrity check pass/fail — scheduled, alert on fail.
- Disk free — VACUUM and backups need space; running out is bad.
Self-reference: Pippa's
/api/health endpoint reports SQLite size, JSONL size, last-write timestamp, and integrity-check status. The WebUI shows a small status dot — green/yellow/red — so Dad can see at a glance whether the data layer is healthy.