Einrichtung

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 StableNet® API
default_user =
                                        # Default user name for the StableNet® API.
                                        # This is used in case no authorization
                                        # is provided by the SQL client.
default_password =
                                        # Default password for the StableNet® API.
                                        # 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.

#oracle_client_lib_dir =
                                        # Path to the Oracle client library directory.
                                        # This is used to load the Oracle client library
                                        # for the Oracle database connection.
                                        # If omitted, the thin client is used which might have
                                        # problems connectiong to older Oracle databases.

#history_days = 365
                                        # Number of days the history data is loaded
                                        # from the StableNet® database.
                                        # Defaults to 365 days.

[database]

#host = localhost
                                        # Hostname of the PostgreSQL database
#port = 5432
                                        # Port of the PostgreSQL database
#database = infosim
                                        # Name of the PostgreSQL database
#user = infosim
                                        # User name of the PostgreSQL database
#password = infosim
                                        # Password of the PostgreSQL database
#schema = stablenet
                                        # Schema of the PostgreSQL database
                                        # (default: stablenet)
#measurement_data_table = stablenet_measurement_data
                                        # Name of the measurement data table
                                        # (default: stablenet_measurement_data)

[retention_days]

#raw = 1
#minutely = 1
#five_minutely = 14
#fifteen_minutely = 31 # ~1 month
#hourly = 93 # ~3 months
#daily = 365 # ~1 years
#weekly = 365 # ~1 years
#monthly = 1825 # ~5 years
#quarterly = 1825 # ~5 years
#yearly = 3650 # ~10 years

[webservice]                            # use te form werbservice_<server_id>
                                        # to configure multiple StableNet® servers
                                        # (see below).

url =
                                        # URL of StableNet® API
database_connection =
                                        # Connection string to the StableNet® database.
                                        # This is used for the measurement data sync.
                                        # The connection string must be in the format:
                                        # MySQL: mysql+pymysql://<user>:<password>@<host>:3306/<database>
                                        # Oracle: oracle+oracledb://<user>:<password>@<host>:1521/?service_name=<service>
                                        # Connection info can be found on the StableNet server in
                                        # /opt/stablenet/snmw/wildfly/standalone/configuration/standalone.xml (<datasources>).
                                        # It's usually a good idea to use a different user and service than the one used by StableNet.
#ping_measurement_filter =
                                        # Filter for the ping measurement (e.g. 'Device Domain' eq 'Test').
#snmp_measurement_filter =
                                        # Filter for the SNMP measurement (e.g. 'Device Domain' eq 'Test').
#snmp_indexes =
                                        # List of SNMP indexes to be used for the SNMP measurement.
#usrscript_measurement_filter =
                                        # Filter for the USRSCRIPT measurement (e.g. 'Device Domain' eq 'Test').
                                        
#[webservice_<server_id>]               # Optional, if multiple StableNet® servers
                                        # are used. Replace <server_id> with a unique
                                        # identifier for the StableNet® server.
                                        # Only alphanumeric lowercase characters are allowed.
                                        # Please note, that every webservice section
                                        # must have a unique identifier if multiple
                                        # StableNet® servers are used. if the server_id
                                        # changes, a resync of the measurement data is needed
                                        # because the measurement ID change (<measurment_id>@<server_id>).
                                        # If you already have a webservice configured without server_id,
                                        # then it's recommended to leave the existing webservice without
                                        # server_id and add a new webservice with server_id. This avoids
                                        # a resync of the measurement data.

#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. Die server_id wird als interner Bezeichner verwendet, um z.B. den passenden Autorisierungsstring von SKOOR Auth zu erhalten. Es sollte ein entsprechender server_name gesetzt werden, der 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 von Fremdtabellen

Initialisierung der Fremdtabellen, 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 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;"

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