feat(alerts): алерты всей команде — детекторы, дедупликация, список (#15)
CI / ruff · mypy · pytest (pull_request) Successful in 4m49s
CI / ruff · mypy · pytest (pull_request) Successful in 4m49s
- детекторы по состоянию после каждого раунда снапшотов: краш, OOM, цикл рестартов, unhealthy, перегрузка ≥ 1 мин, мало места, Docker недоступен; пороги в config/alerts.yaml - AlertService: ключ kind+service, повтор в 10 мин — счётчик в исходном сообщении, «✅ восстановлено» ответом; разовые события (🛡) со счётчиком - рассылка всем активным (🛡 — только админам), темп ~25/с, RetryAfter, заблокировавший бота пропускается; alert_deliveries для правок и ответов - «🚨 Алерты»: активные + 7 дней по 10, карточка; кнопки «📜 Логи», «🩺 Статус» под алертом открывают новое сообщение, а не затирают алерт - 🛡 атаки через агента идут через общий сервис алертов - убраны заглушки «Раздел в разработке» — у всех разделов свои роутеры Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Пороги алертов (SPEC AL-2, AL-5). Читает app/alerts/detectors.py; неизвестный ключ — ошибка при старте.
|
||||
|
||||
# 🔁 цикл рестартов: столько рестартов за окно, секунды
|
||||
restart_loop_count: 3
|
||||
restart_loop_window: 600
|
||||
# 🔥 перегрузка: CPU выше (% ядра × число ядер) или RAM выше (% лимита) дольше, чем overload_for секунд
|
||||
overload_cpu_pct: 80
|
||||
overload_mem_pct: 90
|
||||
overload_for: 60
|
||||
# 💾 мало места: свободно меньше, %, на разделе с этим путём (том бота лежит на диске хоста)
|
||||
disk_low_pct: 10
|
||||
disk_path: /data
|
||||
# 🔌 зависимость недоступна дольше, секунды (Docker API)
|
||||
dependency_down_for: 300
|
||||
# Повтор того же алерта (тип + сервис) в этом окне, секунды, — счётчик в исходном сообщении, а не новое (AL-5)
|
||||
repeat_window: 600
|
||||
# Строк лога в сообщении алерта (AL-3)
|
||||
log_tail: 30
|
||||
Reference in New Issue
Block a user