Cette page a pour but de vous décrire la mise en place du pack docker-by-SSH__shinken, en deux étapes :
Pour que les commandes du pack docker-by-SSH__shinken puisse s'exécuter, il faut installer un environnement virtuel Python sur les serveurs Shinken.
Pour s'executer, les sondes développé en Python ont besoin de certaines dépendances pour s'exécuter.
Chaque sonde requière des dépendances différentes pour fonctionner, directement liées au rôle quelle devront remplir. Par exemple, une sonde qui se connecte avec WinRM et une sonde qui se connecte avec SSH n'utiliseront pas les mêmes dépendances.
L'environnement virtuel fourni par Shinken emporte toutes les dépendances nécessaire à l'exécution des sondes. Il évite aux utilisateurs de devoir les installer manuellement sur chaque serveur Shinken.
Attention, sans l'environnement virtuel, l'installation du pack docker-by-SSH ne pourra pas être effectué. |
L'installation de l'envrionnement virtuel s'effectue en deux étapes :
Récupérer l'archive tar.xz de l'environnement virtuel
Chaque pack recquière une version minimale de l'environnment virtuel pour fonctionner. Les versions sont rétrocompatibles. Il est donc recommandé de toujours utiliser la dernière version disponible de l'environnement virtuel.
| Pack | Environnement Virtuel minimum |
|---|---|
| docker-by-SSH__shinken | V01.00.02 |
décompresser l'archive tar.xz de l'environnement virtuel sur tous les serveurs Shinken avec un poller ou un synchronizer et lancer l'installation
Décompresser l'archive sur les serveurs Shinken
tar -xJf VENV__plugins-packs__shinken__VXX.XX.XX__Linux.tar.xz |
Rentrer dans le répertoire créé à la suite de la décompression, et exécuter le script d'installation
cd VENV__plugins-packs__shinken__VXX.XX.XX__Linux ./install-venv.sh |
En préambule, il faut :
Que ce soit sur un Synchronizer où sur un Pollers :
Désarchiver le pack :
tar --no-same-owner -xf NOM_DU_PACK.tar.xz |
Entrée dans le répertoire extrait de l'archive et lancer le "install.sh"
cd NOM_DU_PACK/ ./install.sh |
L'installeur dépose les éléments suivants :
Les sondes du pack.
Exemple de mise en place :
========================================================
INSTALL PACK [ docker-by-SSH__shinken v01.00.00 ]
========================================================
-----------------------------
| COLLECTOR [ shinken-additional-packs-import ]
=> Collector cfg file already AVAILABLE
- Path : /etc/shinken/sources/shinken-additional-packs-import.cfg
=> Collector DATA space already AVAILABLE
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import
=> Definition File already AVAILABLE [ definition_shinken-additional-packs-import.cfg ]
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import/definition_shinken-additional-packs-import.cfg
=> Applying permissions
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import
- Setting owner ( to "shinken" user )
- Setting rights
-----------------------------
| MONITORING DEFINITION:
=> Installing definitions file in source-data folder ( Collector => shinken-additional-packs-import )
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import
- Setting owner ( to "shinken" user )
- Setting rights
=> Installing global data definitions file in SHINKEN directory ( => resource.d )
- Path : /etc/shinken/resource.d/shinken-additional-packs-import/
- Setting owner ( to "shinken" user )
- Setting rights
-----------------------------
| PROBES:
=> Deleting previous probes
- Path : /var/lib/shinken-user/libexec/shinken-additional-packs/docker-by-SSH__shinken
=> Installing probes
- Path : /var/lib/shinken-user/libexec/shinken-additional-packs/docker-by-SSH__shinken
- Setting owner ( to "shinken" user )
- Setting rights
|
SEULEMENT si le collecteur "shinken-additional-packs-import" n'est pas PRESENT déja dans votre Synchronizer ( par exemple : première fois que vous utilisez un installeur de pack Shinken ) :
Ajouter le nom de la nouvelle source au Synchronizer en modifiant le paramètre sources du fichier /etc/shinken/synchronizers/synchronizer-master.cfg.
define synchronizer {
[...]
sources Source 1, Source 2, Source 3, shinken-additional-packs-import
[...]
} |
et en suivant, redémarrez le Synchronizer pour que le collecteur soit pris en compte :
service shinken-synchronizer restart |
Activer le collecteur "shinken-additional-packs-import" si ce n'est pas déja fait.
|
Lancer l'import du collecteur "shinken-additional-packs-import":
|
IMPORTANT : si c'est la première fois que vous installez le pack, il est nécessaire de faire un dernier redémarrage du Synchronizer.
service shinken-synchronizer restart |
Nous vous conseillons de supprimer les anciens dossiers dans lesquels le pack était présent, pour être sûr d'avoir la dernière version de tous les fichiers livrés.
Pour supprimer ces dossiers, utilisez la commande suivante ( si vous avez suivi à la lettre la procédure d'installation manuelle ) :
rm -rf /var/lib/shinken-user/libexec/shinken-additional-packs/docker-by-SSH__shinken |
Transférer sur votre machine et décompressez le fichier contenant le pack à l'aide de la ligne de commande ci-dessous ( en remplaçant "PACK__shinken__NON-DU-PACK__VERSION__OS.tar.gz" par le nom du pack qui vous est livré.
tar -xjfv --no-same-owner PACK__NOM-DU-PACK__shinken__VERSION__linux.tar.xz -C ./ |
tar -xvzf PACK__NOM-DU-PACK__shinken__VERSION__windows.tar.gz -C ./ |
Entrez dans le répertoire créér :
cd NOM_DU_PACK/ |
On place les sondes :
probe_path="/var/lib/shinken-user/libexec/shinken-additional-packs/docker-by-SSH__shinken" mkdir --parents $probe_path cp -r ./probes/* $probe_path chown -R shinken:shinken $probe_path chmod -R 750 $probe_path |
Ensuite, plaçons maintenant la définition des éléments de supervision du pack au bon endroit :
Une fois le collecteur mis en place, nous allons déployer le pack au bon endroit :
En premier, les fichiers de définition des éléments ( modèles d'hôtes, checks, commandes, ... ) du pack :
shinken_collector_data_path="/etc/shinken-user/source-data/source-data-shinken-additional-packs-import" cp -r ./monitoring-definitions/packs/* $shinken_collector_data_path chown -R shinken:shinken $shinken_collector_data_path chmod -R 744 $shinken_collector_data_path |
Ensuite, les données globales
shinken_pack_globaldata_path="/etc/shinken/resource.d/shinken-additional-packs-import" mkdir --parents $shinken_pack_globaldata_path cp -r "./monitoring-definitions/global-data" "$shinken_pack_globaldata_path" chown -R shinken:shinken "$shinken_pack_globaldata_path" chmod -R 744 "$shinken_pack_globaldata_path" |
Redémarrer shinken
service shinken-synchronizer restart |
Lancer l'import du collecteur "shinken-additional-packs-import",
|
En suivant, vous devrez peut-être accepter les nouveautés / différences qui seraient liés à ce pack ( en fonction de l'évolution du pack ).
IMPORTANT : si c'est première fois que vous installez le pack, il est nécessaire de faire un dernier redémarrage du Synchronizer.
service shinken-synchronizer restart |
Vous pouvez également supprimer le dossier qui a été créé suite à la décompression du pack en utilisant la commande suivante :
rm -rf ./docker-by-SSH__shinken |
Attention à ne pas supprimer le tar.gz, connaître la version exacte du pack qui vous a été livré vous sera utile en cas de problème avec votre pack. |
Pour l'exécution correcte des commandes du pack docker-by-SSH, vous aurez besoin d'une connexion SSH.
Quelques informations au préalable sont nécessaires pour la bonne compréhension de cette partie.
Nous conseillons l'utilisation d'un utilisateur spécifique ( pour le service de supervision ) ainsi que l'utilisation d'une connexion via clé SSH, afin d'éviter l'utilisation du super utilisateur root qui n'est pas requis par les checks.
Si votre utilisateur de supervision n'est pas déjà créé sur votre linux à superviser, depuis un terminal de la machine supervisée "linux-1" ( en root ), il faut créer un nouvel utilisateur local avec mot de passe.
Pour pouvoir accéder aux informations sur les conteneurs Docker, l'utilisateur local au linux utilisé pour la connexion doit faire partie du groupe docker.
[root@linux-1 ~]# adduser -m -r user-service-shinken [root@linux-1 ~]# usermod -a -G docker user-service-shinken [FACULTATIF] : [root@linux-1 ~]# passwd user-service-shinken |
Copie de la clé SSH de votre utilisateur de supervision "shinken" depuis le serveur Poller "shinken-poller" ( pour cet exemple ), vers le serveur supervisé "linux-1" ( dans cet exemple, IP : 192.168.1.19 )
Soit via la méthode "automatique" via la commande ssh-copy-id en se connectant au préalable via l'utilisateur shinken sur le ou les serveurs pollers :
[root@shinken-poller ~]# su - shinken [shinken@shinken-poller ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub user-service-shinken@linux-1 The authenticity of host '192.168.1.19 (192.168.1.19)' can't be established. RSA key fingerprint is 00:ff:ee:dd:cc:bb:aa:d6:d3:79:1d:f6:93:47:80:27. Are you sure you want to continue connecting (yes/no)? yes user-service-shinken@linux-1's password: XXXXXXXXXXX Now try logging into the machine, with "ssh 'user-service-shinken@linux-1'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. |
Soit via une commande SSH depuis le serveur Poller, il s'agit d'ajouter la clé publique au fichier "authorized_keys" du serveur supervisé ( ici linux-1 ) :
cat /var/lib/shinken/.ssh/id_rsa.pub | ssh root@linux-1 "cat >> /home/user-service-shinken/.ssh/authorized_keys" |
Ici la connexion se fait via l'utilisateur root du serveur linux-1 ( mais vous pouvez utiliser votre propre utilisateur ), le but étant de rajouter, en une commande SSH, la clé de l'utilisateur shinken du Poller /var/lib/shinken/.ssh/id_rsa.pub à la fin du fichier /home/user-service-shinken/.ssh/authorized_keys du serveur supervisé.
Soit via méthode "manuelle" via rajout de la clé dans le fichier authorized_keys
Récupérez la clé publique de l'utilisateur qui va établir la connexion SSH, et la copier
[root@shinken-poller ~]# su - shinken [-bash-4.1]$ cat .ssh/id_rsa.pub -> copiez la clé |
Connectez-vous sur le serveur linux supervisé avec votre utilisateur de supervision et collez cette clé dans le fichier "authorized_keys" de l'utilisateur de supervision :
[root@linux-1 ~]# su - user-service-shinken [-bash-4.1]$ vi .ssh/authorized_keys -> collez la clé |
Test de connexion au serveur "linux-1" en tant qu'utilisateur "user-service-shinken" via l'utilisateur du Poller ( shinken ) :
[root@shinken-poller ~]# su - shinken [shinken@shinken-poller ~]# ssh user-service-shinken@linux-1 -i .ssh/id_rsa |
La connexion doit s'établir avec succès.
Si la connexion échoue, les logs du service "sshd" peuvent donner des indications précieuses sur la cause de l'échec. La méthode de consultation de ces informations dépend de la distribution utilisée et de son ancienneté.
Ci-dessous, la liste non exhaustive des méthodes connues pour consulter les logs, sur les distributions officiellement supportées par Shinken :
Pour Redhat / Almalinux / Rockylinux / Centos :
la commande journactl permet d'afficher les logs du service :
journalctl -xf -u sshd |
Le fichier de log "secure" contient les informations concernant les dernières connexions :
cat /var/log/secure |
Pour Debian :
la commande journactl permet d'afficher les logs du service (le nom de service utilisé n'est pas le même que pour les autres distributions) :
journalctl -xf -u ssh |
Ces logs permettent, entre autres, de savoir :
Exemple :
Dans l'exemple ci-dessous, les droits n'ont pas été correctement appliqués au répertoire de Shinken contenant les clés SSH. La connexion n'a pas pu s'établir
[root@alpachouette-shinken01 shinken]# journalctl -xf -u sshd -- Logs begin at Wed 2025-09-03 14:44:35 CEST. -- Sep 04 15:32:21 shinken-server sshd[1372868]: Authentication refused: bad ownership or modes for directory /var/lib/shinken/.ssh Sep 04 15:32:21 shinken-server sshd[1372868]: Connection closed by authenticating user shinken 172.17.0.37 port 48152 [preauth] Sep 04 15:32:25 shinken-server sshd[1372968]: Authentication refused: bad ownership or modes for directory /var/lib/shinken/.ssh Sep 04 15:32:25 shinken-server sshd[1372968]: Connection closed by authenticating user shinken 172.17.0.37 port 48160 [preauth] Sep 04 15:32:25 shinken-server sshd[1372971]: Authentication refused: bad ownership or modes for directory /var/lib/shinken/.ssh |
| Nom | Modifiable sur | Unité | Défaut | Valeur par défaut à l'installation du pack | Description | |
|---|---|---|---|---|---|---|
| l'Hôte ( Onglet Données ) | -- | 50001 | 50001 | Le port exposé de l'SSH Docker. |
Entrée dans le répertoire extrait de l'archive et lancer le "uninstall.sh"
cd docker-by-SSH__shinken ./uninstall.sh |
Ce mécanisme va seulement enlever les fichiers mis en place lors de l'installation ( Fichier du collecteur d'import, définition des éléments de supervision, et les sondes proposées ), mais ne touchent pas aux éléments que vous avez absorbés dans le Synchronizer.
==========================================================
UNINSTALL PACK [ docker-by-SSH__shinken V01.00.00 ]
==========================================================
-----------------------------
| MONITORING DEFINITION:
=> Deleting pack monitoring definition folder
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import/packs/docker-by-SSH__shinken
=> Deleting pack monitoring definition file
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import/packs/docker-by-SSH__shinken.pack
=> Deleting pack monitoring globaldata folder
- Path : /etc/shinken-user/source-data/source-data-shinken-additional-packs-import/global-data/docker-by-SSH__shinken
=> Deleting shinken pack globaldata folder
- Path : /etc/shinken/resource.d/shinken-additional-packs-import/global-data/docker-by-SSH__shinken/
-----------------------------
| PROBES:
=> Deleting probes
- Path : /var/lib/shinken-user/libexec/shinken-additional-packs/docker-by-SSH__shinken
==========================================================
PACK [ docker-by-SSH__shinken V01.00.00 ] SUCCESSFULLY UNINSTALLED
========================================================== |
À noter : Vous devrez retirer les éléments importés dans le Synchronizer ( modèles d'hôtes, checks, ... ) via les actions de masses . |
Votre essai Premium est terminéVotre essai Premium est terminé