feat: метрики — дайджест бакета при разряжении (крайности и простои не теряются)
Прореживание оставляло одну реальную точку на бакет, поэтому всплеск CPU под
98% две минуты или падение, пришедшееся ровно на удалённую точку, исчезали с
графика навсегда. Теперь вместе с выжившей точкой пишется дайджест интервала
в metrics.agg_json: n/exp (пришло замеров против ожидаемых — n < exp значит
простой), min/max по cpu/ram/swap/load/сеть и по каждому маунту диска.
Пишется только там, где бакет реально схлопывается (n > 1), поэтому сырые
сутки остаются сырыми, а повторный прогон ничего не перезаписывает.

- metrics_retention: _Bucket копит крайности; границы бакета для DELETE
  собираются через datetime (корректный перенос через час/сутки), удаление —
  по индексу, без списка id в памяти.
- схема + ALTER: metrics.agg_json.
- API /servers/{id}/metrics и MCP server_history отдают точку с полем agg;
  прореживание внутри тула сливает дайджесты выкинутых точек, а не
  выбрасывает их вместе с крайностями.
1 parent 2a60dd3 commit c2bf7136c15fe3cd3b4999d9bdb8845d81ef4d39
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 6 hours ago
Showing 5 changed files
View
panel/backend/app/api/servers.py
View
panel/backend/app/db.py
View
panel/backend/app/mcp.py
View
panel/backend/app/metrics_retention.py
View
panel/backend/app/schema.sql