StableNet® Foreign Data Wrapper
Voraussetzungen
Eine PostgreSQL-Datenbank mit einem Benutzer, der berechtigt ist, Datenbankobjekte zu ändern, ist erforderlich. Der Fremddaten-Wrapper muss auf der gleichen Server-Instanz installiert sein, auf der auch der Datenbankserver läuft.
Beispiel: Anlegen der Datenbank infosim im Besitz der Rolle infosim:
export DB_NAME=infosim
mkdir -p /var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/tab_space/${DB_NAME} \ /var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/idx_space/${DB_NAME} && \ chown -R postgres:postgres /var/lib/pgsql/custom/user_tblspc
psql -Upostgres -c "CREATE ROLE $DB_NAME WITH LOGIN PASSWORD '$DB_NAME';"
psql -Upostgres -c "CREATE TABLESPACE ${DB_NAME}_tab OWNER $DB_NAME \ LOCATION '/var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/tab_space/$DB_NAME';"
psql -Upostgres -c "CREATE TABLESPACE ${DB_NAME}_idx OWNER $DB_NAME \ LOCATION '/var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/idx_space/$DB_NAME';"
psql -Upostgres -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_NAME TEMPLATE template0 \ TABLESPACE ${DB_NAME}_tab ENCODING 'UTF8' LC_COLLATE 'de_CH.UTF-8' LC_CTYPE 'de_CH.UTF-8';"
Standard-Installation
RPM aus SKOOR Repo installieren
dnf install eranger-stablenet-fdw
Konfiguration
Konfig-Datei
/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 mit dem Präfix STABLENET_FDW_WEBSERVICE_
und dem Optionsnamen in Großbuchstaben angegeben werden (z. B. STABLENET_FDW_WEBSERVICE_URL
). Für die Einstellungen von global
muss GLOBAL
im ENV-Schlüssel 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 über mehrere webservice
-Abschnitte mit eindeutigen server_id
-Suffixen definiert werden. Der server_id
wird als interner Bezeichner verwendet, um z.B. den passenden Autorisierungsstring von SKOOR Auth zu erhalten. Es sollte eine entsprechende server_name
gesetzt werden, die zur Identifizierung des Servers in den fremden und aggregierten Tabellen verwendet wird. Dies kann auch über 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
Initialisierung der fremden Tabellen
Initialisierung der fremden Tabellen, die vom Fremddaten-Wrapper benötigt werden.
/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 jeder Aktualisierung 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;"
Dieser Befehl sollte die Anzahl der Geräte in der verbundenen StableNet®-Instanz zurückgeben.
Daten-Aggregation
Initialisierung der aggregierten Daten
Initialisiert die Zeitskala-Hypertabelle, die für aggregierte Metrikdaten benötigt wird.
/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>] [-r <retention>]
-m
Kommagetrennte Liste von Metrikschlüsseln zur Voraggregation. Kann weggelassen werden, um Daten für alle Metriken vorzuladen, aber dies kann sehr lange dauern. z.B.. "SNMP_1,SNMP_2,SNMP_3"
-i
Intervall zum Vorladen von Daten, z. B. 6 months
, 1 week
, 5 days
-f
Tag-Filter zum Filtern von Messungen, z. B. "'Device Domain' eq 'Test'"
-r
Richtlinie zur Datenaufbewahrung, z. B. "1 year"
Initialisierung des Refreshers für aggregierte Daten
Erzeugt einen TimescaleDB-Job zur regelmäßigen Aktualisierung der aggregierten Daten für bestimmte Metriken
/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
Kommagetrennte Liste der zu aggregierenden Metrikschlüssel. Kann weggelassen werden, um Daten für alle Metriken zu aktualisieren. Z.B.. "SNMP_1,SNMP_2,SNMP_3"
-f
Tag-Filter zum Filtern von Messungen, z. B. "'Device Domain' eq 'Test'"
Hinzufügen/Entfernen von Metriken
Docker Compose-Installation
Konfiguration
Fügen Sie die folgenden Umgebungsvariablen zum Abschnitt eranger-postgresql services environment der SKOOR docker-compose.yaml hinzu und setzen Sie die Variable STABLENET_FDW_WEBSERVICE_URL
auf eine gültige StableNet Host-URL:
- STABLENET_FDW_WEBSERVICE_URL=https://<StableNet host>:5443/api/1 - STABLENET_FDW_ACCEPT_INSECURE_CERTIFICATE=false - STABLENET_FDW_DEFAULT_USER=myuser - STABLENET_FDW_DEFAULT_PASSWORD=mypass - STABLENET_FDW_SKOOR_AUTH_URL=http://eranger-auth-${INSTANCE_NAME}:8094
Webservice-Container-Konfiguration
Der Webservice muss in der Lage sein, mit der eranger-auth Komponente zu kommunizieren, um Anfragen an StableNet zu authentifizieren. Fügen Sie im Abschnitt eranger-webservice service die folgende Umgebungsvariable hinzu:
- SKOOR_WEBSERVICE_auth_service_url=http://eranger-auth-${INSTANCE_NAME}:8094
Initialisierung fremder Tabellen
Führen Sie im laufenden Container das Skript init-database.sh aus, um das Stablenet-Schema zu löschen und neu zu erstellen (Vorsicht: alle Objekte im Schema werden gelöscht!).
Beispiel mit einer Kundendatenbank namens infosim mit dem Benutzer infosim (setzen Sie die Variable PGSQL_CONTAINER auf den Containernamen eranger-postgresql):
export PGSQL_CONTAINER=eranger-postgresql-<instance>
docker exec $PGSQL_CONTAINER /opt/stablenet-fdw/init-foreign-tables.sh -h localhost \ -p 5432 -d infosim -U postgres -o infosim
Führen Sie eine Datenabfrage im Dashboard aus, um die Fremddatenumhüllung zu überprüfen:
SELECT * from stablenet.stablenet_info
Daten-Aggregation
Initialisierung der aggregierten Daten
Initialisiert die Timescale-Hypertabelle, die für aggregierte metrische Daten benötigt wird.
docker exec $PGSQL_CONTAINER /opt/stablenet-fdw/init-aggregated-data.sh -h localhost \ -p 5432 -d infosim -U postgres -o infosim -i <interval> [-m <metric_keys>] [-f <tag_filter>] [-r <retention>]
-m
Kommagetrennte Liste von Metrikschlüsseln zur Voraggregation. Kann weggelassen werden, um Daten für alle Metriken vorzuladen, aber das kann sehr lange dauern.
-i
Intervall zum Vorladen der Daten, z. B. 6 months
, 1 week
, 5 days
-f
Tag-Filter zum Filtern von Messungen, z. B. "'Device Domain' eq 'Test'"
-r
Richtlinie zur Datenaufbewahrung, z. B. "1 year"
Initialisierung des Refreshers für aggregierte Daten
Erzeugt einen TimescaleDB-Job zur regelmäßigen Aktualisierung der aggregierten Daten für bestimmte Metriken
docker exec $PGSQL_CONTAINER /opt/stablenet-fdw/init-aggregated-data-refresher.sh -h localhost \ -p 5432 -d infosim -U postgres -o infosim [-m <metric_keys>] [-f <tag_filter>]
-m
Kommagetrennte Liste der zu aggregierenden Metrikschlüssel. Kann weggelassen werden, um Daten für alle Metriken zu aktualisieren. Z.B.. "SNMP_1,SNMP_2,SNMP_3"
-f
Tag-Filter zum Filtern von Messungen, z. B. "'Device Domain' eq 'Test'"
Integrieren in SKOOR
Der StabeleNet FDW kann integriert werden, indem eine neue Datenquelle im Bereich Daten & Objekte erstellt wird.
Nach dem Speichern sollte die Glühbirne in der Navigation grün leuchten.
Die fremden Tabellen können auf der Registerkarte Daten eingesehen werden.
Während einige Fremdtabellen sofort eingesehen werden können (z.B. stablenet_taggable_device
), benötigen andere einige obligatorische Qualifikatoren und können nicht in der Vorschau angezeigt werden. Siehe Tabelle unten für obligatorische Qualifikatoren.
Fremdtabellen
Name | Felder | Kennzeichner |
---|---|---|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Obwohl measurement_id
und metric_key
optional sind, ist es nicht empfehlenswert, Abfragen ohne sie auszuführen. Dadurch werden die Messdaten aller Messungen und aller Metriken gelesen, was sehr lange dauern kann und den StableNet Server stark belastet. Nur ratsam für sehr kurze Zeiträume < 1h. Wenn mehrere Messungen und Metriken benötigt werden, sollte die Tabelle stablenet_measurement_data_aggregated
verwendet werden.
Aggregierte Messdaten
Aggregiert nach Stunden, automatisch jede Stunde aktualisiert. Kann verwendet werden, um Analyseabfragen über eine breite Palette von Messungen und über große Zeitspannen durchzuführen.
Ist im Grunde eine Zeitskala-Hypertabelle(https://docs.timescale.com/ ). Chunk-Größe ist 7 Tage, Chunks werden nach 7 Tagen komprimiert.
Name | Felder |
---|---|
|
|
stablenet_measurement_data_aggregated
enthält nur Daten für konfigurierte metrische Schlüssel.