Interrogazione di StableNet

Questa sezione si applica solo ai sistemi integrati con StableNet®.

I dati StableNet® possono essere interrogati da un set di dati aggregati su un database SKOOR locale e in tempo reale dall'API StableNet® . Le seguenti linee guida aiutano a combinare e ottimizzare questi due metodi.

Preparare una query di dati materializzati per dispositivi e misure

Il seguente esempio di query fornisce dati di base da utilizzare con un widget FilterMatrix (ad es. filtro per dispositivi o misure) e per unire i dati di misura dall'API StableNet® o dalla tabella dei dati aggregati. L'origine dati deve essere impostata su un tipo di StableNet.

-- Data query example "device_measurement"

SELECT   
  std.id AS device_id,
  std.display_name AS device_name,
  sm.id as measurement_id,
  sm.name as measurement_name
FROM stablenet_taggable_device std
JOIN stablenet_measurement sm 
  ON std.id = sm.dest_device_id

Poiché i dati dei dispositivi e delle misure non cambiano molto spesso, questa query dovrebbe essere materializzata. Le prestazioni aumenteranno in modo significativo.

Impostare l'intervallo di aggiornamento su giornaliero e creare indici per tutti gli attributi:

image-20240513-142234.png

Unire le tabelle esterne per i dati in tempo reale

Oltre alla query di dati materializzati preparata, i dati provenienti da StableNet® API possono essere uniti utilizzando una tabella esterna.

La parola chiave FROM nell'esempio seguente punta alla query materializzata preparata in precedenza.

SELECT   
  dm.device_id,
  dm.device_name,
  dm.measurement_name,
  dm.measurement_id,
  sma.metric_key,
  sma.metric_name,
  sma.interval,
  sma.min,
  sma.max,
  sma.avg,
  sma.timestamp
FROM device_measurement dm
JOIN stablenet_measurement_data sma 
  ON dm.measurement_id = sma.measurement_id
WHERE sma.start = ${begin}::timestamptz
  AND sma."end" = ${end}::timestamptz
  AND sma.bucket_size = EXTRACT(
    EPOCH FROM ('1 ' || ${bucket_size})::interval
  )::integer
  AND sma.metric_name = ${metric_name}

Nella dashboard o nell'anteprima dei dati, per questa query di esempio devono essere impostati i seguenti attributi:

image-20240516-132209.png
  • inizio/fine: Timestamp ISO 8601, ad esempio 2024-05-01T00:00:00Z

  • bucket_size: bucket temporale in parole come ora, giorno, mese, ecc.

  • metric_name: nome di una metrica StableNet® valida, come Round Trip Time (tempo di andata e ritorno).

Al posto di metric_name, provare a utilizzare l'attributo metric_key nella clausola WHERE per selezionare una metrica specifica se ne è disponibile più di una.

Unirsi alla tabella dei dati aggregati

Se le prestazioni sono più importanti dei dati in tempo reale, la tabella dei dati aggregati deve essere preferita alle tabelle esterne.

La parola chiave FROM nell'esempio seguente punta alla query materializzata preparata in precedenza.

SELECT   
  dm.device_id,
  dm.device_name,
  dm.measurement_name,
  dm.measurement_id,
  sma.metric_key,
  sma.metric_name,
  sma.interval,
  sma.min,
  sma.max,
  sma.avg,
  sma.timestamp
FROM device_measurement dm
JOIN stablenet_measurement_data_aggregated sma 
  ON dm.measurement_id = sma.measurement_id
WHERE sma.timestamp BETWEEN ${begin}::timestamptz AND ${end}::timestamptz
  AND sma.metric_name = ${metric_name}

Nella dashboard o nell'anteprima dei dati, per questa query di esempio devono essere impostati i seguenti attributi:

image-20240516-132037.png
  • inizio/fine: Timestamp ISO 8601, ad esempio 2024-05-01T00:00:00Z

  • metric_name: un nome di metrica StableNet® valido, come Round Trip Time (tempo di andata e ritorno).

Al posto di metric_name, provare a utilizzare l'attributo metric_key nella clausola WHERE per selezionare una metrica specifica se ne è disponibile più di una.

Tabelle straniere

Nome

Campi

Qualificatori

stablenet_info

server_name TEXT
name TEXT
version TEXT
technical_version TEXT

stablenet_taggable

server_name TEXT
domain TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

domain TEXT (obbligatorio)
id BIGINT
tag_filter TEXT

stablenet_taggable_device

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_interface

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_job

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_link

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_service

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_agent

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_tag_category

server_name TEXT
domain TEXT
id BIGINT
name TEXT
description TEXT

domain TEXT (obbligatorio)
id BIGINT

stablenet_measurement

server_name TEXT
id BIGINT
name TEXT
description TEXT
categories JSONB
dest_device_id BIGINT
dest_interface_id BIGINT
agent_id BIGINT
start_time TIMESTAMPTZ
end_time TIMESTAMPTZ
state TEXT
type TEXT
template_name TEXT
permanent BOOL
payload JSONB
active BOOL
tag_filter TEXT

tag_filter TEXT
dest_device_id BIGINT

stablenet_measurement_metric

server_name TEXT
measurement_id BIGINT
data_id BIGINT
description TEXT
expected_interval INT
key TEXT
name TEXT
only_average BOOL
unit TEXT

measurement_id BIGINT

stablenet_measurement_data

server_name TEXT
measurement_id BIGINT
metric_key TEXT
metric_name TEXT
"start" TIMESTAMPTZ
"end" TIMESTAMPTZ
bucket_size INT (secondi)
"timestamp" TIMESTAMPTZ
min double precision
max double precision
avg double precision
tag_filter TEXT

measurement_id BIGINT
metric_key TEXT
"start" TIMESTAMPTZ (obbligatorio)
"end" TIMESTAMPTZ (obbligatorio)
bucket_size INT (obbligatorio)
tag_filter TEXT

Sebbene measurement_id e metric_key siano opzionali, non è consigliabile eseguire le query senza. In questo modo si leggono i dati di tutte le misurazioni e di tutte le metriche, il che potrebbe richiedere molto tempo per la lettura e appesantire il server StableNet. È consigliabile solo per intervalli di tempo molto brevi < 1h. Se sono necessarie più misure e metriche, si deve usare la tabella stablenet_measurement_data_aggregated.

Dati di misurazione aggregati

Aggregati per ora, aggiornati automaticamente ogni ora. Può essere utilizzata per eseguire query analitiche su un'ampia gamma di misurazioni e su grandi intervalli di tempo.

È fondamentalmente un'ipertabella a scala temporale(https://docs.timescale.com/ ). La dimensione dei pezzi è di 7 giorni, i pezzi vengono compressi dopo 7 giorni.

Nome

Campi

stablenet_measurement_data_aggregated

server_name TEXT
measurement_id BIGINT
metric_key TEXT
metric_name TEXT
"timestamp" TIMESTAMPTZ NOT NULL
min double precision
max double precision
avg double precision

stablenet_measurement_data_aggregated contiene solo i dati delle chiavi metriche configurate.