StableNet® Fremddaten-Wrapper

Voraussetzungen

Es wird eine PostgreSQL-Datenbank mit einem Benutzer benötigt, der Datenbankobjekte ändern darf. Der Foreign Data Wrapper muss auf derselben Server installiert sein, auf der der Server läuft.

Beispiel: Erstellen Sie eine Datenbank „infosim“ , die der Rolle „infosim“ gehört:

psql -Upostgres
create role infosim with inherit login password 'infosim';
create database infosim with owner = infosim;

Installation

Installieren Sie RPM vom SKOOR Repo

dnf install eranger-stablenet-fdw

Aufbau

Konfigurationsdatei

/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

Optionen können auch durch Umgebungsvariablen bereitgestellt werden, indem das Präfix STABLENET_FDW_WEBSERVICE_ und der Optionsname in Großbuchstaben verwendet werden (z. B. STABLENET_FDW_WEBSERVICE_URL ). Für die global Einstellungen muss GLOBAL aus dem Schlüssel ENV weggelassen werden (z. B. STABLENET_FDW_DEFAULT_USER ).

url ist die Basis-URL des StableNet® API-Webdienstes. Sie hat normalerweise die Form https://<host>:5443/api/1 .

Mehrere StableNet®-Instanzen können mithilfe mehrerer webservice Abschnitte mit eindeutigen server_id Suffixen definiert werden. Die server_id wird als interne Kennung verwendet, um beispielsweise die passende Autorisierungszeichenfolge von SKOOR Auth abzurufen. Es sollte ein geeigneter server_name festgelegt werden, der zur Identifizierung des Server in den Fremd- und Aggregattabellen verwendet wird. Dies kann auch mithilfe von Umgebungsvariablen konfiguriert werden (z. B. STABLENET_FDW_WEBSERVICE_URL_TEST , STABLENET_FDW_WEBSERVICE_SERVER_NAME_TEST ).

Nach einer Konfigurationsänderung muss der PostgreSQL- Server neu gestartet werden.

systemctl restart postgresql-13

Initialisieren von Fremdtabellen

Initialisierte die vom Fremddaten-Wrapper benötigten Fremdtabellen.

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

z.B

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

Dieser Befehl sollte nach jedem Update von eranger-stablenet-fdw ausgeführt werden, um neue Tabellendefinitionen zu erhalten.

Testen der Verbindung

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

Dies sollte die Anzahl der Geräte in der verbundenen StableNet®-Instanz zurückgeben.

Datenaggregation

Initialisieren aggregierter Daten

Initialisiert die für aggregierte Messdaten benötigte Zeitskalen-Hypertabelle.

/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 Durch Kommas getrennte Liste der Metrikschlüssel zur Vorabaggregation. Kann weggelassen werden, um Daten für alle Metriken vorab zu laden, dies kann jedoch sehr lange dauern. Beispiel: "SNMP_1,SNMP_2,SNMP_3"

-i Intervall zum Vorladen der Daten. zB 6 months , 1 week , 5 days

-f Tag-Filter zum Filtern von Messungen, zB "'Device Domain' eq 'Test'"

Initialisierung der Aktualisierung aggregierter Daten

Erstellt einen TimescaleDB-Job, um aggregierte Daten für bestimmte Metriken regelmäßig zu aktualisieren.

/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 Durch Kommas getrennte Liste der zu aggregierenden Metrikschlüssel. Kann weggelassen werden, um die Daten für alle Metriken zu aktualisieren. Beispiel: "SNMP_1,SNMP_2,SNMP_3"

-f Tag-Filter zum Filtern von Messungen, zB "'Device Domain' eq 'Test'"

Metriken hinzufügen/entfernen

Integration in SKOOR

Das StabeleNet FDW kann durch die Erstellung einer neuen Datenquelle im Bereich „Daten und Objekte“ integriert werden.

bild-20240313-115126.png

Nach dem Speichern sollte die Glühbirne in der Navigation grün leuchten.

bild-20240313-120727.png

Die Fremdtabellen können auf der Registerkarte „Daten“ eingesehen werden.

bild-20240313-121026.png

Während einige Fremdtabellen sofort überprüft werden können (z. B. stablenet_taggable_device ), benötigen andere obligatorische Qualifizierer und können nicht in der Vorschau angezeigt werden. Die obligatorischen Qualifizierer finden Sie in der folgenden Tabelle.

Ausländische Tabellen

Name

Felder

Qualifikation

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

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

Obwohl measurement_id und metric_key optional sind, wird nicht empfohlen, Abfragen ohne auszuführen. Dadurch werden Messdaten aller Messungen und aller Metriken gelesen, was lange dauern kann und den StableNet- Server stark belastet. Nur für sehr kurze Zeiträume < 1 Stunde zu empfehlen. Wenn mehrere Messungen und Metriken benötigt werden, sollte die Tabelle stablenet_measurement_data_aggregated verwendet werden.

Aggregierte Messdaten

Stündlich aggregiert, stündlich automatisch aktualisiert. Kann verwendet werden, um Analyseabfragen für einen großen Messbereich und große Zeiträume durchzuführen.

Ist im Grunde eine Timescale-Hypertabelle ( https://docs.timescale.com/ ). Die Blockgröße beträgt 7 Tage, die Blöcke werden nach 7 Tagen komprimiert.

Name

Felder

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 enthält nur Daten für konfigurierte Metrikschlüssel.