9.10. DataSource Storage Backends

9.10.1. Introduzione

La storicizzazione dei dati raccolti tramite datasource e’ affidata ad un modulo di Sanet che si occupa di creare e aggiornare il database delle serie storiche.

9.10.2. Configurazione

Il modulo di backend viene configurato da file settings tramite i parametri:

  • DATASOURCE_STORAGE_HANDLER : modulo python da caricare per connettesi al backend.
  • DATASOURCE_STORAGE_PARAMS : dizionario con parametri di configurazione che dipendono dal modulo caricato.

Esempio:

DATASOURCE_STORAGE_HANDLER = 'core.api.datasource.rrd.RRDTOOLDataSourceStore'

DATASOURCE_STORAGE_PARAMS  = {
        ...
        ... parametri di configurazione specifici del modulo di beckend
        ...
}

9.10.3. Moduli di backend

9.10.3.1. RRDTOOL DataSource Store module

Per storicizzare i dati dei datasource tramite RRDTOOL e’ necessario usare il modulo:

DATASOURCE_STORAGE_HANDLER = 'core.api.datasource.rrd.RRDTOOLDataSourceStore'

9.10.3.1.1. Configurazione modulo

I parametri di configurazione del modulo sono:

Parametro Descrizione
storage_base_dir Directory dove salvare i file RRD
heartbeat_factor L’heartbeat dei file RRD viene alcolato moltiplicando il minperiod con questo valore.
rrdcached_flush_before_read Se impostato a true, qualuneuq operazione di lettura dati causa un flush preventivo del demone RRDCACHED

Esempio:

DATASOURCE_STORAGE_PARAMS  = { 
        # Base directory where the storage will put RRD files ( $DATA_DIR / <tenant_id> /rrds/ <rrd file id>.rrd )
        "storage_base_dir"           : DATA_DIR, 
        
        # RRD file's heartbead = DATASOURCE.min_period * heartbeat_factor
        #heartbeat_factor: 60,
        
        # Send FLUSH command to RRDCACHED before read fetching data from RRDs
        # Be sure RRDCACHED_ADDRESS is in your environment!!
        #"rrdcached_flush_before_read": False
}

9.10.3.1.2. Configurazione avanzata dei datasource

Il parametro storage-spec puo’ essere utilizzato per specificare parametri specifici di RRDTOOL non gestibili direttamente da Sanet.

Danger

quando viene modificato il parametro storage-spec (in un template o in una configurazione specifica), deve essere effettuata una operazione di aggiornamento dei file RRD. NON e’ predicibile quanto tempo sia necessaio a RRDTOOL per aggiornare tutti i file RRD potenzialmente coinvolti da questa configurazione.

Danger

La modifica della configurazione di Sanet e l’aggioranmento dei file RRD non sono operazioni atomiche e/o transazionali. In caso di errori di aggiornamento dei file RRD, Sanet non e’ in grado di garantire che alcuni file siano stati gia’ modificati con una configurazione inconsistente rispetto a quanto specificato nel database di configurazione di Sanet.

La configurazione avviene impostato una stringa con la seguente sintassi:

<option>=<value> <option>=<value> ...

I parametri che e’ possibile specificare sono i seguenti:

Nome Tipo Default Descrizione
DST stringa   I valori ammessi sono: COUNTER, DERIVE. Questo parametro viene considerato solo se il datasource e’ impostato di tipo COUNTER (gauge = false).
min numero   Valore minimo valido per la memorizzazione. Se il valore da salvare e’ inferiore, viene storicizzato il valore nullo (NaN).
max numero   Valore massimo valido per la memorizzazione. Se il valore da salvare e’ superiore, viene storicizzato il valore nullo (NaN).

Esempio:

DST=DERIVE min=0 max=5000000000

9.10.3.2. Null DataSource Store module

Questo modulo non salva e non restituisce dati.

Il suo utilizzo e’ prevalentemente a scopo di debug.

9.10.3.2.1. Configurazione modulo

Per utilizzarlo bisogna impostare nel file di configurazione di Sanet (settings.py):

DATASOURCE_STORAGE_HANDLER = 'core.api.datasource.nullstore.NullDataSourceStore'

Note

Il parametro DATASOURCE_STORAGE_PARAMS viene completamente ignorato

Il modulo non e’ parametrizzabile.

Note

Il parametro di configurazione DATASOURCE_STORAGE_PARAMS viene completamente ignorato.