feat(openspec): vesti-alerts — 6 алертов на компоненты VESTI (web/publisher/tunnel/db/stale); OpenSpec change

This commit is contained in:
kpa39l
2026-09-13 15:34:47 +00:00
parent df1ebed76d
commit 62a4f1a0db
7 changed files with 342 additions and 1 deletions
@@ -0,0 +1,99 @@
# vesti-alerts
## ADDED Requirements
### Requirement: VestiWebDown
Алерт на недоступность web-интерфейса VESTI (:8400, systemd-юнит).
#### Scenario: web не отвечает
- Given метрика `vesti_web_up{component="vesti"}` = 0
- When условие держится 2 минуты
- Then алерт `VestiWebDown` переходит в Firing (severity critical)
#### Scenario: web восстановился
- Given метрика `vesti_web_up{component="vesti"}` = 1
- When алерт в Firing
- Then алерт закрывается автоматически
### Requirement: VestiPublisherDown
Алерт на недоступность publisher-сервиса VESTI (:8410, /healthz).
#### Scenario: publisher не отвечает
- Given метрика `vesti_publisher_health{component="vesti"}` = 0
- When условие держится 2 минуты
- Then алерт `VestiPublisherDown` переходит в Firing (severity critical)
#### Scenario: publisher восстановился
- Given метрика `vesti_publisher_health{component="vesti"}` = 1
- When алерт в Firing
- Then алерт закрывается автоматически
### Requirement: VestiPublisherContainerDown
Алерт на остановку Docker-контейнера publisher.
#### Scenario: контейнер publisher не в статусе Up
- Given метрика `vesti_publisher_docker{component="vesti"}` = 0
- When условие держится 2 минуты
- Then алерт `VestiPublisherContainerDown` переходит в Firing (severity critical)
#### Scenario: контейнер publisher снова Up
- Given метрика `vesti_publisher_docker{component="vesti"}` = 1
- When алерт в Firing
- Then алерт закрывается автоматически
### Requirement: VestiTunnelDown
Алерт на недоступность SOCKS5-туннеля Telegram (:1080).
#### Scenario: туннель недоступен
- Given метрика `vesti_telegram_tunnel{component="vesti"}` = 0
- When условие держится 2 минуты
- Then алерт `VestiTunnelDown` переходит в Firing (severity critical)
#### Scenario: туннель восстановился
- Given метрика `vesti_telegram_tunnel{component="vesti"}` = 1
- When алерт в Firing
- Then алерт закрывается автоматически
### Requirement: VestiDbDown
Алерт на недоступность SQLite-базы vesti.db.
#### Scenario: БД недоступна
- Given метрика `vesti_db_ok{component="vesti"}` = 0
- When условие держится 2 минуты
- Then алерт `VestiDbDown` переходит в Firing (severity critical)
#### Scenario: БД восстановилась
- Given метрика `vesti_db_ok{component="vesti"}` = 1
- When алерт в Firing
- Then алерт закрывается автоматически
### Requirement: VestiDbStale
Алерт на устаревание данных краулера (не запускался >30 минут).
#### Scenario: краулер не запускался более 30 минут
- Given метрика `vesti_db_last_run_ts{component="vesti"}` = T
- When `time() - T` > 1800 секунд и условие держится 5 минут
- Then алерт `VestiDbStale` переходит в Firing (severity warning)
#### Scenario: краулер снова запустился
- Given метрика `vesti_db_last_run_ts{component="vesti"}` обновлена (time() - ts < 1800)
- When алерт в Firing
- Then алерт закрывается автоматически