Files
ns8-backup-monitor/README.md
T

2.6 KiB

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 install.sh

Configurazione

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:

receivers:
  - name: ns8-backup-monitor
    webhook_configs:
      - url: 'http://localhost:9099/alert'
        send_resolved: true

route:
  receiver: ns8-backup-monitor
  matchers:
    - alertname =~ "NsBackupFailed|NsBackupMissing"