fix(metrics): дисковые тревоги в абсолютных ГБ + алерт на скорость утечки #3542
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3542
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/disk-alerts-absolute-thresholds"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Инцидент 16.09: кэш архивов Forgejo ел 2 ГБ/ч, диск на Beget (host=infra) — 145 ГБ. Проценты давали слишком короткое окно реакции ночью:
DiskSpaceLow(85%, for=15m) = 21 ГБ запаса ≈ 10 ч до нуля,DiskSpaceCritical(93%, for=5m) = 10 ГБ ≈ 5 ч.DiskSpaceLow/DiskSpaceCritical: пороги переведены с процентов на абсолютные ГБ свободного места (30 ГБ / 15 ГБ). Проценты на разных дисках значат разное: host=apps держит/-раздел ~910 ГБ, те же 85% там — ещё ~135 ГБ запаса; на host=infra (145 ГБ) это почти ничего. Абсолютный порог одинаково осмыслен на любом диске.mountpoint="/"— на/boot//boot/efi(меньше 1 ГБ целиком на обоих хостах) абсолютный порог горел бы постоянно.DiskSpaceDepletingFast:deriv()по 15-минутному окну, свободное место убывает быстрее ~1 ГБ/ч устойчиво 30 минут. Ловит именно быструю течь независимо от текущего уровня — пока Low/Critical ещё молчат, потому что места пока много.DiskWillFillIn24hне тронут по логике, только добавлен фильтрmountpoint="/"для консистентности и annotation с человеко-читаемым дефицитом в ГБ вместо сырых байт predict_linear.Как разделены роли (чтобы не было 3 писем об одном)
DiskSpaceDepletingFast— сигнал по СКОРОСТИ (>1 ГБ/ч), не зависит от уровня. Короткое окно (15m) → срабатывает быстро (~45 мин–1 ч).DiskWillFillIn24h— подтверждённый ТРЕНД на 6h, ловит более медленные утечки, которые короткое окно не поймает, но которые всё равно упрутся в ноль за сутки. Срабатывает позже (окно сглаживания).DiskSpaceLow/Critical— сигнал по АБСОЛЮТНОМУ уровню, независимо от того, есть ли активная утечка (например органический рост без резкого скачка).На одной и той же быстрой утечке
DiskSpaceDepletingFastиDiskWillFillIn24hМОГУТ сработать оба — это намеренная эскалация двумя разными сигналами в разное время (не дубль: разный текст, разное время срабатывания). Подробности — в комментарияхops/metrics/prometheus/rules/infra.yml.Verification
promtool check rules(prom/prometheus:v3.1.0, entrypoint/bin/promtool):Живые запросы к Prometheus на Beget (
docker exec gendesign-prometheus wget -qO- ...), сейчас (свободно 104.8 ГБ на host=infra, диск 145 ГБ):DiskSpaceLowraw expr (avail/1073741824 < 30) → пустой result (не горит)>1) → host=infra: -3.18 (растёт на ~3.2 ГБ/ч — недавно почистили кэш архивов), host=apps: 0.21 ГБ/ч (ниже порога) —DiskSpaceDepletingFastне горит>0) → host=infra: -360.7, host=apps: -699.9 (глубоко отрицательные = запас профицитный) —DiskWillFillIn24hне горитНе сделано (в рамках бюджета)
🤖 Generated with Claude Code
https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG