Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Panel
titleSommaire

Table of Contents
stylenone



Introduction

Cette page décrit comment le pack Linux permet de superviser des serveurs Linux au travers d'une connexion SSH. Ce pack supervise les ressources principales d'un serveur Linux comme:

  • Les ressources du noyau
  • La mémoire
  • Le réseau
  • Les disques
  • Les ressources CPU
  • Le démon SSH
  • Le démon NTP




Ce pack récupère les informations nécessaires à la supervision en se connectant via SSH à l'hôte distant. Pendant l'installation de Shinken, la procédure d'installation crée automatiquement un utilisateur "shinken" sur tous les serveur serveurs Shinken ( et donc les Pollers également ).

  • Le pack Linux utilise par défaut cet utilisateur pour exécuter les commandes.
  • L'authentification sur l'hôte distant s'effectue à l'aide d'une clé SSH.
  • L'utilisateur distant ne requiert pas de droits particuliers sur le système
.

Librairie de connexion

La librairie utilisée pour se connecter en SSH est la librairie paramiko (https://pypi.org/project/paramiko/)

La version utilisée est la:

  • 1.18.5 (de 2018) à partir de la version v02.08.02
    • les versions supérieures ne sont pas compatibles avec la RH6
    • les algorithmes de chiffrement disponibles sur cette version sont:
      • aes128-ctr
      • aes192-ctr
      • aes256-ctr
      • aes128-cbc
      • blowfish-cbc
      • aes192-cbc
      • aes256-cbc
      • 3des-cbc
      • arcfour128
      • arcfour256
    • Les mécanismes d'échanges de clés sont:
      • diffie-hellman-group1-sha1
      • diffie-hellman-group14-sha1
      • diffie-hellman-group-exchange-sha1
      • diffie-hellman-group-exchange-sha256
  • 1.15.1 (de 2014) avant la v02.08.02
    • Les algorithmes de chiffrement disponibles sont:
      • aes128-ctr
      • aes256-ctr
      • aes128-cbc
      • blowfish-cbc
      • aes256-cbc
      • 3des-cbc
      • arcfour128
      • arcfour256
    • Les mécanismes d'échanges de clés sont:
      • diffie-hellman-group14-sha1
      • diffie-hellman-group-exchange-sha1
      • diffie-hellman-group1-sha1

Configuration de la connexion SSH

Côté client ( serveur supervisé )

Créer un utilisateur local "shinken" avec un dossier "home" et un mot de passe

Code Block
adduser -m -r shinken 
passwd shinken


Côté Shinken ( serveur hébergeant le Poller )

Se connecter sur le serveur en tant que l'utilisateur "shinken" et copier la clé SSH vers le serveur à superviser : 

Code Block
languagebash
[root@shinken-poller ~]# su - shinken
[shinken@shinken-poller ~]#  ssh-copy-id  remote_host
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
shinken@remote_host's password: XXXXXXXXXXX
Now try logging into the machine, with "ssh '192.168.1.19'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

ssh shinken@remote_host -i .ssh/id_rsa


Cette copie de clé permet d'autoriser le Poller à se connecter sur la machine à superviser.

Sur une architecture Shinken qui contient plusieurs Pollers, il faudra alors effectuer cette opération sur chaque Poller pour permettre à chaque Poller de se connecter en SSH sur le serveur à superviser.

Définition de surcharges locales aux connexions SSH sur un poller via le fichier /var/lib/shinken/.ssh/config

Il est possible sur un poller de définir un comportement spécifique pour les connexions SSH du pack Linux qui ne seront valide que sur ce poller.

Ceci peux être utile si par exemple le poller a besoin de passer par une machine proxy pour se connecter aux serveurs distants.

Cette définition spécifique se fait via le fichier /var/lib/shinken/.ssh/config (configuration standard du client openssh sur linux) qui sera lue par les commandes du pack Linux avant d'effectuer leurs connexions.


Plusieurs paramètres sont pris en compte:

  • proxycommand: permet de définir une commande qui sera appelée pour établir un tunnel, comme pour passer par une machine bastion par exemple
  • key_filename: chemin vers la clé SSH publique utilisée pour la connexion
  • port: port utilisé pour la connexion
  • username: utilisateur distant utilisé pour la connexion

Comme mis dans la documentation de openssh, ces paramètres peuvent être mis dans un bloc au nom de la machine, ou un bloc "*" qui sera valable pour tous les hôtes.


Exemple de surcharge SSH afin de passer par un serveur bastion via un paramètre proxycommand

Par exemple, pour faire passer toutes ses connexions SSH par un serveur bastion, on peux définir le fichier /var/lib/shinken/.ssh/config ( avec les droits 600 pour l'utilisateur shinken ):

Code Block
themeEmacs
Host *
   ProxyCommand ssh -F /dev/null -q -W %h:%p IP-BASTION 



Panel

Image Added


Messages d'erreurs additionnels quand une surcharge est présente sur le poller

En cas de problème de connexion quand un fichier config existe sur le poller et a fourni une surcharge, la ou les surcharges seront affichés dans le message d'erreur afin d'aider à comprendre d'où viennent les paramètres de connexions:

Panel

Image Added

  • le port a été surchargé en 2222
  • une proxycommand a été utilisée pour effectuer la connexion

Comment utiliser le pack Linux

La Le pack Linux peut être utilisé en appliquant le modèle d'hôte "linux" sur un hôte.

Cette opération peut être effectuée de 2 manières différentes :

Via l'interface de Configuration

Dans l'interface de Configuration, créer et éditer un Hôte et ajouter le modèle d'hôte "linux" dans la liste des modèles d'hôtes utiliséspropriété "Modèles d'hôte hérités" à l'aide du menu déroulant.

Via un fichier de

configuration

configuration d'un collecteur (cfg)

Dans un fichier de configuration .cfg de votre choix, créer un hôte et définir la propriété "use" à "linux".

Ce fichier .cfg doit ensuite être importé dans Shinken Entreprise via une source ( plus d'informations sont disponibles dans la page de documentation sur la Syntaxe des fichiers d'imports ).

Problèmes usuels et connus

Le check NTP est en statut "Inconnu"

Le démon ntp n'est probablement pas installé.
Installer et configurer le démon ntp.


Le check "Reboot" est en

critique

"Critique".

La valeur par défaut de ce check est de 3600 secondes ( 1h ).
En dessous de ce seuil, un redémarrage a pour effet de mettre le check en état critique. Modifier le seuil selon les besoins pour éviter les notifications ou fausses alertes.


Le check "CPU Stats" est en statut "Inconnu".

Vérifier que le paquet "sysstat" est bien installé sur le système.

Résumé des checks



Nom du checkDescriptionValeurs possiblesSeuil Warning d'avertissement par défautDonnée seuil Warningd'avertissementSeuil Critique par défaut

Donnée seuil Critique 

1CPU StatsRécupère les informations des CPU via la commande "mpstat"0-100> 80

CPU_WARN

> 90

CPU_CRIT

2DisksRécupère les informations sur l'utilisation des disques via la commande "df"0-100> 90

STORAGE_WARN

> 95STORAGE_CRIT
3Disks statsRécupère les statistiques de lecture/écriture des disques depuis /proc0-nN/AN/AN/A N/A
4Kernel statsRécupère des statistiques sur le noyau Linux via /proc/vmstat0-nN/AN/AN/A N/A
5Load AverageRécupère la charge (Load Average) du système via /proc/loadavg0-n,0-n,0-n> "1.5,1.5,1.5"LOAD_WARN> "3,3,3"LOAD_CRIT
6MemoryRécupère les informations sur la consommation de mémoire via la commande "free"0-100> 90MEMORY_WARN> 95MEMORY_CRIT
7NET StatsRécupère les statistiques des interfaces réseau via /proc/net/dev 0-nN/AN/A

N/A

 N/A
8NFS StatsRécupère les statistiques de lecture/écriture des points de montage NFS via /proc/net/rpc/nfsd0-nN/AN/A

N/A

 N/A
9NTPSyncRécupère le décalage de temps avec le serveur NTP0-n> 40
> 60
10Read-only FilesystemsVérifie si un système de fichiers est en lecture seule0-1N/AN/AN/A N/A
11UptimeRécupère le temps d'uptime du serveur via la commande "uptime"0-nN/AN/A< 3600 LINUX_UPTIME_CRIT
12SSH connexionsVérifie qu'une connexion SSH vers le serveur est bien possible0-1N/AN/AN/A N/A
13TCP statesRécupère les statistiques d'usage TCP0-nN/AN/AN/A N/A


Info
titleCheck NtpSync

Selon le démon utilisé pour NTP, le check peut obtenir des détails supplémentaires sur la synchronisation de l'horloge.

Si le démon NTP utilisé est chrony, l'utilisation du modèle d'hôte "chrony" en plus du modèle "linux" permet au check d'obtenir plus de détails sur l'état de la synchronisation NTP.


Personnaliser les seuils

de Warning

d'Avertissement et Critique

Le pack Linux définit des seuils par défaut sur les checks qu'il utilise que vous pouvez modifier.

Changer les seuils pour un seul hôte

Les modèles d'hôte livrés dans Shinken contiennent souvent des variables permettant de changer les seuils et options des checks.

Pour changer ces seuils sur un seul hôte en particulier, la manière la plus simple est de changer des variables via les données présentes sur l'hôte directement:

  • Dans l'interface de Configuration, éditer l'hôte et aller dans l'onglet "Données"
    Par exemple, changer la donnée "CPU_CRIT" à 60 aura pour effet de changer le seuil Critique du check "CPU Stats" à 60
  • Via un fichier de configuration (cfg).
    Pour changer le seuil Critique du check "CPU Stats",  éditer éditer l'hôte et changer la donnée "_CPU_CRIT"

Changer les seuils pour tous les hôtes qui utilisent le modèle d'hôte "linux"

Pour changer le seuils seuil sur tous les hôtes qui utilisent le modèle d'hôte "linux", on pourrait être tenté de modifier directement le modèle d'hôte "linux" et changer les données personnalisées de cet hôte.

Mais, dans la prochaine mise à jour de Shinken Entreprise, ces modèles d'hôtes/checks peuvent être modifiés, ce qui occasionne un changement de comportement et probablement causer causé des problèmes dans votre configuration Shinken.

L'alternative conseillée est de cloner les éléments utilisés dans le pack Linux et de les renommer. On peut ensuite modifier sans aucun risque liés lié aux mises à jour de Shinken Entreprise.

Ce pack linux cloné peut ensuite être modifié et personnalisé selon les besoins.


Par exemple, le changement des seuils s'effectue de la même manière en changeant les données comme décrit décrites dans la section précédente, mais dans le modèle d'hôte linux au lieu de faire cette modification directement dans les hôtes.

Pour information, détail sur le chiffrement de la connexion

La librairie utilisée pour se connecter en SSH est la librairie paramiko ( https://pypi.org/project/paramiko/ )

La version utilisée est la:

  • 1.18.5 (de 2018) à partir de la version v02.08.02
    • les versions supérieures ne sont pas compatibles avec la RH6

    • Expand
      titleles algorithmes de chiffrement disponibles sur cette version sont:
      • aes128-ctr
      • aes192-ctr
      • aes256-ctr
      • aes128-cbc
      • blowfish-cbc
      • aes192-cbc
      • aes256-cbc
      • 3des-cbc
      • arcfour128
      • arcfour256



    • Expand
      titleLes mécanismes d'échanges de clés sont:
      • diffie-hellman-group1-sha1
      • diffie-hellman-group14-sha1
      • diffie-hellman-group-exchange-sha1
      • diffie-hellman-group-exchange-sha256


  • 1.15.1 (de 2014) avant la v02.08.02

    • Expand
      titleles algorithmes de chiffrement disponibles sur cette version sont:
      • aes128-ctr
      • aes256-ctr
      • aes128-cbc
      • blowfish-cbc
      • aes256-cbc
      • 3des-cbc
      • arcfour128
      • arcfour256



    • Expand
      titleLes mécanismes d'échanges de clés sont:
      • diffie-hellman-group14-sha1
      • diffie-hellman-group-exchange-sha1
      • diffie-hellman-group1-sha1


Version des scripts livrés


Nom du scriptVersion
check_cpu_stats_by_ssh.py0.1
check_disks_by_ssh.py0.1
check_disks_stats_by_ssh.py0.1
check_kernel_stats_by_ssh.py0.1
check_load_average_by_ssh.py0.1
check_memory_by_ssh.py0.1
check_net_stats_by_ssh.py0.1
check_nfs_stats_by_ssh.py0.1
check_ntp_sync_by_ssh.py0.1
check_ro_filesystem_by_ssh.py0.1
check_uptime_by_ssh.py0.1
check_ssh_connexion.py0.1
check_tcp_states_by_ssh.py0.1