10.10. DataSource Storage Backends¶
Contenuti
10.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.
Le modalita' con cui Sanet crea e aggiorna le serie storiche dipende dal backend in uso.
Per specificare il backend da usate (e i suoi parametri di funzionamento) si rimanda a Configurazione del datasource backend.
10.10.1.1. Il parametro storage spec¶
Per ogni datasource e' possibile specificare tramite il parametro storage-spec parametrizzazioni aggiuntive che influenzano il comportamento del backend usato.
Per sapere come configurare il parametro storage-spec bisogna consultare la documentazione specificia del backend in uso. Si rimanda a Moduli di backend.
Note
se si specificano parametrizzazioni non valide per il backend usato, semplicemente vengono ignorate.
10.10.2. Configurazione del datasource backend¶
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 = { "storage_base_dir" : '/var/lib/rrds', rrdcached_flush_before_read": True }
10.10.3. Moduli di backend¶
10.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'
10.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, qualunque operazione di lettura dati causa un flush preventivo del demone RRDCACHED
max_retention_interval
Se impostato, intervallo massimo di retention, espresso in secondi. Se non specificato, vale la retention configurata nel parametro DATA_RETENTION_MAX_DAYS.
Esempio:
DATASOURCE_STORAGE_PARAMS = { "heartbeat_factor" : 10 , # 10 volte il "minperiod" "max_retention_interval" : 180 , # ~sei mesi }
10.10.3.1.2. Allocazione storage su filesystem¶
Per ogni datasource definito nel sistema viene creato un file RRD.
La dimensione di un file RRD e' statica e dipende dal minperiod e dalla retention massima configurata.
Con una rentention di un anno questi sono le stime di occupazione di un file RRD
minperiod
Dimensione file RRD
5 s (5)
~50.5 Mb
10 s (10)
~25.2 Mb
20 s (20)
~12.6 Mb
30 s (30)
~8.4 Mb
1 m (60)
~4.2 Mb (DEFAULT)
3 m (180)
~1.4 Mb
5 m (300)
~841 Kb
10 m (600)
~421 Kb
30 m (1800)
~140 Kb
1 h (3600)
~70 Kb
6 h (21600)
~12 Kb
12 h (43200)
~6 Kb
24 h (86400)
~3 Kb
Se viene modificata la retention o il minperiod associato ad un datasource e' necessario ridimensionare i file allocati con il comando fix_ds_storage_spec.
In fase di riallocazione viene modificato:
il parametro step
il numero di entry/row dell'RRA usato per memorizzare i dati storici.
10.10.3.1.3. Opzioni di configurazione avanzate dei datasource (storage-spec)¶
Il parametro storage-spec (nella sezione datasource di un datagroup-template) puo' essere utilizzato per specificare parametri specifici di RRDTOOL non gestibili direttamente da Sanet.
Esempio:
datagroup-template test ... datasource ds1 ... storage-spec "...." <------- ... exit ... exit
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).
max_retention_interval
numero
Intervallo massimo di retention che sovrascrive il default configurato a livello globale.
Esempio:
datagroup-template test ... datasource ds1 ... storage-spec "DST=DERIVE min=0 max=5000000000" ... exit ... exit
10.10.3.1.4. Debugging¶
E' possibile abilitare il logging del modulo aggiungendo al file di configurazione (settings.py) la configurazione seguente:
LOGGING['loggers']['sanet.core.api.datasource.rrd'] = { 'handlers' : ['console'], 'level': logging.DEBUG }
10.10.3.2. Null DataSource Store module¶
Questo modulo non salva e non restituisce dati.
Il suo utilizzo e' prevalentemente a scopo di debug.
10.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.