Files
ns8-backup-monitor/README.md
T

90 lines
2.6 KiB
Markdown

# ns8-backup-monitor
Sistema di monitoraggio dei backup per **NethServer 8** basato su tre livelli:
1. **Trigger**: riceve l'alert da Prometheus/Alertmanager (`NsBackupFailed`)
2. **Correlazione**: interroga lo stato del piano e dei singoli moduli via Redis/cluster API
3. **Classificazione**: distingue tra successo totale, fallimento parziale o fallimento globale di repository
## Architettura
```
Alertmanager --webhook--> receiver.py
|
+-----------v-----------+
| correlator.py | <- stato piano + per-modulo
+-----------+-----------+
|
+-----------v-----------+
| repo_check.py | <- verifica repository destinazione
+-----------+-----------+
|
+-----------v-----------+
| notifier.py | <- email unica con esito classificato
+-----------------------+
```
## Logica di classificazione
| Esito | Condizione |
|---|---|
| SUCCESS | Tutti i moduli del piano completati, nessun errore repo |
| PARTIAL | Almeno un modulo fallito, repository raggiungibile |
| REPO_FAILURE | Errori di connessione/scrittura sulla destinazione, backup non avviati |
## Requisiti
- NethServer 8 (leader node)
- Python 3.9+
- Accesso Redis locale del cluster NS8
- `metrics1` configurato con `mail_to` e `mail_from`
- Alertmanager webhook abilitato verso `http://localhost:9099/alert`
## Installazione
```bash
bash install.sh
```
## Configurazione
```bash
cp config/config.yml.example config/config.yml
# editare config.yml con smtp, mail_to, soglie temporali
systemctl enable --now ns8-backup-monitor
```
## Struttura file
```
ns8-backup-monitor/
├── README.md
├── install.sh
├── ns8_backup_monitor/
│ ├── receiver.py # HTTP webhook receiver (porta 9099)
│ ├── correlator.py # correlazione stato backup cluster
│ ├── repo_check.py # verifica repository destinazione
│ └── notifier.py # invio email con esito classificato
├── systemd/
│ └── ns8-backup-monitor.service
└── config/
└── config.yml.example
```
## Integrazione Alertmanager
Aggiungere in `alertmanager.yml` il receiver:
```yaml
receivers:
- name: ns8-backup-monitor
webhook_configs:
- url: 'http://localhost:9099/alert'
send_resolved: true
route:
receiver: ns8-backup-monitor
matchers:
- alertname =~ "NsBackupFailed|NsBackupMissing"
```