Installer et configurer un serveur Xymon



  • Xymon est un outil de supervision pour les serveurs (Linux, Unix, Windows), les applications et les équipements réseau. Les informations sur la “santé” de ces divers clients sont collectées et présentées sur une page web avec pour chacun d’eux, un voyant vert, jaune ou rouge représentant l’état du “service” supervisé. Par défaut, Xymon est capable de superviser un ensemble de services réseau, les ressources d’un serveur, l’état d’un service HTTP (et HTTPS) et met à jour une collection de graphes RRD permettant de voir l’évolution dans le temps. Xymon fonctionne sur le principe client / serveur : un serveur Xymon collectera les informations des différents clients. Dans cet article nous verrons l’installation et la configuration d’un serveur Xymon (4.3.7), l’installation d’un client et quelques astuces…

    Historique

    Xymon a été inspiré par Big Brother. Certaines parties du code de Big Brother ont été réécrites en C pour augmenter la vitesse de traitement des données des clients. Il profite d’une configuration centralisée : contrairement à Big Brother où il fallait se connecter sur chacun des clients pour modifier, par exemple, un seuil de supervision, tout est fait maintenant côté serveur. Xymon est OpenSource.

    Entre Big Brother et Xymon, il y a eu Hobbit mais c’est une marque déposée. Le projet a donc été renommé en Xymon.

    Installation du serveur

    Je pars d’une Debian Squeeze toute neuve. Deux possibilités d’installation : avec les sources ou avec les paquets Debian. Attention, ceux de la distribution sont plus anciens que ceux disponibles sur sourceforge.

    Via les paquets Debian

    Les étapes à suivre :

    • Récupérez les .deb du serveur et du client Xymon :
    wget http://downloads.sourceforge.net/project/xymon/Xymon/4.3.7/xymon_4.3.7_amd64.deb
    wget http://downloads.sourceforge.net/project/xymon/Xymon/4.3.7/xymon-client_4.3.7_amd64.deb
    
    • Installez d’abord le client puis le serveur. Indiquez l’adresse IP de votre serveur Xymon au moment de l’installation du client (vous pouvez modifier la configuration avec dpkg-reconfigure xymon-client).
    dpkg -i xymon-client_4.3.7_amd64.deb
    dpkg -i xymon_4.3.7_amd64.deb
    
    • Le serveur Xymon nécessite un serveur web pour afficher les pages de supervision. Je fais le choix ici de lighttpd :
    apt-get install lighttpd
    
    • Pour démarrer le serveur Xymon :
    /etc/init.d/xymon start
    

    Via les sources

    Voici les étapes nécessaires pour l’installation du serveur Xymon en utilisant les sources :

    cd /usr/local/src
    wget http://downloads.sourceforge.net/project/xymon/Xymon/4.3.7/xymon-4.3.7.tar.gz
    
    • On décompresse l’archive et on se place dans le répertoire de Xymon :
    tar xvzf xymon-4.3.7.tar.gz
    cd xymon-4.3.7
    
    • Il faudra installer les prérequis suivants pour compiler Xymon :
    apt-get install build-essential sudo fping librrd-dev libpcre3-dev libldap2-dev libssl-dev
    
    • Il faut également un serveur web : installez celui de votre choix. Pour cet article, j’ai choisi lighttpd :
    apt-get install lighttpd
    
    • Créez l’utilisateur Xymon. Sur une Debian par exemple :
    getent group xymon > /dev/null || addgroup --system xymon
    getent passwd xymon > /dev/null || adduser --system \
     --home /usr/lib/xymon --no-create-home \
     --ingroup xymon --disabled-password --disabled-login \
     --gecos "Xymon System Monitor" xymon
    
    • Lancez la configuration du serveur Xymon et répondez aux questions :
    ./configure.server
    
    • Pour la compilation :
    make && make install
    
    • Pour démarrer le serveur (à adapter en fonction de votre configuration) :
    su - xymon -s /bin/bash -c '/usr/lib/xymon/server/xymon.sh start'
    

    C’est terminé pour l’installation. Quel que soit votre choix, paquets Debian ou sources, passez à l’étape configuration afin de faire pointer votre serveur web sur le répertoire www de Xymon et de contrôler la configuration par défaut.

    Configuration du serveur

    Pour terminer l’installation, il faut maintenant configurer le serveur web pour pointer sur le répertoire www de Xymon ainsi que sur les répertoires de cgi.

    • La configuration de votre serveur est normalement stockée dans /etc/xymon. Dans le fichier /etc/xymon/xymonserver.cfg, modifiez XYMONSERVERWWWURL="/" par XYMONSERVERWWWURL="".

    • Voici pour exemple un /etc/lighttpd/lighttpd.conf qui fonctionne.

    • Pour activer la gestion des cgis pour les deux URLs de Xymon (xymon-cgi et xymon-seccgi), activez le module cgi : lighty-enable-mod cgi.

    • Modifiez sa configuration par défaut par celle-ci.

    • Relancez lighttpd et pointez votre navigateur sur l’adresse de votre serveur Xymon.

    0_1522745911926_xymon.png

    Installation des clients

    Pour installer un client sur votre distribution, vous pouvez opter pour le paquet fourni par celle-ci (parfois moins récent que la version 4.3.7 présentée ici), les sources ou dans le cas d’une Debian utiliser le .deb disponible sur sourceforge.

    Installation depuis les sources

    Voici les étapes nécessaires pour l’installation du client Xymon en utilisant les sources :

    cd /usr/local/src
    wget http://downloads.sourceforge.net/project/xymon/Xymon/4.3.7/xymon-4.3.7.tar.gz
    
    • On décompresse l’archive et on se place dans le répertoire de Xymon :
    tar xvzf xymon-4.3.7.tar.gz
    cd xymon-4.3.7
    
    • Créez l’utilisateur Xymon. Sur une Debian par exemple :
    getent group xymon > /dev/null || addgroup --system xymon
    getent passwd xymon > /dev/null || adduser --system \
     --home /usr/lib/xymon --no-create-home \
     --ingroup xymon --disabled-password --disabled-login \
     --gecos "Xymon System Monitor" xymon
    
    • Lancez la configuration et répondez aux questions :
    ./configure.client
    
    * Server side client configuration, or client side [server] ? **server**
    * What userid will be running Xymon [xymon] ? **xymon**
    * Where do you want the Xymon installation [/usr/lib/xymon] ? **/usr/lib/xymon**
    * What is the IP-address of your Xymon server [127.0.0.1] ? **192.168.1.141** dans mon exemple. A remplacer par l'adresse ip de votre serveur Xymon.
    
    • Puis la compilation et l’installation :
    make -s && make install
    
    • Assurez-vous d’avoir un /etc/hosts correctement configuré : vous devez avoir une entrée pour votre adresse ip avec le nom de votre machine et son domaine :
    192.168.1.140   puppet.home     puppet
    
    • Pour démarrer le client :
    su - xymon -s /bin/bash -c '/usr/lib/xymon/client/runclient.sh start'
    

    Installation sur une Debian

    Voici les étapes nécessaires à l’installation d’un client sur une Debian en utilisant le .deb disponible sur sourceforge :

    • Récupérez le .deb du client Xymon et installez-le :
    wget http://downloads.sourceforge.net/project/xymon/Xymon/4.3.7/xymon-client_4.3.7_amd64.deb
    dpkg -i xymon-client_4.3.7_amd64.deb
    
    • A ce jour, le paquet n’embarque pas de script d’init. En voici un récupéré dans le paquet xymon-client (4.3.0) d’une Squeeze (j’ai modifié tous les hobbit en xymon).
    • Contrôlez et modifiez si nécessaire la configuration du client dans le fichier /etc/default/xymon-client. Il est préférable, si vous avez de multiples domaines, d’indiquer le nom de votre serveur avec son domaine pour la variable CLIENTHOSTNAME.
    • Le fichier /etc/xymon/xymonclient.cfg doit également être modifié pour lire correctement les informations du fichier précédent. Une version de ce fichier est disponible link.
    • Pour démarrer le client :
    /etc/init.d/xymon-client start
    

    Configuration côté serveur

    Le client est démarré. Il va maintenant envoyer son status toutes les 5 minutes à votre serveur Xymon. Pour qu’il apparaisse sur l’interface, il faut le rajouter dans le fichier /etc/xymon/hosts.cfg. Voici un exemple :

    127.0.0.1       xymon.home      # bbd http://xymon.home/
    192.168.1.200   varnish.home
    192.168.1.140   puppet.home
    

    Votre client doit apparaître sur l’interface web de Xymon. Si ce n’est pas le cas, vérifiez les “ghosts reports” en cliquant sur le voyant xymond de votre serveur Xymon (voir capture d’écran suivante). Si votre serveur apparait dans cette liste, contrôlez son hostname/domaine : il doit être identique à celui défini dans le hosts.cfg du serveur Xymon.

    Astuces

    Quelques astuces pour débuter dans l’optimisation de votre supervision.

    Grouper vos serveurs

    Le fichier hosts.cfg offre beaucoup de possibilités. Par exemple, il est possible de grouper vos serveurs avec le mot clé “group”. Si je modifie mon fichiers hosts.cfg comme suit :

    group Supervision
    127.0.0.1       xymon.home      # bbd http://xymon.home/
    
    group Serveurs
    192.168.1.200   varnish.home
    192.168.1.140   puppet.home
    

    L’affichage devient :

    0_1522745946429_Xymon-group.png

    Être alerté par mail ou autres

    Il est possible d’être alerté par mail en cas de problème détecté par la supervision. Vous pouvez aussi faire jouer un script de votre choix : il est alors possible d’être alerté par SMS, service de notification push… Tout se configure dans le fichier /etc/xymon/alerts.cfg. Par exemple si veux recevoir un mail en cas de problème, mail qui se répètera toutes les 20 minutes sans résolution du problème et un mail pour avertir de la fin d’un incident :

    HOST=%
            MAIL moi@mail.fr REPEAT=20 RECOVERED
    

    Supprimer un test par défaut

    Il est possible de désactiver un test par défaut sur un de vos serveurs supervisés via le fichier /etc/xymon/hosts.cfg. Par exemple, pour mes tests avec des containers LXC, je désactive la supervision du disque (je rajoute la supervision ssh au passage) :

    group Supervision
    127.0.0.1       xymon.home      # bbd http://xymon.home/ NOCOLUMNS:disk
    
    group Serveurs
    192.168.1.200   varnish.home    # ssh NOCOLUMNS:disk
    192.168.1.140   puppet.home     # ssh NOCOLUMNS:disk
    

    Attention : si vous désactivez un test, il faudra effacer l’historique de celui-ci sous peine d’avoir un voyant “purple”. A voir un peu plus bas.

    Modifier les seuils d’alerte

    Dans le fichier /etc/xymon/analysis.cfg, il est possible de modifier la supervision d’un client : rechercher un mot clé dans un fichier de log, modifier les seuils de déclenchement d’une alerte, superviser un process, un port… Voici quelques exemples et la sortie Xymon :

    HOST=varnish.home
            PROC varnishd 1
            PROC puppet 1
            DISK * 80 90
            LOG /var/log/messages %(I/O|read).error COLOR=red
            PORT "LOCAL=%([.:]80)$" state=LISTEN TEXT=Varnish
    

    A savoir : Xymon supervise par défaut uniquement le /var/log/messages de vos serveurs Linux. Pour modifier ce comportement, il faudra voir la configuration de /etc/xymon/client-local.cfg.

    1_1522745982255_Xymon-ports.png

    0_1522745982255_Xymon-procs.png

    Acquitter un test/un serveur

    Si un incident est en cours et que vous souhaitez acquitter un test (et donc l’alerting), vous pouvez le faire via le formulaire du voyant “info” ou par le formulaire accessible via le menu en haut (Administration/Enable disable).

    1_1522746005351_Test-disabled.png

    0_1522746005350_Xymon-blue.png

    Supprimer un test, un serveur / tests purple

    Vous pouvez avoir besoin de supprimer un test ou un serveur et vous pouvez rencontrer des tests en “purple” : c’est ce qui arrive quand un serveur n’a pas envoyé de status pour un test (précédemment référencé) depuis 30 minutes.

    • Pour supprimer un test :
    /usr/lib/xymon/server/bin/xymon 127.0.0.1 "drop HOSTNAME ftp"
    

    Si vous testez une extension Xymon et que vous la désactivez ensuite, vous êtes typiquement dans le cas ou le voyant deviendra “purple” si vous ne supprimez pas le test.

    • Pour supprimer un serveur, il faudra d’abord le retirer du fichier hosts.cfg puis :
    /usr/lib/xymon/server/bin/xymon 127.0.0.1 "drop HOSTNAME"
    
    • Pour supprimer tous les tests en purple :
    #!/bin/bash
    # PURGE PURPLE
    
    for i in `/usr/lib/xymon/server/bin/xymon 127.0.0.1 "hobbitdboard color=purple fields=testname,hostname"`
    do
        CLIENT=`echo $i|cut -d"|" -f2`
        TEST=`echo $i|cut -d"|" -f1`
    
        echo "Suppression $CLIENT -> $TEST"
    
        /usr/lib/xymon/server/bin/xymon 127.0.0.1 "drop $CLIENT $TEST"
    
    done
    

    C’est terminé pour cette introduction sur l’installation d’un serveur Xymon. Il reste de multiples possibilités à explorer que je n’ai pas détaillé ici. Le but de cet article est d’apporter un support pour les prochains sujets autour de Xymon et Puppet : envoyer les rapports Puppet sur Xymon, une supervision automatique avec Xymon et Puppet…