Installation
Conditions préalables
Un serveur de base de données PostgreSQL est requis. Le wrapper de données externes doit être installé sur la même instance de serveur que celle sur laquelle s'exécute le serveur de base de données.
Veuillez conserver le répertoire PG_HOME par défaut à l'emplacement /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. Montez plutôt /var/lib/pgsql directement à partir d'un autre périphérique ou utilisez des tablespaces supplémentaires comme décrit ci-dessous.
Installation standard
Installation du RPM à partir du dépôt SKOOR
Si StableNet FDW 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"
Pour configurer l’application SKOOR afin qu’elle utilise le FDW StableNet, vous pouvez utiliser le script `init-data-source.py`.
python3 /opt/stablenet-fdw/init-data-source.py -h
usage: init-data-source.py [-h] -w WEBSERVICE [-t TABLESPACE_ROOT]
[-d DATABASE_CONNECTION]
[--database-name DATABASE_NAME]
[--database-owner DATABASE_OWNER]
[--database-password DATABASE_PASSWORD]
Initializes StableNet data source in Skoor
optional arguments:
-h, --help show this help message and exit
-w WEBSERVICE, --webservice WEBSERVICE
StableNet webservice URL (usually something like
https://<host>:5443/api/1)
-t TABLESPACE_ROOT, --tablespace-root TABLESPACE_ROOT
Root directory for PostgreSQL tablespace folders.
--database-name DATABASE_NAME
PostgreSQL database name for StableNet FDW.
--database-owner DATABASE_OWNER
PostgreSQL role/user owning the StableNet database.
--database-password DATABASE_PASSWORD
Password for the PostgreSQL owner role.
Le nom de la base de données, le propriétaire et le mot de passe sont par défaut « infosim », et le tablespace-root est par défaut « /var/lib/pgsql ».
Exemple d'utilisation :
sudo python3 /opt/stablenet-fdw/init-data-source.py -w https://<STABLENET_HOST>:5443/api/1
Ce script automatise le processus de configuration en effectuant les opérations suivantes :
Configure SKOOR Auth et le FDW StableNet en appliquant l'argument «
--webservice».Crée un espace de tables à l'emplacement spécifié par l'argument
--tablespace-root.Crée une nouvelle base de données PostgreSQL au sein de cet espace de tables.
Initialise les tables externes.
Connecte SKOOR à la nouvelle base de données en tant que source de données.
Importe les scripts de synchronisation et les requêtes de données standard.
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 accéder à MySQL via StableNet
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 serveur que SKOOR, ignorez simplement cette configuration.
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 le 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 espaces réservés <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 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 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 globals, il faut omettre GLOBAL de la clé ENV (par exemple : STABLENET_FDW_DEFAULT_USER).
« url » correspond à 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 sert d’identifiant interne, par exemple pour récupérer la chaîne d’autorisation correspondante auprès de SKOOR Auth. Il convient de définir un server_name approprié, qui servira à identifier le server dans les tables externes et agrégées. 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
Test de la connexion
psql -h localhost -p 5432 -U infosim -d infosim -c "SELECT * from stablenet.stablenet_info;"
Cette opération devrait renvoyer le nombre de périphériques présents dans l'instance StableNet® connectée.