diff --git a/servers/rpi.md b/servers/rpi.md index 982604e..618d16c 100644 --- a/servers/rpi.md +++ b/servers/rpi.md @@ -60,6 +60,7 @@ OneDrive на внешний HDD. Мониторится с fr1 через pushg - Доставка: `metrics-push ` = ssh с ключом `/etc/metrics-push/id_ed25519` (root, 600) на `rus@161.97.93.252`; host key fr1 закреплён в `/etc/metrics-push/known_hosts`. На fr1 ключ ограничен forced command (`servers/fr1.md` → Мониторинг). - `smart-metrics` заодно отдаёт `backup_disk_size_bytes`/`backup_disk_avail_bytes` для `/mnt/backup` (statfs, диск не будит). - Дашборд: https://mon.ruzzy.dev/d/rpi-disk (SMART, износ за сутки, свежесть бэкапов, заполнение). +- ⚠️ `BackupStale` видит только **существующие** серии — задача, ни разу не отчитавшаяся, им не ловится. Для этого `BackupNeverReported` на `absent()` (с 2026-10-11): OneDrive 12 ч, серверы 26 ч, роутер 30 ч, проверка OneDrive 8 дней; и `PushMetricsStale` на отсутствие SMART-метрик 1 ч. Доставка в Telegram проверена тестовым алертом 2026-10-11. - Алерты — группа `rpi` в `stacks/monitoring/prometheus/rules/alerts.yml`. ## Агент Astra (с 2026-10-11) diff --git a/stacks/monitoring/prometheus/rules/alerts.yml b/stacks/monitoring/prometheus/rules/alerts.yml index 39b6301..724b6fd 100644 --- a/stacks/monitoring/prometheus/rules/alerts.yml +++ b/stacks/monitoring/prometheus/rules/alerts.yml @@ -116,3 +116,37 @@ groups: labels: {severity: warning} annotations: summary: "{{ $labels.instance }}: диск в роутере (/mnt/router, SFTP) недоступен 30+ мин — вторая копия бэкапа не пишется" + + # BackupStale видит только существующие серии: если задача ни разу не отчиталась + # (таймер сломан, первый прогон упал до хука) — серии нет, и он молчит. Ловим отсутствие. + - alert: BackupNeverReported + expr: | + absent(backup_last_success_timestamp{instance="rpi",job="backup_onedrive"}) + for: 12h + labels: {severity: critical, instance: rpi, job: backup_onedrive} + annotations: + summary: "rpi: синхронизация OneDrive ни разу не отчиталась об успехе за 12+ ч — проверь onedrive-backup" + - alert: BackupNeverReported + expr: absent(backup_last_success_timestamp{instance="rpi",job="backup_servers"}) + for: 26h + labels: {severity: critical, instance: rpi, job: backup_servers} + annotations: + summary: "rpi: бэкап серверов fr1/ru1 не отчитывался 26+ ч — проверь servers-backup" + - alert: BackupNeverReported + expr: absent(backup_last_success_timestamp{instance="rpi",job="backup_router"}) + for: 30h + labels: {severity: critical, instance: rpi, job: backup_router} + annotations: + summary: "rpi: копия на диск роутера не отчитывалась 30+ ч — проверь router-backup" + - alert: BackupNeverReported + expr: absent(backup_last_success_timestamp{instance="rpi",job="backup_onedrive_verify"}) + for: 8d + labels: {severity: warning, instance: rpi, job: backup_onedrive_verify} + annotations: + summary: "rpi: проверка целостности OneDrive не отчитывалась 8+ дней — проверь onedrive-verify" + - alert: PushMetricsStale + expr: absent(push_time_seconds{instance="rpi",job="smart"}) + for: 1h + labels: {severity: warning, instance: rpi, job: smart} + annotations: + summary: "rpi: метрики SMART в pushgateway отсутствуют 1+ ч — малина/пуш лежат или pushgateway потерял данные"