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 s'exécute le serveur de base de données.
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 au sein de ce répertoire (par exemple, en montant /var/lib/pgsql/17/data à partir d'un périphérique différent). Modifier ainsi la structure 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éation de 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 le FDW StableNet doit être installé pour une version Major spécifique de SKOOR (par exemple la version 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 correctement.
[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.
Configurer un tunnel autossh pour l'accès à StableNet MySQL
Prérequis :
Le tunnel n’est nécessaire que si la connexion à la base de données MySQL dans /opt/stablenet/snmw/wildfly/standalone/configuration/standalone.xml pointe vers localhost. Dans ce cas, la connexion passe par le point de terminaison local du tunnel, qui est redirigé vers le server StableNet. Si l’adresse IP de StableNet y est définie directement, le tunnel est contourné et n’est pas nécessaire.
Si la base de données StableNet est configurée sur le même server que SKOOR, ignorez simplement cette étape.
Générez une clé SSH pour l’utilisateur skoor (ne définissez PAS de phrase de passe) :
sudo -u eranger ssh-keygen -t ed25519
Imprimez et copiez la clé publique :
sudo -u eranger cat ~eranger/.ssh/id_ed25519.pub
Connectez-vous au server cible (StableNet) et ajoutez la clé
mkdir -p ~/.sshchmod 700 ~/.sshecho "<public-key>" >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keyspuis déconnectez-vous du server cible
Testez la connexion (depuis le SKOOR Server, aucun mot de passe ne vous sera demandé)
sudo -u eranger ssh <user>@<stablenet-ip>
Installez autossh (sur le SKOOR Server)
sudo dnf install autossh
Créez un fichier de service systemd
Chemin d'accès :
/etc/systemd/system/stablenet-mysql-tunnel.serviceRemarque : vérifiez d'abord le chemin d'accès à autossh à l'aide de la commande «
which autossh» et insérez le résultat dans ExecStart
[Unit] Description=SSH tunnel to StableNet MySQL Database After=sshd.service [Service] ExecStart=/bin/autossh -M 22023 -N -L 3306:localhost:3306 <user>@<stablenet-ip> Restart=always RestartSec=10 User=eranger [Install] WantedBy=multi-user.target
Activer et démarrer le service
systemctl daemon-reload
systemctl enable stablenet-mysql-tunnel
systemctl start stablenet-mysql-tunnel
Vérifier l'état
systemctl status stablenet-mysql-tunnel
Résultat : le port local 3306 du SKOOR Server est redirigé via un tunnel SSH vers le port MySQL (3306) du server StableNet. Remplacez les variables <public-key> et <stablenet-ip> en conséquence.
Connexion à la base de données
[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 le volume de données à synchroniser depuis la base de données StableNet, il peut être utile de configurer des 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 via des variables d’environnement en utilisant le préfixe « STABLENET_FDW_WEBSERVICE_ » suivi du nom de l’option en majuscules (par exemple : STABLENET_FDW_WEBSERVICE_URL). Pour les paramètres « global », il faut omettre « GLOBAL » 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
Il est possible de définir plusieurs instances StableNet® à l’aide de plusieurs sections « webservice » comportant des suffixes « server_id » uniques. L’server_id est utilisé comme identifiant interne pour, par exemple, récupérer la chaîne d’autorisation correspondante depuis SKOOR Auth. Il convient de définir une valeur appropriée pour server_name, qui sert à 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;"
Cette commande devrait renvoyer le nombre de périphériques présents dans l'instance StableNet® connectée.