Wrapper de données étrangères StableNet®

Conditions préalables

  • Une base de données PostgreSQL avec un utilisateur autorisé à modifier les objets de la base de données. Le wrapper de données étrangères doit être installé sur la même instance server que celle que le server de base de données exécute.

Installation

Installer RPM à partir de SKOOR Repo

dnf install eranger-stablenet-fdw

Configuration

Fichier de configuration

/etc/stablenet-fdw/stablenet-fdw.conf

[global]

accept_insecure_certificate = false
                                        # Accept insecure certificates
                                        # (self-signed, expired, etc.)
                                        # when connecting to the web service
default_user = 
                                        # Default user name for the web service.
                                        # This is used in case no authorization 
                                        # is provided by the SQL client.
default_password =
                                        # Default password for the web service.
                                        # This is used in case no authorization 
                                        # is provided by the SQL client.
skoor_auth_url = http://localhost:8094
                                        # URL of the SKOOR web service
                                        # (default: http://localhost:8094)
                                        # This is used to get the StableNet®
                                        # auth tokens.

[webservice]  

url =
                                        # URL of StableNet® the web service

#[webservice_<server_id>]               # Optional, if multiple StableNet® servers 
                                        # are used. Replace <server_id> with a unique
                                        # identifier for the StableNet® server.
                                        # Only alphanumeric lower case characters are allowed.
                                        # Please note, that every webservice section 
                                        # must have a unique identifier if multiple 
                                        # StableNet® servers are used.

#server_name = 
                                        # Unique name of the connected StableNet®
                                        # server. This should be a human readable
                                        # name, not a technical identifier.
                                        # Defaults to server_id if omitted.
#url =
                                        # URL of the StableNet® the web service

Des options peuvent également être fournies avec mes variables d'environnement en utilisant le préfixe STABLENET_FDW_WEBSERVICE_ et le nom de l'option en majuscules (par exemple STABLENET_FDW_WEBSERVICE_URL ). Pour les paramètres global , GLOBAL doit être omis de la clé ENV (par exemple STABLENET_FDW_DEFAULT_USER ).

url est l'URL de base du service Web de l'API StableNet®. Il a généralement la forme https://<host>:5443/api/1 .

Plusieurs instances StableNet® peuvent être définies à l'aide de plusieurs sections webservice avec des suffixes server_id uniques. Le server_id est utilisé comme identifiant interne pour, par exemple, obtenir la chaîne d'autorisation correspondante de SKOOR Auth . Un server_name approprié doit être défini pour identifier le server dans les tables étrangères et agrégées. Cela peut également être configuré à l'aide de variables d'environnement (par exemple STABLENET_FDW_WEBSERVICE_URL_TEST , STABLENET_FDW_WEBSERVICE_SERVER_NAME_TEST ).

Après un changement de configuration, le Server PostgreSQL doit être redémarré.

systemctl restart postgresql-13

Initialisation des tables étrangères

Initialisation des tables étrangères nécessaires au wrapper de données étrangères.

/opt/stablenet-fdw/init-foreign-tables.sh -h <host> -p <port> -d <database> -U <user> -o <owner>

par exemple

/opt/stablenet-fdw/init-foreign-tables.sh -U postgres -h localhost -p 5432 -d infosim -o infosim

Cette commande doit être exécutée après chaque mise à jour d' eranger-stablenet-fdw pour obtenir de nouvelles définitions de table.

Tester la connexion

psql -h localhost -p 5432 -U infosim -d infosim -c "SELECT * from stablenet.stablenet_info;"

Cela devrait renvoyer le nombre d'appareils dans l'instance StableNet® connectée.

Agrégation de données

Initialisation des données agrégées

Initialise l'hypertable Timescale nécessaire pour les données de métriques agrégées.

/opt/stablenet-fdw/init-aggregated-data.sh -h <host> -p <port> -d <database> -U <user> -o <owner> \
-i <interval> [-m <metric_keys>] [-f <tag_filter>]

-m Liste de clés de métriques séparées par des virgules à pré-agréger. Peut être omis de précharger les données pour toutes les métriques, mais cela peut prendre très longtemps. Par exemple "SNMP_1,SNMP_2,SNMP_3"

-i Intervalle de préchargement des données. par exemple 6 months , 1 week , 5 days

-f Filtre de balise pour filtrer les mesures, par exemple "'Device Domain' eq 'Test'"

Initialisation de l'actualisation des données agrégées

Crée une tâche TimescaleDB pour mettre à jour périodiquement les données agrégées pour des métriques données

/opt/stablenet-fdw/init-aggregated-data-refresher.sh -h <host> -p <port> -d <database> -U <user> -o <owner> \
[-m <metric_keys>][-f <tag_filter>]

-m Liste de clés de métriques à agréger, séparées par des virgules. Peut être omis pour actualiser les données de toutes les métriques. Par exemple "SNMP_1,SNMP_2,SNMP_3"

-f Filtre de balise pour filtrer les mesures, par exemple "'Device Domain' eq 'Test'"

Ajouter/supprimer des métriques

Intégrer dans SKOOR

Le StabeleNet FDW peut être intégré en créant une nouvelle source de données dans la section Données et objets .

image-20240313-115126.png

Après la sauvegarde, l'ampoule de la navigation doit devenir verte.

image-20240313-120727.png

Les tables étrangères peuvent être inspectées dans l'onglet Données .

image-20240313-121026.png

Alors que certaines tables étrangères peuvent être inspectées immédiatement (par exemple stablenet_taggable_device ), d'autres nécessitent des qualificatifs obligatoires et ne peuvent pas être prévisualisées. Voir le tableau ci-dessous pour les qualifications obligatoires.

Tables étrangères

Nom

Des champs

Qualifications

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 (obligatoire)
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 (obligatoire)
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 (secondes)
"timestamp" TIMESTAMPTZ
min double precision
max double precision
avg double precision
tag_filter TEXT

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

Bien que measurement_id et metric_key soient facultatifs, il n'est pas recommandé d'exécuter des requêtes sans. Cela lit les données de mesure de toutes les mesures et de toutes les métriques, ce qui peut prendre beaucoup de temps à lire et impose une lourde charge au server StableNet. Conseillé uniquement pour des plages horaires très courtes < 1h. Si plusieurs mesures et métriques sont nécessaires, la table stablenet_measurement_data_aggregated doit être utilisée.

Données de mesure agrégées

Agrégé par heure, mis à jour automatiquement toutes les heures. Peut être utilisé pour effectuer des requêtes analytiques sur une large gamme de mesures et sur de longues plages de temps.

Est essentiellement une hypertable Timescale ( https://docs.timescale.com/ ). La taille des morceaux est de 7 jours, les morceaux sont compressés après 7 jours.

Nom

Des champs

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 contient uniquement les données des clés de métriques configurées.