Installation
Prerequisites
A PostgreSQL database with a user that is allowed to modify database objects is required. The foreign data wrapper has to be installed on the same server instance the database server is running.
Example: Create database infosim owned by role 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
Install RPM from SKOOR Repo
dnf install eranger-stablenet-fdw
Configuration
Config file
/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
Options can also be provided by environment variables using the STABLENET_FDW_WEBSERVICE_
prefix and the option name in upper case (e.g. STABLENET_FDW_WEBSERVICE_URL
). For the global
settings, GLOBAL
has to be omitted from the ENV key (e.g. STABLENET_FDW_DEFAULT_USER
).
url
is the base URl of the StableNet® API web service. It usually has the form https://<host>:5443/api/1
.
Multiple StableNet® instances can be defined using multiple webservice
sections with unique server_id
suffixes. The server_id
is used as an internal identifier to e.g. get the matching authorization string from SKOOR Auth. An appropriate server_name
should be set which is used to identify the server in the foreign and aggregated tables. This can also be configured using environment variables (e.g. STABLENET_FDW_WEBSERVICE_URL_TEST
, STABLENET_FDW_WEBSERVICE_SERVER_NAME_TEST
).
After a config change, the PostgreSQL Server has to be restarted.
systemctl restart postgresql-13
Initializing foreign tables
Initialized the foreign tables needed by the foreign data wrapper.
/opt/stablenet-fdw/init-foreign-tables.sh -h <host> -p <port> -d <database> -U <user> -o <owner>
e.g.
/opt/stablenet-fdw/init-foreign-tables.sh -U postgres -h localhost -p 5432 -d infosim -o infosim
This command should be performed after every update of eranger-stablenet-fdw
to get new table definitions.
Testing the Connection
psql -h localhost -p 5432 -U infosim -d infosim -c "SELECT * from stablenet.stablenet_info;"
This should return the number of devices in the connected StableNet® instance.