Installation

Conditions préalables

Une base de données PostgreSQL avec un utilisateur autorisé à modifier les objets de la base de données est requise. Le wrapper de données externes doit être installé sur la même instance de server que celle sur laquelle le server de base de données est exécuté.

Veuillez conserver le répertoire par défaut PG_HOME à l'adresse /var/lib/pgsql et éviter de le déplacer. De même, ne créez pas de points de montage supplémentaires dans ce répertoire (par exemple, en montant /var/lib/pgsql/17/data à partir d'un autre périphérique). Modifier la structure de cette manière peut considérablement compliquer les futures mises à niveau de PostgreSQL. À la place, montez /var/lib/pgsql directement à partir d'un autre périphérique ou utilisez des tablespaces supplémentaires comme décrit ci-dessous.

Exemple : Créez la base de données infosim appartenant au rôle 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';"

Installation standard

Installez le RPM à partir du dépôt SKOOR

Si StableNet FDW doit être installé pour une version Major spécifique de SKOOR (par exemple 8), utilisez

dnf install "eranger-stablenet-fdw-8.*"

Sinon, utilisez

dnf install "eranger-stablenet-fdw"

Configuration

Après une modification de la configuration, le server PostgreSQL doit être redémarré.

systemctl restart postgresql-17

Fichier de configuration

/etc/stablenet-fdw/stablenet-fdw.conf

Configuration minimale

Les paramètres suivants doivent impérativement être définis pour que l'installation fonctionne.

[global]
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.

Certaines anciennes versions d'Oracle nécessitent l'installation de la bibliothèque client Oracle sur le système. Installez-la à l'aide du dernier programme d'installation d'Oracle Instant Client et configurez le chemin d'accès

#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.
[webservice]                            # use te form werbservice_<server_id>
                                        # to configure multiple StableNet® servers
                                        # (see below).
url =
                                        # URL of the StableNet® API
                                        # Usually something like https://<stablenet-host>:5443/api/1
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.

Filtrage des mesures / métriques

Pour limiter la quantité de données à synchroniser depuis la base de données StableNet, il peut être utile de configurer certains filtres ou de désactiver complètement certains types de mesures.

#sync_ping_data = true
                                        # Sync ping measurement data from the StableNet® database.
                                        # Defaults to true.
#sync_snmp_data = true
                                        # Sync SNMP measurement data from the StableNet® database.
                                        # Defaults to true.
#sync_usrscript_data = true
                                        # Sync usrscript measurement data from the StableNet® database.
                                        # Defaults to true.
#sync_external_data = true
                                        # Sync external measurement data from the StableNet® database.
#sync_derived_data = false
                                        # Sync derived measurement data from the StableNet® database.
#ping_measurement_filter =
                                        # Filter for the ping measurement.
#snmp_measurement_filter =
                                        # Filter for the SNMP measurement.
#snmp_indexes =
                                        # List of SNMP indexes to be used for the SNMP measurement.
                                        # This is the number part of the metric key, e.g. #1234 -> 1234
#snmp_state_agg_measurements =
                                        # Comma separated list of template name / metric_key pairs of measurements
                                        # which should have state aggregation enabled.
                                        # Example: Interface Relative IPMPLS 64Bit#1234,template2#5678
#usrscript_measurement_filter =
                                        # Filter for the usrscript measurement.
#usrscript_indexes =
                                        # List of usrscript indexes to be used for the usrscript measurement.
                                        # This is the number part of the metric key, e.g. #1234 -> 1234
#usrscript_state_agg_measurements =
                                        # Comma separated list of template name / metric_key pairs of measurements
                                        # which should have state aggregation enabled.
                                        # Example: Interface Relative IPMPLS 64Bit#1234,template2#5678
#external_measurement_filter =
                                        # Filter for the external measurement.
#external_indexes =
                                        # List of external indexes to be used for the external measurement.
                                        # This is the number part of the metric key, e.g. #1234 -> 1234
#external_state_agg_measurements =
                                        # Comma separated list of template name / metric_key pairs of measurements
                                        # which should have state aggregation enabled.
                                        # Example: Y.1731#1234,template2#5678
#derived_measurement_filter =
                                        # Filter for the derived measurement.
#derived_indexes =
                                        # List of derived indexes to be used for the derived measurement.
                                        # This is the number part of the metric key, e.g. #1234 -> 1234
#derived_state_agg_measurements =
                                        # Comma separated list of template name / metric_key pairs of measurements
                                        # which should have state aggregation enabled.
                                        # Example: Y.1731#1234,template2#5678

Politiques de conservation

Il est possible de configurer la durée de conservation des données pour chaque agrégat.

[retention_days]

#raw = 1
#minutely = 1
#5_minutely = 14
#15_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

Paramètres avancés

Il existe de nombreuses autres options permettant d'affiner le fonctionnement du FDW StableNet. Ces paramètres sont décrits directement dans le fichier de configuration.

Utilisation des variables d'environnement

Les options peuvent également être fournies par des variables d'environnement en utilisant le préfixe STABLENET_FDW_WEBSERVICE_ et le nom de l'option en majuscules (par exemple, STABLENET_FDW_WEBSERVICE_URL). Pour les paramètres global, GLOBAL doit être omis de la clé ENV (par exemple, STABLENET_FDW_DEFAULT_USER).

url est l'URL de base du service web de l'API StableNet®. Elle se présente généralement sous la forme https://<host>:5443/api/1.

Plusieurs serveurs StableNet

Plusieurs instances StableNet® peuvent être définies à l'aide de plusieurs sections webservice avec des suffixes server_id uniques. L'server_id est utilisé comme identifiant interne pour, par exemple, obtenir la chaîne d'autorisation correspondante depuis SKOOR Auth. Une valeur server_name appropriée doit être définie pour identifier le server dans les tables « foreign » et « aggregated ». Cela peut également être configuré à l'aide de variables d'environnement (par exemple STABLENET_FDW_WEBSERVICE_URL_TEST , STABLENET_FDW_WEBSERVICE_SERVER_NAME_TEST).

[webservice_production]
server_name = Production Server
url = https://stablenet.prod:5443/api/1
database_connection = ...

[webservice_staging]
server_name = Staging Server
url = https://stablenet.staging:5443/api/1
database_connection = ...

Entrée correspondante dans SKOOR Auth (/etc/opt/eranger/eranger-auth.conf)

[provider.1]
type = stablenet
name = StableNet®
webservice_url_production = https://stablenet.prod:5443/api/1
webservice_url_staging = https://stablenet.staging:5443/api/1

Initialisation des tables externes

Initialisez les tables externes requises par le wrapper de données externes.

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

Par exemple

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

Cette commande doit être exécutée après chaque mise à jour de eranger-stablenet-fdw afin d'obtenir les nouvelles définitions de tables.

Test de la connexion

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

Cela devrait renvoyer le nombre de périphériques dans l'instance StableNet® connectée.