StableNet® Fremddaten-Wrapper

Voraussetzungen

  • Eine PostgreSQL-Datenbank mit einem Benutzer, der Datenbankobjekte ändern darf. Der Foreign Data Wrapper muss auf derselben Server installiert sein, auf der der Server ausgeführt wird.

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 Komma 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.