Catégories
Nagios Open-source Planet-libre

Nagios 4: Résoudre l’erreur « Can’t open /etc/rc.d/init.d/functions »

La version 4 de Nagios est enfin sortie et vous avez décidé de l’installer sur votre serveur Debian/Ubuntu. Il y a de forte chance que vous tombiez sur un message d’erreur au lancement du démon Nagios. Nous allons voir dans ce billet comment résoudre ce problème.

Identification du problème

Vous avez le message suivant quand vous lancer Nagios ?

# /etc/init.d/nagios start
/etc/init.d/nagios: 20: .: Can't open /etc/rc.d/init.d/functions

alors ce billet est fait pour vous…

Explication du pourquoi…

Depuis la mise à jour de Nagios vers la version 4.0 (et la version corrective 4.0.1) un bug plutôt gênant peut impacter les machines Debian et Ubuntu. En effet le script de démarrage de Nagios qui se trouve dans le fichier /etc/init.d/nagios fait un appel à un ensemble de fonctions génériques sous /etc/rc.d/init.d/functions. Malheureusement, ce fichier n’existe pas sous ce nom sur les dernières versions de Debian/Ubuntu mais il est disponible sous  /lib/lsb/init-functions.

Comment résoudre le problème étape par étape…

On commence par installer le logiciel daemon qui est utilisé par le script d’installation nouvelle mouture:

sudo apt-get install daemon

Puis on hack le script de démarrage:

        sudo sed -i 's/^\.\ \/etc\/rc.d\/init.d\/functions$/\.\ \/lib\/lsb\/init-functions/g' /etc/init.d/nagios
        sudo sed -i 's/status\ /status_of_proc\ /g' /etc/init.d/nagios
        sudo sed -i 's/daemon\ --user=\$user\ \$exec\ -ud\ \$config/daemon\ --user=\$user\ --\ \$exec\ -d\ \$config/g' /etc/init.d/nagios
        sudo sed -i 's/\/var\/lock\/subsys\/\$prog/\/var\/lock\/\$prog/g' /etc/init.d/nagios
        sudo sed -i 's/\/sbin\/service\ nagios\ configtest/\/usr\/sbin\/service\ nagios\ configtest/g' /etc/init.d/nagios
        sudo sed -i 's/\"\ \=\=\ \"/\"\ \=\ \"/g' /etc/init.d/nagios
        sudo sed -i "s/\#\#killproc\ \-p\ \${pidfile\}\ \-d\ 10/killproc\ \-p \${pidfile\}/g" /etc/init.d/nagios
        sudo sed -i "s/runuser/su/g" /etc/init.d/nagios
        sudo sed -i "s/use_precached_objects=\"false\"/&\ndaemonpid=\$(pidof daemon)/" /etc/init.d/nagios
        sudo sed -i "s/killproc\ -p\ \${pidfile}\ -d\ 10\ \$exec/\/sbin\/start-stop-daemon\ --user=\$user\ \$exec\ --stop/g" /etc/init.d/nagios
        sudo sed -i "s/\/sbin\/start-stop-daemon\ --user=\$user\ \$exec\ --stop/&\n\tkill -9 \$daemonpid/" /etc/init.d/nagios

Il ne reste plus qu’à redémarrer Nagios:

sudo service nagios start

 …Ou utiliser un script qui fait tout pour vous

Pour les gros flemmards que vous êtes, j’ai créé un script qui va vérifier que le problème existe sur votre configuration et le corriger pour vous:

wget https://raw.github.com/nicolargo/nagiosautoinstall/master/hack4nagiosstart.sh
chmod a+x ./hack4nagiosstart.sh
./hack4nagiosstart.sh

Note: J’ai également ajouter l’appel à ce hack dans mes scripts d’installation et de mise à jour automatique de Nagios.

Catégories
Hardware Nagios Open-source Planet-libre

Supervision d’un NAS NetApp avec Nagios ou Shinken

Dans la jungle très lucrative des « NAS appliance », c’est à dire des serveurs NAS intégré dans un hardware et un système spécifique, NetApp fait office de leader pour la qualité prix de ses produits. Nous allons voir ensemble dans ce billet comment superviser une machine NetApp FAS2200 à partir de Nagios ou de Shinken.

nas01

Note: ce billet doit également être valable pour l’ensemble des produits NetApp.

Récupération du plugin chek-netapp-ng

En cherchant un peu sur le Web, j’ai trouvé un plugin Nagios permettant de superviser finement ses machines NetApp. Bien que datant un peu, ce plugin est parfaitement fonctionnel.

Une fois connecté en SSH (en root) sur son serveur Nagios / Shinken (la procédure est la même), on commence donc par récupérer le plugin:

mkdir -p ~/tmp
cd ~/tmp
wget --no-check-certificate https://raw.githubusercontent.com/ranl/monitor-utils/master/nagios/check-netapp-ng.pl
chmod a+x check-netapp-ng.pl

Installation du plugin chek-netapp-ng

L’installation différe ici si vous utilisez Nagios ou Shinken.

Pour installer le plugin sur Nagios, il faut saisir:

cp ~/check-netapp-ng.pl /usr/local/nagios/libexec/check-netapp-ng.pl
chown nagios:nagios /usr/local/nagios/libexec/check-netapp-ng.pl

Pour Shinken:

cp ~/check-netapp-ng.pl /usr/local/shinken/libexec/check-netapp-ng.pl
chown shinken:shinken /usr/local/shinken/libexec/check-netapp-ng.pl

Configuration du plugin chek-netapp-ng

Il faut ensuite éditer le fichier (par exemple /usr/local/shinken/libexec/check-netapp-ng.pl) pour y éditer la ligne numéro 15 avec le chemin vers les librairies:

use lib "/usr/local/shinken/libexec";

 Note: Respectivement /usr/local/nagios/libexec pour Nagios.

On doit ensuite faire connaître le plugin à Shinken (ou Nagios) en ajoutant les lignes suivantes dans votre fichier commands.cfg (sous /usr/local/shinken/etc):

################################################################################
# Netapp check
#===============================================================================
# https://github.com/ranl/IT/blob/master/Nagios/check-netapp-ng.pl
################################################################################

define command {
    command_name    check_netapp_globalstatus
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T GLOBALSTATUS
}

define command {
    command_name    check_netapp_temp
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T TEMP
}

define command {
    command_name    check_netapp_fan
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T FAN
}

define command {
    command_name    check_netapp_ps
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T PS
}

define command {
    command_name    check_netapp_cpuload
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T CPULOAD
}

define command {
    command_name    check_netapp_nvram
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T NVRAM
}

define command {
    command_name    check_netapp_diskused
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T DISKUSED --vol $ARG1$
}

define command {
    command_name    check_netapp_faileddisk
    command_line    $PLUGINSDIR$/check-netapp-ng.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -T FAILEDDISK
}

Déclaration de votre serveur NAS

Il ne reste plus qu’à définir votre serveur NAS dans la configuration de Shinken (ou de Nagios). Par exemple, j’ai un fichier nas01.cfg qui contient:

define host {
  use   ssh,generic-host
  host_name nas01
  address   192.168.1.130
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Global status
  check_command check_netapp_globalstatus
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Temperature
  check_command check_netapp_temp
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP FAN
  check_command check_netapp_fan
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Power Supply
  check_command check_netapp_ps
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP CPU LOAD
  check_command check_netapp_cpuload
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP NVRAM
  check_command check_netapp_nvram
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Disk used Home
  check_command check_netapp_diskused!/vol/vol0/
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Disk used Archive
  check_command check_netapp_diskused!/vol/vol_ARCHIVE/
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Disk used Install
  check_command check_netapp_diskused!/vol/vol_INSTALL/
}

define service {
  use generic-service
  host_name nas01
  service_description NetAPP Failed disk
  check_command check_netapp_faileddisk
}

Une fois Shinken (ou Nagios) redémarré et après les premiers checks, vous devriez voir la page de supervision apparaître dans l’interface Web (comme au début de ce billet).

On peut donc superviser les choses suivantes:

  • La charge CPU (ce qui peut être utile si votre serveur NAS est trop chargé, par exemple trop d’accès simultanés)
  • La taille utilisé par partitions
  • L’état des ventilateuts
  • L’état des disques (supervision du RAID)
  • Le status global

Voilà une bonne chose de faite: la supervision du serveur le plus sensible (il y a toutes vos données dessus normalement) de votre infrastructure.

Catégories
Nagios Open-source Systeme

CheckGlances ou la rencontre de Glances et de Nagios

Ce billet a comme objectif de présenter mon dernier développement qui est un plugin Nagios|Shinken pour récupérer des informations systèmes sur des machines hôtes faisant tourner Glances.

Je vous présente donc CheckGlances.py.

Quoi ?

CheckGlances est un plugin compatible avec Nagios et ses forks (Icinga, Centreon…) / ré-implémentations (Shinken). Il respecte au maximum les spécifications données par Nagios.

Développé en Python, il permet d’aller récupérer les statistiques d’un serveur Glances (c’est à dire un glances lancée avec l’option -s) via un lien XML RCP sur HTTP.

Pourquoi ?

Le principal avantage de cette solution est que Glances se base sur une librairie Python nommé PsUtil (pour la récupération des statistiques) et qui a le bon goût d’être multi-plateforme. On a donc un plugin permettant de manière unique de récupérer les statistiques sur des hôtes GNU/Linux, BSD, Mac OS ou Windows.

Un autre avantage est l’ouverture de ce système à des statistiques plus fines. Bien que cette première version se limite à CPU, charge, mémoire et swap. CheckGlances, pourra à terme remonter vers votre serveur de supervision toutes les données traitées par Glances (débit des interfaces réseaux, disk IO, processus, température…).

Comment ?

Je ne vais pas copier/coller la documentation qui se trouve sur le site officiel mais l’installation se fait comme pour n’importe quel autre plugin et dépend donc de votre serveur de supervision et de sa configuration.

Il est également possible de tester le plugin en ligne de commande.

Voici quelques exemples (en partant sur Glances server est lancé sur votre machine locale):

CPU

./checkglances.py -H localhost -s cpu
CPU consumption: 2.96% | 'percent'=2.96 'kernel'=0.73 'iowait'=0.20 'idle'=97.04 'user'=1.89 'irq'=0.00 'nice'=0.00

 LOAD

./checkglances.py -H localhost -s load
LOAD last 5 minutes: 0.22% | 'min1'=0.13 'min5'=0.22 'min15'=0.29

MEM

./checkglances.py -H localhost -s mem
MEM consumption: 59.50% | 'used'=3411509248.00 'cache'=1071792128.00 'total'=3934547968.00 'percent'=59.50 'free'=523038720.00

SWAP 

./checkglances.py -H localhost -s swap
SWAP consumption: 3.70% | 'used'=150159360.00 'total'=4080005120.00 'percent'=3.70 'free'=3929845760.00

Le futur…

Il reste encore pas mal de travail du coté de Glances pour proposer une interface XML RCP industrialisable. En effet, outre le fait que seules quelques statistiques sont remontées, il n’y a pour l’instant pas de sécurité. C’est donc une solution qui est utilisable sur un réseau local mais pas dans une architecture Internet. Mais promis, l’authentification client / server est prévue dans la prochaine version de Glances.

Comme toujours, je suis preneur de toutes les remarques, questions et retour de test sur ce nouvel outil.

 

Catégories
Nagios Open-source Planet-libre Systeme

Installation pas à pas d’un serveur de supervision Shinken

Nous allons aborder l’installation et la configuration basique initiale d’un serveur de supervision basé sur Shinken. Ce billet est le premier d’une série sur le sujet. Dans la suite j’utiliserai une machine virtuelle sous Debian Squeeze 6.0.6 (version minimale) pour illustrer mes dires…

Installation de Shinken

Les commandes sont à saisir à partir du compte root ou en les précédants de la commande ‘sudo’ si celle-ci est installée.

apt-get install curl
curl -L http://install.shinken-monitoring.org | /bin/bash

Attendre quelques minutes…

Lors du premier re-démarrage, je suis tombé sur l’erreur suivante (/tmp/bad_start_for_arbiter):

[1351082314] Error :   Opening the log file 'arbiterd.log' failed with '[Errno 13] Permission denied: u'/usr/local/shinken/var/arbiterd.log''

Pour la résoudre ce problème de droit, j’ai effectué les actions suivantes:

service shinken stop
chown -R shinken:shinken /usr/local/shinken
service shinken start

L’installation se fait dans le répertoire /usr/local/shinken. Pour identifier les éventuels problèmes que vous pouvez rencontrer lors de l’installation, vous pouvez consulter le fichier de log /tmp/shinken.install.log.

Configuration initiale de Shinken

Les fichiers de configuration se trouvent dans le répertoire /usr/local/shinken/etc/.

Avant de commencer à jouer avec cette configuration, il est important d’avoir une connaissance générale de l’architecture de Shinken. Je vous conseille donc la lecture de cette page sur le wiki officiel.

La première chose à faire et de sécuriser l’accès à l’interface WebUI installé par défaut. Pour cela, il faut éditer la section module / WebUI du fichier shinken-specific.cfg en ajoutant le module Mongodb et en changeant le mot de passe auth_secret:

define module {
  module_name WebUI
  module_type webui

  host 0.0.0.0
  port 7767
  auth_secret MOTDEPASSE

  modules Apache_passwd,ActiveDir_UI,Cfg_password,PNP_UI,Mongodb

  manage_acl 1
  play_sound 0
  allow_html_output 0
  max_output_length 100
}

Puis en éditant le mot de passe du compte admin (par défaut: admin) dans le fichier contacts.cfg:

define contact{
    use             generic-contact
    contact_name    admin
    email           votre@mail.com ; adresse mail
    pager           0600000000   ; telephone
    password        motdepasseadmin ; mot de passe
    is_admin        1
}

Comme vous pouvez le voir c’est également dans cette section que vous pouvez changer l’adresse IP (par défaut en écoute sur toute les adresses IP des interfaces) et le port découte (par défaut TCP/7767) de l’interface WebUI.

On peut ensuite relancer Shinken pour prendre en compte la modification:

service shinken restart

Il ne reste plus qu’à acceder à la l’interface Shinken WebUI en saisissant l’URL suivante dans votre navigateur (en remplacant @IP par l’adresse IP de votre serveur): http//@IP:7767/

Lors de mon installation (sur une VM), je ne disposais que de 3 Go de libre sur le montage /var. La configuration par défaut de MongoDB, qui est la base de donnée utilisé par la WebUI pour stocker les informations utilisateurs, à besoin d’un fichier journal de plus de 3 Go. J’avais donc le message suivant au niveau de l’interface:

Et le log suivant dans le fichier /var/log/mongodb/mongodb.log:

Wed Oct 24 16:02:26 [initandlisten] ERROR: Insufficient free space for journal files
Wed Oct 24 16:02:26 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Wed Oct 24 16:02:26 [initandlisten]
Wed Oct 24 16:02:26 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Wed Oct 24 16:02:26 dbexit:

Pour forcer MongoDB a être moins gourmand, j’ai changer sa configuration dans le fichier /etc/mongodb.conf:

smallfiles = true

Puis on relance MongoDB:

service mongodb restart

A ce stade vous devriez avoir une interface WebUI fonctionnelle mais désespérément vide (mis à part votre serveur de supervision)…

Il est donc temps de passer à la prochaine étape.

Superviser votre système d’information avec Shinken

Selon la taille de votre réseau, la tache qui consiste à entrer les machines à superviser dans la configuration de Shinken peut s’averer pour le moins lourde. Heureusement, Shinken fournit un outil permettant de découvrir automatiquement les machines présente sur votre réseau (j’en avais déjà parlé dans ce billet) et même sur votre serveur de virtualisation VMWare (via vCenter).

Cet outil se base sur:

On commence donc par installer ces deux pré-requis sur notre serveur de supervision:

apt-get install nmap
/usr/local/shinken/install -p check_esx3

Si vous avez un serveur VMWare vCenter, vous pouvez vérifier le bon fonctionnement du plugin check_esx3 en le lancant en ligne de commande:

/usr/local/shinken/libexec/check_esx3.pl -H @IPVCENTER -u LOGIN -p MOTDEPASSE -l cpu
CHECK_ESX3.PL OK - cpu usage=376.00 MHz (0.59%) | cpu_usagemhz=376.00Mhz;; cpu_usage=0.59%;;

/usr/local/shinken/libexec/check_esx3.pl -H @IPVCENTER -u LOGIN -p MOTDEPASSE -l mem
CHECK_ESX3.PL OK - mem usage=30413.32 MB (23.20%), overhead=652.43 MB, swapped=0.00 MB, memctl=0.00 MB | mem_usagemb=30413.32MB;; mem_usage=23.20%;; mem_overhead=652.43MB;; mem_swap=0.00MB;; mem_memctl=0.00MB;;

/usr/local/shinken/libexec/check_esx3.pl -H @IPVCENTER -u LOGIN -p MOTDEPASSE -l net
CHECK_ESX3.PL OK - net receive=2.00 KBps, send=1.00 KBps, all 2 NICs are connected | net_receive=2.00KBps;; net_send=1.00KBps;; OK_NICs=2;; Bad_NICs=0;;

/usr/local/shinken/libexec/check_esx3.pl -H @IPVCENTER -u LOGIN -p MOTDEPASSE -l vmfs
CHECK_ESX3.PL OK - Storages : 'datastore1'(free)=279348.00 MB (99.65%), 'datastore2'(free)=548125.00 MB (57.51%) | datastore1=279348.00MB;; datastore2=548125.00MB;;

rm /tmp/cwpss_*

Il faut ensuite donner à Shinken les informations sur les réseaux (et serveurs vCenters) ou le logiciel de découverte doit être lancé. Pour cela, il faut éditer le fichier /usr/local/shinken/etc/resource.cfg (section Discovery):

#-- Discovery
# default snmp community
$SNMPCOMMUNITYREAD$=public
# what to discover by default
$NMAPTARGETS$=192.168.1.0/24
# If your scans are too slow, try to increase minrate (number of packet in parallel
# and reduce the number of retries.
$NMAPMINRATE$=1000
$NMAPMAXRETRIES$=0
# VMWare vCenter
$VCENTER$=vcenter.mondomaine.com
$VCENTERLOGIN$=LOGINVCENTER
$VCENTERPASSWORD$=MOTDEPASSEVCENTER

Il est bien sur possible d’ajouter des réseaux ou de machines à la variable $NMAPTARGETS$ en séparant chaque entrée par un espace.

On peut lancer shinken-discovery qui va effectuer la découverte automatique:

/usr/local/shinken/bin/shinken-discovery -c /usr/local/shinken/etc/discovery.cfg -o /usr/local/shinken/etc/objects/discovery/ -r nmap,vsphere

shinken-discovery va générer la configuration des machines découvertes dans le répertoire /usr/local/shinken/etc/objects/discovery/ (configurable dans la commande ci-dessus avec l’option -o).

On relance Shinken pour intégrer les machines ainsi découvertes:

service shinken restart

En allant dans l’interface graphique, vous allez sûrement rencontrer des erreurs de check car tous les plugins ne sont pas installés par défaut. Par exemple :

... BigProcesses CRITICAL3m 10s /bin/sh: /usr/local/shinken/libexec/check_wmi_plus.pl: not found ...

Il faut donc utiliser le script d’installation pour installer les plugins manquant.

Sur ma configuration j’ai ainsi fait:

/usr/local/shinken/install -p check_mysql_health
/usr/local/shinken/install -p manubulon
/usr/local/shinken/install -p check_snmp_bandwidth
/usr/local/shinken/install -p check_netint
/usr/local/shinken/install -p check_nwc_health
/usr/local/shinken/install -p check_wmi_plus

Il faut procéder ainsi jusqu’à avoir installé tous les plugins manquants nécessaires. Pour avoir une liste exhaustive des plugins dont l’installation est supporté par le script Shinken install, il suffit de saisir la commande suivante:

/usr/local/shinken/install -h
...
    -p | --plugin           Install plugins. Argument should be one of the following:
                               check_esx3
                               nagios-plugins
                               check_oracle_health
                               check_mysql_health
                               capture_plugin
                               check_wmi_plus
                               check_mongodb
                               check_emc_clariion
                               check_nwc_health
                               manubulon (snmp plugins)
                               check_hpasm
                               check_netapp2
                               check_mem (local enhanced memory check plugin)
                               check_snmp_bandwidth (check bandwidth usage with snmp)
                               check_netint (enhanced version of check_snmp_int plugins)
                               check_IBM
                               check_IBM_DS
                               check_rsync
...

La découverte automatique est vraiment un plus mais ce n’est pas le Saint Grall. En effet pour configurer finement ce que l’on veut suppervier, il faudra obligatoirement reprendre la configuration à la main en éditant les fichiers se trouvant dans le répertoire /usr/local/shinken/etc/objects/discovery. De plus, la notion de groupe étant plus une problématique fonctionnelle que technique, il vous faudra configurer ces derniers manuellement à partir du fichier /usr/local/shinken/etc/hostgroups.com.

Un exemple de configuration de groupe:

define hostgroup{
   hostgroup_name VirtualisationServers
   alias Virtualisation Servers
   members vcenter, virt1, virt2, virt3, virt4
}

Attention à bien sauvegarder ce répertoire avant de relancer un shinken-discovery, histoire de ne pas perdre vos modifications.

Reste ensuite la phase la plus longue mais également la plus importante de la configuration de Shinken: ne surveiller que les choses importantes pour votre système d’information.

En effet, le mode de découverte automatique n’est pas assez fin pour déterminer par lui même ce qu’il faut superviser. La CPU du PC de la secrétaire monte régulièrement au dessus de 90% d’utilisation ? What else… Par contre si on constate la même consommation CPU sur le serveur Web de votre entreprise, il faut aller y jeter un coup d’oeil…

Le plus simple pour effectuer cette lourde tache est de manipuler la WebUI (voir le chapitre suivant), puis de parcourir l’ensemble des hosts et des services en supprimant ce que l’on juge peu important.

Prise en main de Shinken WebUI

A ce stade, vous devriez avoir un serveur de supervision qui commence à remonter un certain nombres d’informations dans l’interface WebUI.

Je vous encourage ensuite à vous familiariser avec cette nouvelle interface WebUI qui peut être un peu déroutante pour les personnes habituées à manipuler d’autres solutions de supervision. A ce sujet, il est également possible d’utiliser des interfaces alternatives comme Thruk qui se rapproche plus de l’interface native de Nagios.

Thruk, une alternative à Shinken WebUI

Personnellement, je trouve qu’une fois la première impression passée (c’est quoi ces gros icônes ? Ou sont mes hosts !). La modularité apportée par le Dasboard, les filtres et les bookmarks permet d’adapter cette interface à vos besoins. Si les développeurs de Shinken lisent cet article (et je suis sûr qu’ils vont le faire, coucou @naparuba :)), il serait bon près configurer le Dashboard par défaut et quelques filtres bien pensées histoire que les nouveaux utilisateurs ne se trouvent pas devant des pages blanches.

 

On peut également se créer des filtres personnels (par exemple toutes les machines appartenant au groupe « serveur » ou tout les services remontant la charge des machines…) et créer des bookmarks dans la page All de la WebUI.

Et après ?

Nous arrivons au terme de ce premier article sur une configuration pas à pas de Shinken. Au prochain épisode, nous allons nous pencher sur la notion d’impacts/dépendances et de business rules qui sont de grosses valeurs ajoutées de Shinken par rapport à Nagios.

Catégories
Nagios Open-source Planet-libre Reseau Systeme

Interview de Jean Gabes pour la sortie de Shinken 1.2

Pour la sortie de Shinken 1.2, Jean Gabes a eu la gentillesse de répondre à quelques questions que je me posais sur cette nouvelle monture.

Salut Jean et tout d’abord merci de nous consacrer un peu de ton temps.

Mais c’est bien normal !

C’est un été plutôt chargé pour toi avec la finalisation de la version 1.2 de Shinken et la rédaction du numéro spécial du GNU Linux Magazine. Comment arrives-tu à gérer cela en parallèle de tes activités professionnelles ?

Ce n’est pas simple, et ça l’est de moins en moins en fait. Avec le recul, même si la rédaction du hors série a pris du temps, c’est surtout la gestion du projet qui est la plus consommatrice en ce qui me concerne. Il y a de plus en plus d’intérêts pour le projet, ce qui est bien, et avec eux de plus en plus de contributeurs, ce qui est encore mieux.

Mais ceci à un coût en terme de temps de gestion, pour faire le “portier“ sur les patchs proposés, et demander (gentiment) par exemple, de revoir ce qui est proposé. Les forums sont de plus en plus actifs, heureusement, on a de plus en plus d’utilisateurs de la première heure qui prennent part au support sur le forum, et c’est une grande aide que j’apprécie vraiment.

Vue la progression de l’activité, je ne pourrais pas rester 100% administrateur et suivre le rythme, je vais devoir faire des choix pas très simples prochainement.

A titre personnel, je trouve que la principale évolution de cette version est apportée par le module de configuration (découverte automatique, gestion par “packs” et SKonf). Peux-tu nous en dire plus sur ce que cela va apporter aux utilisateurs ?

C’est également mon avis. Si l’on regarde bien, au tout début le projet était orienté pour les “power users” de Nagios, avec des modes distribués, plus de performances, des améliorations qui portent sur les très gros environnements. Je pensais que seuls ces utilisateurs avaient de gros soucis. Or ce n’est pas le cas.

Un peu dans la même philosophie que l’interface de visualisation “simple” WebUI, cette nouvelle interface de configuration est une réponse pour la majorité des administrateurs. Même si certains ne lâcheront pas leur sed, vi ou emacs, d’autres seront râvis de pouvoir ajouter dans la supervision une nouvelle machine en quelques secondes, avec des “tags” automatiques comme “Linux”, “Mysql” ou “DMZ”.

Cette tâche était si ingrate et complexe avec les anciens outils de configuration qu’elle était laissée à l’administrateur de la supervision (par exemple moi dans la société où je travaille…). Désormais tout le monde va pouvoir le faire très simplement et en quelques secondes. C’est un peu emprunté de l’esprit DevOps : l’administrateur de supervision va pouvoir définir des “règles” qui vont permettre de tagguer ses machines (par exemple : port 80 ouvert? -> tag http) et d’associer des services à ces tags (tag http? on lance la commande check_http). Les autres administrateurs vont désormais pouvoir ajouter “simplement” leurs hôtes sans avoir à se soucier des (nombreux!) paramètres de supervision, ni même savoir ce qu’est une sonde de supervision.

Un but avoué de l’outil est de ne plus avoir à s’occuper de notions de “services”. Seuls les hôtes et les templates d’hôtes (nos tags) sont importants dans la vie de tous les jours (demander à un administrateur système ce qu’il retient des notions d’hôtes et services Nagios, vous verrez qu’il aura beaucoup de mal au début avec les services, alors que pour l’hôte ce sera immédiat). Le but est donc de rentrer sa liste d’hôte, avec leurs propriétés (liste des volumes disques par exemple), et c’est tout…

Vu que l’outil se base sur la librairie de découverte, ce mode de fonctionnement peut être automatisé, comme par exemple “rescanner” des hôtes rajoutés précédement pour mettre à jour leur liste de volume disques, voir l’intégrer à un workflow automatique de création de machine virtuelle.

Les Packs sont également issus d’un constat que dans le microsome “Nagios” le partage de sondes est central, mais il n’en est rien de la bonne manière de les mettre en place et les utiliser. Si on prend comme exemple la supervision d’un serveur MySQL distant, la plupart des utilisateurs vont s’orienter vers la sonde check_mysql_health.pl, il y a alors beaucoup de manières de la mettre en place, de gérer les comptes et mots de passes, les seuils, etc. De même, comment bien représenter ces informations sur des outils comme PNP4Nagios ou Graphite et avec quel template ?

Les “packs” Shinken sont là pour cela. Ils sont un “concentré de bonnes pratiques” dans un fichier zip. Basiquement ce sont des fichiers de configuration, des icônes et des templates pour les graphiques, il n’y a rien de complexe ou de magique là dedans. C’est juste que lorsque l’on débute dans la supervision ou que l’on a un nouveau système d’exploitation ou autre, il est tout de même plus simple de partir d’un exemple de supervision que d’une page blanche. Les packs sont là pour que l’expérience des uns serve également au reste de la communauté.

Je suis donc tout à fait d’accord sur le fait que la gestion de configuration est bien l’élément central de cette version, bien plus que la page “dashboard” par exemple. Ce point sera encore central un bon moment, car cela reste la problématique N°1 des administrateurs aujourd’hui.

Par rapport à la version 1.0, on sent une certaine maturitée lors de l’utilisation de l’interface graphique de Shinken (WebUI). Quelles sont pour toi les axes d’améliorations encore possible ?

Question intéressante. Si l’on met de côté la nouvelle page de “dashboard”, il n’y a pourtant pas eu de profonds changements dans la manière de montrer les informations. C’est justement tout ce qui fait la complexité des interfaces graphiques. Il y a bien sûr les concepts centraux comme mettre en avant les problèmes importants pour le métier (et non pas la myriade d’impacts), ou encore de baser les droits sur les attributions des notifications pour les contacts.

Mais le ressenti des utilisateurs est également question de “détails” de présentations. Les détails seront par exemple la position des boutons d’actions pour lancer des actions sur la page d’hôte ou de service. Or ce que je nommais “détail” lorsque j’ai débuté WebUI n’en sont pas, et la question est là pour le prouver. Ils sont primordiaux dans le ressenti de l’utilisateur, sur la qualité même de l’interface.

Outre quelques nouvelles pages et widgets, la prochaine version sera encore améliorée un peu partout en terme d’ergonomie, pour que son utilisation soit la plus “naturelle” possible, si tant est qu’utiliser un outil de supervision puisse être “naturel” pour les utilisateurs. Disons qu’elle doit être là pour apporter le plus d’efficacité possible à ses utilisateurs, avec par exemple le fait d’avoir les boutons d’actions facilement utilisables sans que l’utilisateur ait besoin de les chercher un peu partout?

Quels sont les avantages apportés par les nouvelles fonctions de trigger par rapport aux classiques sondes ?

Pour rappel, les triggers sont du code Python fourni par l’utilisateur qui va être exécuté “en interne” de Shinken pour lire des états ou des données de performances d’hôtes et services puis pour ensuite lancer des actions, changer d’autres états ou créer des notifications.

C’est une très bonne question qui revient souvent dès que l’on a commencé à évoquer les triggers. Ils ne sont pas là pour remplacer les sondes de mesure de CPU ou d’espace disques, même si c’est techniquement possible. Dans 95% des cas de supervision, les bonnes vieilles sondes “à la Nagios” seront bien plus efficaces que les triggers, ne serait ce que du fait qu’il est facile des les tester (contrairement aux triggers).

Ils vont être utiles principalement pour deux choses :

  • la corrélation avancée
  • le traitement de données passives

Dans le premier cas, il est parfois utile d’agréger des informations en un seul indicateur. Par exemple si je veux présenter à mon responsable l’état du service mail fourni aux utilisateurs, je ne vais pas lui présenter la dizaine de serveurs et de services qui le composent. Je vais faire une règle “métier” avec des ET et des OU. Mais parfois ce genre d’opérateurs ne suffisent plus, et il faut sortir l’artillerie lourde qui compare des seuils les uns avec les autres pour savoir à quel point la situation est grave pour les utilisateurs. Ici les triggers vont permettre d’utiliser toute la puissance de Python pour “coder” une telle règle.

Dans le second cas, historiquement dans le monde Nagios, les commandes externes permettent de traiter des états envoyés par d’autres outils. Cependant, l’état doit déjà être calculé (comme OK ou CRITICAL). Il n’était pas possible d’importer une information et de l’analyser (comme par exemple un texte d’une TRAP SNMP). Désormais, des outils tiers peuvent envoyer des informations, la “vérification” sera alors faite en interne par Shinken.

Ce qui est intéressant lorsque l’on mélange les deux cas d’utilisation c’est que l’on obtient la définition de certains de l’Hypervision (en gros absorber des données d’outils de supervision, les traiter, les normaliser et en faire des états agrégés). Le plus drole c’est que le code qu’il a fallu pour ajouter les triggers au code de Shinken est ridiculement petit.

L’ouverture de Shinken vers des données recueillies par Collectd est très intéressante. N’as-tu pas peur de multiplier ainsi les interfaces et de complexifier l’administration ?

Dans le cas de Collectd, si ça alourdi la charge de développement, je ne pense pas que ceci ajoute une charge pour l’utilisateur. Il pourra choisir sa méthode de collecte de donnée favorite, et n’aura pas à utiliser les deux. Ce module était plus pour démontrer ce qu’il est possible de faire avec les triggers que pour remplacer les sondes classiques de supervision. Je ne pense pas que collecter les données de performances toutes les 10 secondes soit utile, donc je pense que beaucoup ne vont pas aller regarder du côté de Collectd, et vont se simplifier la vie en restant avec de la supervision “active”.

Le principe est cependant valable pour tout le reste du projet, et on tente d’avoir des fonctionalités le plus “ortogonales” possibles, donc qui ne se recoupent pas. Certains souhaitaient par exemple ajouter dans la configuration par défaut un “pack” linux basé sur le plugin check_by_ssh en plus de celui basé sur SNMP. J’ai refusé une telle chose car la plupart des utilisateurs vont devoir faire un choix qui est loin d’être simple. J’ai déjà raconté le temps qu’il m’avait fallu pour configurer mon premier Nagios (1 semaine pleine pour avoir une configuration convenable !) et je ne souhaite pas que les débutants de 2012 aient à passer par un tel “bizutage”…

Avec la nouvelle procédure d’installation en une ligne de commande, tu sembles vouloir prendre soin de tes utilisateurs. La phase de configuration initiale du réseau est encore longue et relativement complexe, vas-tu proposer des outils pour les aider ?

Grâce au gros travail de David Guenault, l’installation est désormais triviale, et c’est déjà une énorme victoire !

Ensuite vient la phase de configuration qui se passe en deux étapes:

  • identifier les types d’éléments que l’on a (linux, windows, mysql, mssql, exchange, etc etc) et pour chacun mettre en place des sondes de supervision
  • lister ses machines, et les entrer dans l’outil avec les bons types pour qu’elles aient toutes la bonne supervision adaptée et complète (car les soucis viendront toujours de quelque chose que l’on a oublié de supervisé, c’est bien connu).

C’est justement dans cette optique que nous avons développé les “packs” de supervision et la librairie de découverte avec son interface sKonf. Dans un environnement “classique” (linux, windows, mssql, mysql, apache, oracle …), une fois l’installation effectuée, il reste à lancer un scan de son réseaux et à configurer les bons mot de passe pour que l’on ait une supervision “acceptable”. Il restera toujours une phase d’adaptation, mais là où bon nombres d’administrateurs auraient déjà abandonnés avec un Nagios, là ils auront leur premiers résultats, et pourront commencer leur processus d’amélioration continue avec la supervision.

On passe à quelques questions plus générales. Pourquoi avoir choisi la licence Affero GPL pour la diffusion de Shinken ?

Dans bon nombre d’entreprises, la supervision est externalisée à une société de service, sur un serveur fourni par cette entreprise. Avec uniquement la license GPL, les utilisateurs n’auraient pas eu accès aux sources de l’application qui les surveille. Grâce à l’Affero, ils peuvent en exiger les sources, donc même si cela a fâché certaines personnes comme l’auteur de Nagios, j’ai préféré mettre le maximum de droits dans les mains des utilisateurs.

En face de toi, tu as une concurrence qui dispose de gros moyens commerciaux, marketing et de support technique. Comment te positionnes tu par rapport aux clients professionnels qui peuvent s’inquièter de la péréniter de Shinken ?

Heureusement pour le projet Shinken l’effet “communauté” tourne à plein régime et nous n’avons pas à rougir de l’activitéque ce soit en nombres de commits ou de commiters !

Le marketing et l’aspect commercial sont cependant deux points faibles. Ce n’est peut être pas un hasard car si je regarde bien, ceci reflète bien mes propres points faibles…

Or (malheureusement?) la technique ne fait pas tout. Il est bien plus logique pour un décideur d’aller vers une solution bien vendue avec des “petits déjeuners”, de jolies tablettes de présentations et un discours marketing bien rodé, que de prendre des “risques” et partir vers une solution pleinement communautaire, même si elle réponds au besoin.

La seule solution est de monter une structure professionnelle derrière le projet qui permette de rassurer les décideurs avec du support et une assurance de la perénité des produits. Or c’est bien plus complexe que l’on pourrait le croire, car monter un business dans le monde Open Source d’un point de vue “éditeur” est très difficile lorsque l’on se rapproche de la technique comme ici (même si voir la supervision comme de la pure technique est une erreur qui mène un projet de supervision à sa perte soit-dit en passant).

On a l’habitude de dire que la solution vient des “services”, surtout de l’intégration quand on écoute bien. Mais si l’on souhaite monter un pur “éditeur”, là la relation intégrateur-éditeur est très vite déséquilibrée pour l’éditeur, avec des intégrateurs qui vont vendre un pack de support complet avec leur intégration. L’éditeur n’a donc plus que la ressource de développement à la demande, quand ce n’est pas un intégrateur qui s’en occupe 🙂

Une solution simple serait de faire comme l’auteur de Nagios ou d’autres éditeur de supervision “open source” en proposant une surcouche graphique ou des modules sous licenses proprietaires et payantes. Si je comprends parfaitement comment ils en sont arrivés à une telle position, je n’ai pas envie de tomber dans le même piège. Je préfèrerai encore rester un simple administrateur de campagne que de faire de même 🙂

La problématique est complexe, car monter une société n’est pas déjà pas simple, mais quand c’est monter une offre “éditeur” dans ce domaine, c’est carément un défi ! Heureusement les mentalités commencent à bouger, et le projet d’entreprise Shinken est par exemple lauréat du concours de création d’entreprise innovante 2012 du ministère de la recherche!

D’autres solutions existent, comme par exemple monter une offre SaaS, ou la gestion à la RedHat avec un projet communautaire (fedora) et une version toujours libre (RedHat 6 par exemple) mais supportée quelques années. Trouver la solution idéale est l’activité qui occupe le peu de temps libre que j’ai encore. J’avoue que pouvoir travailler à 100% sur Shinken m’intéresse plus que fortement (ndlr: avis aux sponsors !)

Pour finir cette interview, peux-tu nous donner, en avant première mondiale, une ou deux nouveautées que tu souhaites intégrer dans la prochaine version de Shinken ?

 La curiosité est un très bon défaut 🙂

 Outre un gros effort pour “finir” sKonf (par exemple le fait qu’il puisse relancer Shinken serait intéressant….), il va y avoir de nouvelles pages dans WebUI, sur la supervision “End user” à la Cucumber, et une autre sur de la géolocalisation. Les plus curieux peuvent déjà en voir les premières versions déjà présentes dans le code 🙂

Plus proche du coeur de l’outil, une problématique me taraude l’esprit depuis quelques temps : comment changer ses seuils de supervision pendant certaines périodes de temps, genre augmenter les valeurs critique de charge pendant les backups? Un des membres du projet (Olivier Hanesse) a proposé une solution particulièrement élégante qui me plais tellement que je pense qu’elle va arriver très rapidement.

Un petit mot pour finir ?

J’aimerais remercier tous ceux qui font vivre le projet, que ce soit avec des remontées de bugs, des patchs, de la documentation ou même un petit merci par mail, car sans eux un projet ne pourrait pas tenir aussi longtemps et se serait sûrement arrété à la phase de la preuve de concept, il y a près de 3 ans.

S’il y en a qui souhaitent prendre part à cette belle aventure, qu’ils n’hésitent pas à me contacter !

Catégories
Nagios Open-source Planet-libre Reseau Web

Superviser PHP-FPM avec Nagios ou Shinken

Vous savez que j’ai un faible pour le couple Nginx / PHP-FPM que je trouve à la fois léger, rapide et simple à administrer. Suite à un message d’un follower (@JulSa_ pour ne pas le citer), je me suis intéressé à la supervision du process PHP-FPM depuis mon serveur de supervision Shinken (mais la procédure suivante fonctionne également avec Nagios).

Petite introduction

Pour superviser PHP-FPM, mieux vaut comprendre comment il fonctionne. PHP-FPM est une implémentation du langage PHP proposant, à votre serveur Web, une interface basée sur FastCGI. Contrairement à une interface CGI classique, FastCGI permet d’optimiser le nombre, la gestion et les caractéristiques des processus PHP en attente des requêtes venant de votre serveur Web.

Ma première réponse au message de @JulSa_ a été: « tu n’as qu’à surveiller si le processus est bien lancé sur ton serveur ». Bien que cette solution soit possible elle est insuffisante. En effet, comme l’on vient de le voir, l’interface FastCGI de PHP-FPM permet d’optimiser le chargement des processus en mémoire et sur certaines configuration, un fonctionnement « normal » doit se caractériser par la présence d’au moins 5 processus PHP-FPM. On se rend compte qu’il va falloir utiliser une autre méthode si l’on veut obtenir une supervision plus fine.

La solution: check_phpfpm_status

En cherchant sur la toile on tombe rapidement sur le plugin check_phpfpm_status (page officielle sur GitHub) qui propose d’utiliser les informations remontées directement par PHP-FPM (qui est quand même le mieux placé pour dire comment il va…) à travers son URL de statut.

Configuration de votre serveur à superviser

Si vous avez une installation par défaut de PHP-FPM, il y a de forte chance que cette URL de statut ne soit pas activée. Nous allons donc dans un premier temps configurer PHP-FPM et NGinx pour qu’ils répondent à cette URL.

La configuration de PHP-FPM se fait à travers le fichier /etc/php5/fpm/pool.d/www.conf (out tout autre pool utilisé par votre serveur) en éditant la ligne suivante:

pm.status_path = /status

Pour Nginx, il faut ajouter la cible /status et la rediriger vers PHP-FPM en ajoutant la section suivante à votre configuration (par exemple /etc/nginx/sites-enabled/default-site):

# PHP-FPM Status
location /status {
                 fastcgi_pass   127.0.0.1:9000;
                 fastcgi_index  index.php;
                 include fastcgi_params;
                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Note: cette configuration part sur le principe ou les processus PHP-FPM écoute sur le port 9000 (port TCP par défaut)

On doit ensuite relancer Nginx et PHP-FPM:

sudo service php5-fpm restart
sudo service nginx restart

Puis tester que votre serveur répond bien à l’URL: http://votreserveur.com/status

Installation de check_phpfpm_status sur votre serveur de supervision

On peut maintenant passer à la configuration de votre serveur de supervision (Nagios ou Shinken).

La première étape est de récupérer le script et de l’installer:

cd /tmp
wget https://raw.github.com/regilero/check_phpfpm_status/master/check_phpfpm_status.pl
chmod a+x check_phpfpm_status.pl

Sur ma configuration (Debian 6 + Shinken), j’ai dû éditer le script pour remplacer la ligne:

use lib « /usr/local/nagios/libexec »;

par

use lib « /usr/local/shinken/libexec »;

On copie ensuite le script dans le répertoire des plugins de Nagios/Shinken:

sudo cp check_phpfpm_status.pl /usr/local/shinken/libexec/

Il est possible de tester le script en ligne de commande:

$ /usr/local/shinken/libexec/check_phpfpm_status.pl -H votreserveur.com -u /status

PHP-FPM OK - www, 0.070 sec. response time, Busy/Idle 1/2, (max: 2, reached: 0), ReqPerSec 0.3, Queue 0 (len: 128, reached: 0)|Idle=2;Busy=1;MaxProcesses=2;MaxProcessesReach=0;Queue=0;MaxQueueReach=0;QueueLen=128;ReqPerSec=0.312155

Configuration de Nagios/Shinken pour surveiller PHP-FPM

La dernière étape consiste à configurer votre serveur de supervision en y intégrant ce nouveau plugin. Il y a plein de méthode possible pour cette étape.

Fichier commands.cfg:

### PHP-FPM
define command{
        command_name    check_php_fpm
        command_line    $USER1$/check_phpfpm_status.pl -H $HOSTADDRESS$ -s $ARG1$ -u $ARG2$ -w $ARG3$ -c $ARG4$
}

On voit donc que le service va prendre 3 paramètres:

  • ARG1: le nom d’host sous lequel votre serveur Web répond (par exemple votreserveur.com)
  • ARG2: l’url de status sous laquelle le serveur va répondre (par exemple /status)
  • ARG2: les 3 valeurs de PHP-FPM (MIN_AVAILABLE_PROCESSES,PROC_MAX_REACHED,QUEUE_MAX_REACHED, séparés par des virgules) qui vont déclencher une alarme WARNING
  • ARG3: les 3 valeurs de PHP-FPM (MIN_AVAILABLE_PROCESSES,PROC_MAX_REACHED,QUEUE_MAX_REACHED, séparés par des virgules) qui vont déclencher une alarme CRITICAL

Les 3 valeurs représentent:

  • MIN_AVAILABLE_PROCESSES: Working with the number of available (Idle) and working process (Busy).
  • PROC_MAX_REACHED: the fpm-status report will show us how many times the max processes were reached sinc start, this script will record how many time this happended since last check, letting you fix thresolds for alerts
  • QUEUE_MAX_REACHED: the php-fpm report will show us how many times the max queue was reached since start, this script will record how many time this happended since last check, letting you fix thresolds for alerts

Une valeur négative (-1) permet d’ignorer le paramètre.

Par exemple, l’appel à la commande suivante:

./check_phpfpm_status.pl -H votreserveur.com -s votreserveur.com -u /status -w 1,-1,-1 -c 0,2,5

va déclencher une alarme CRITICAL si vous avez 0 processus PHP-FPM ou si vous avez atteint le nombnre maximum de processus 2 fois depuis le dernier check ou bien si vous avez atteint 5 fois la taille maximale de la queue. Une alarme de type WARNING sera émise si il n’y a qu’une seul processus.

On déclare enfin le service de check sur la machine à surveiller:

define service {
        use generic-service
        host_name votreserveur.com
        service_description PHP_FPM
        check_command check_php_fpm!votreserveur.com!/status!1,-1,-1!0,2,5    
}

Le résultat:

A vos configurations 🙂

Catégories
Blog Nagios Open-source Planet-libre Reseau Systeme Web

Supervision d’un serveur Web/WordPress avec Shinken

Les serveurs hébergeant des services « Web » deviennent de plus en plus critique: un problème technique sur un site marchand fait baisser le chiffre d’affaire, un autre sur un site d’information peut faire passer le lecteur à la concurrence un dernier sur un blog personnel/professionnel peut impacter directement la crédibilité de l’auteur.

Il est donc important de surveiller ces serveurs comme le lait sur le feu. Les outils de supervision permettent de s’acquitter de cette tache de manière plus ou moins automatique en recevant les alertes par mail, Twitter, SMS…

Nous allons dans ce billet configurer un serveur Shinken (étant un fork de Nagios, le billet est également valable pour la configuration d’un serveur sous Nagios) pour surveiller un blog WordPress tournant sur le pile HTTP Varnish+Nginx.

Avant de commencer

Nous partons sur l’hypothèse ou vous disposer d’un serveur sous Debian avec la pile Varnish+Nginx+Wordpress et un serveur Shinken correctement installé et fonctionnel. Idéalement, la brique Shinken sera installé sur un autre serveur lui même hébergé chez un autre hébergeur. Dans ce cas il faudra mettre en place la couche NRPE entre les deux pour que Shinken puisse correctement collecter les informations sur le serveur Web.

Pour simplifier la configuration et que vous puissiez facilement la tester sur vos blogs/sites personnels, j’ai choisi de réunir les deux briques (Web + Supervision) sur une même machine.

Quoi surveiller ?

C’est la question que j’ai posé sur Twitter il y a quelques jours et j’ai reçu un grand nombre de réponses allant toutes dans le même sens. Faute de temps, je n’ai pas pu exploiter toutes les pistes mais je garde cela sous le coude et je ferai sûrement évoluer ce billet dans le futur.

J’ai donc découpé la supervision en deux groupes de services: système / web.

Pour les services système:

  • La charge du serveur: cela permet de s’assurer qu’un processus n’occupe pas toute la CPU et que mon serveur Web (pas très consommateur grâce à l’utilisation de Varnish) aura les ressources pour répondre correctement.
  • La mémoire disponible: c’est un des point critique en terme de performance, comme j’utilise des caches en RAM il faut s’assurer que le système dispose toujours d’une marge de manoeuvre au niveau de la mémoire vive disponible.
  • La mémoire Swap disponible: quand le système n’a plus de RAM disponible, il utilise la mémoire Swap (disque). Je contrôle donc que cet espace n’est jamais trop occupé.
  • RAID1: Mon serveur Dedibox dispose de deux disques durs fonctionnant en RAID1. Je contrôle que les deux disques sont fonctionnels avec un plugin maison.
  • Espace libre sur la partition système: j’ai installé mon serveur Web sur un distribution Debian Squeeze avec le partitionnement par défaut qui affecte une seule partition à /. Je surveille donc que l’espace disque disponible ne devienne pas trop bas.
  • Espace libre sur la partition de backup: mon serveur est hébergé chez Online.net qui propose un espace de stockage accessible en FTP ou j’archive avec RSnapShot tous les répertoire critiques de mon serveur. J’ai donc monté cet espace FTP sur un répertoire de mon disque et j’en surveille l’espace disponible.
  • Nombres de processus actifs: Un trop grand nombre de processus tournant sur le serveur peut mettre en évidence un bug sur un des processus. Je contrôle que ce nombre ne soit pas trop important.
  • Nombres d’utilisateurs connectés simultanément: Comme je suis le seul admin de ce serveur, j’ai mis une alerte qui me prévient quand deux utilisateurs sont connectés simultanément.

Pour les services Web:

  • On commence par surveiller que les processus critiques sont lancés: Varnish (2 processus varnishd), NGinx (5 nginx) et SSH (1 sshd). On passage on vérifie que le nombre de processus est conforme à notre configuration.
  • On surveille les ports en écoutes (local): TCP/80 (Varnish), TCP/8080 (NGinx), TCP/22 (SSH)
  • Pour le site Web à surveiller (par exemple www.mondomaine.com), on contrôle que les URLS suivantes sont bien accessibles:
  • http://www.mondomaine.com (home page)
  • http://www.mondomaine.com/sitemap.xml.gz (le sitemap utilise pour votre référencement)
  • http://www.mondomaine.com/googleXXXXXXXXX.html (le fichier fourni par Google pour faire le check vers ces services)
  • Attaques DOS/DDOS: un plugin me permet de détecter si mon site est victime d’une attaque DOS (facile à bloquer) ou DDOS (bon courage… hein Korben :))

Cette liste est bien sûr très restrictive, j’attend vos idées dans les commentaires !

Les confs, les confs !

L’idée est de fournir les configurations « brutes de décoffrages ». Si vous avez des problèmes pour appliquer cette configuration sur votre serveur, je vous conseille de consulter les billet de la page sur la supervision de ce blog.

La configuration des services système:

[cce]

# Define a service to check the disk space of the root partition

# on the local machine. Warning if < 20% free, critical if

# < 10% free space on partition.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Root Partition

check_command check_local_disk!10%!5%!/

}

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Backup Partition

check_command check_local_disk!10%!5%!/mnt/backup

}

 

# Define a service to check the number of currently logged in

# users on the local machine.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Current Users

check_command check_local_users!2!3

}

 

# Define a service to check the number of currently running procs

# on the local machine. Warning if > 250 processes, critical if

# > 400 processes.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Total Processes

check_command check_local_procs!250!400!RSZDT

}

 

# Check memoire avec script check_memory

# http://blog.nicolargo.com/2008/07/surveiller-la-memoire-de-vos-serveurs-avec-nagios.html

# -w 5% -c 1%

 

define service{

use local-service

host_name localhost

service_description Memory

check_command check_mem!10%!5%

}

 

# Define a service to check the load on the local machine.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Current Load

check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0

}

 

# Define a service to check the swap usage the local machine.

# Critical if less than 10% of swap is free, warning if less than 20% is free

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Swap Usage

check_command check_local_swap!20!10

}

 

# Check RAID (hardware)

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description RAID1

check_command check_raid

}

[/cce]

puis les services Web:

[cce]

# Define a service to check SSH on the local machine.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description SSH

check_command check_ssh

#notifications_enabled 0

}

 

# Varnish process

# /usr/lib/nagios/plugins/check_procs -w 2:2 -c 1:1024 -C varnishd

 

define service{

use local-service

host_name localhost

service_description Varnish process

check_command check_local_process!2:2!1:1024!varnishd

}

 

# Check process

# /usr/lib/nagios/plugins/check_procs -w 5:5 -c 1:1024 -C nginx

 

define service{

use local-service

host_name localhost

service_description Nginx process

check_command check_local_process!5:5!1:1024!nginx

}

 

# Define a service to check Varnish

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Varnish access

check_command check_url!http://localhost/

}

 

# Define a service to check HTTP on the local machine.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description Nginx access

check_command check_url!http://localhost:8080/

}

 

# Define a service to check HTTP on the local machine.

 

define service{

use local-service ; Name of service template to use

host_name localhost

service_description URL Blog check

check_command check_url!http://www.mondomaine.com/

}

 

# Define a service to check URL

# http://www.mondomaine.com/googleXXXXXXXX.html

 

define service{

use local-service

host_name localhost

service_description URL Google check file

check_command check_url!http://www.mondomaine.com/googleXXXXXXXXXX.html

service_dependencies localhost,HTTP Blog

}

 

# Define a service to check URL

# http://blog.nicolargo.com/sitemap.xml.gz

 

define service{

use local-service

host_name localhost

service_description URL Sitemap

check_command check_url!http://www.mondomaine.com/sitemap.xml.gz

service_dependencies localhost,HTTP Blog

}

 

# Define a DDOS detection service

# http://blog.nicolargo.com/?p=4100

# Warning: >50 SYN_RECV

# Critical: >70 SYN_RECV

 

define service{

use local-service

host_name localhost

service_description DDOS detect

check_command check_ddos!50!70

}

[/cce]

Et voilà ce que cela donne dans mon Shinken/Thruk:

Catégories
Blog Nagios Open-source Planet-libre Reseau Systeme

Interview de Jean Gabes, le créateur de Shinken

Salut Jean et merci de nous consacrer un peu de ton temps pour répondre à mes questions et à celles des lecteurs du blog.

On commence tout de suite !

Peux tu présenter Shinken en quelques lignes ?

Shinken est un outil de supervision, une implémentation de Nagios en Python ‘from scratch’ qui a pour objectifs principaux de simplifier la vie des administrateurs de grands parcs et de coller au mieux à l’évolution de l’IT des dix dernières années, et si possible préparer les dix prochaines…

Pourquoi t’es tu lancé dans une t’elle aventure ? Quelles sont tes sources de motivation ?

En fait Shinken est un incident industriel !

Il commence sa vie sans nom et peu de temps après la fin de l’écriture de mon livre “Nagios 3” (editions Eyrolles). Pour ce dernier, j’avais passé une bonne part de mes recherches sur les chapitres de performances et d’environnements distribués. Ceci m’avait permis de voir les limites de Nagios dans le domaine. Pour simplifier, Nagios était parfaitement adapté à un parc de taille moyenne (200 serveurs) mais commençait à avoir du mal au dessus de par son architecture « mono daemon » et quelques défauts d’implémentations. Il ne faut pas lui lancer la pierre non plus, sa conception remonte à plus de 10 ans pour justement régler la supervision d’un tel parc, et n’a gère évolué depuis.

Je me suis donc lancé dans un « proof of concept » qui tentait de corriger dans un premier temps les problèmes de performances. Ceux-ci étaient plutôt simple à analyser au final :

  • Nagios fork() des fils qui vont lancer des sondes. Puis les fils meurent. C’est dommage de les faire mourir si c’est pour en relancer 10ms après. Un système de pool de processus à la Apache devrait faire l’affaire ici (facile à dire, mais une horreur à implémenter).
  • Pendant une notification, le lancement d’un script de réaction ou l’envoi d’une donnée en base, Nagios coupe la supervision. Mis bout à bout, ça positionne un plafond très bas sur le nombre de sondes que l’on peux lancer.

Je suis un grand fan de Python, principalement pour sa syntaxe claire et son état d’esprit (lire le “zen of Python” pour plus d’info là dessus, ceci résume très bien le “Python”). Il y avait justement une librairie pour avoir des pool de processus, je me suis dit qu’un petit script qui vérifie que le concept de pool n’était pas aberrant, et que ceci me prendrait bien moins de temps que la même chose dans le code de Nagios qui n’est pas d’une toute première fraîcheur en terme de lisibilité, même pour du C, sur cette partie.

A l’époque, ce proof of concept n’avait pas pour objectif d’être publié. Mais je me suis rapidement retrouvé confronté à une surprise que je n’attendais pas : j’obtenais des performances excellentes, bien meilleures que ce que produisait Nagios. Piqué dans ma curiosité, j’ai donc voulu valider cela en mettant un peu les deux à égalité : en mettant les algorithmes d’ordonnancement et par implication la lecture de la configuration. Deux points qui allaient se révéler être les deux choses les plus complexes à coder dans ce projet.

Je me suis rendu compte de bug dans Nagios dans l’ordonnancement à ce moment là d’ailleurs (et qui est toujours présent d’ailleurs dans Nagios et Icinga) ce qui ne m’étonne gère quand je vois la taille réduite du code de Nagios sur cette partie, et ce que ceci m’a demandé en Python (5 fois plus de lignes de codes Python environs, et 1 mois entiers de prise de tête sur des algorithmes de calculs de date…). Au final, là encore, les performances étaient au rendez-vous.

Je décide donc de prévenir les auteurs de Nagios. Je n’ai pas eu de réponse de l’auteur principal, mais une un peu évasive et peu convaincue d’un des coauteurs. Je décide donc de continuer et tenter de régler les soucis d’architectures distribuées. J’ai donc commencé à concevoir ce qu’était pour moi l’architecture idéale. J’ai donc “découpé” mon daemon en plusieurs morceaux au fil du temps, l’architecture n’étant pas arrivé en ce qu’elle est du jour au lendemain 🙂

L’un de ces découpage permet LA fonctionnalité de Shinken à l’époque : le découpage intelligent de configuration pour la disperser suivant les “ressources” de supervision. Ceci a aussi donné le nom au projet, un Shinken étant un katana utilisé dans la guerre car il est le plus coupant (puis le nom sonnait bien 🙂 ). Je propose d’ailleurs au passage cet algorithme de découpage à d’autres projets, mais il ne les intéresse pas.

Je publie de code pour demander des avis et j’ai ma première contribution d’un autre auteur de livre Nagios, un allemand nommé Gerhard Lausser , qui deviens co-leader naturel du projet de part sa forte implication. Là arrive un dilemme : notre outil fonctionne très bien, gère 90% du boulot de Nagios, est performant et codé de manière très modulaire. Mais backporter le code en C prendrait un temps monstrueux, surtout quand on regarde le peux de temps de développement alloué au core Nagios par ses auteurs déjà à l’époque. Je demande ainsi s’il serait envisageable d’avoir une branche “Nagios 4”” qui permettrait à notre code de mûrir et aux auteurs de prendre la main et faire en sorte d’une migration entre l’ancienne implémentation et la nouvelle se fasse e la manière la plus douce possible, même si elle doit prendre 2 ou 3 ans. Pas de réponses, donc je décide de monter d’un niveau et je fais la même proposition sur la mailing list Nagios-devel. Là, toujours pas de réponse de la part de l’auteur de Nagios, mais un échange avec un des co-auteur (le même que la première fois, qui est une personne bien plus ouverte que ses collègues au final) qui tourne malheureusement au troll sur les langages car il ne voyait pas à l’époque d’un bon oeil le Python, comme bon nombres d’autres codeurs C.

N’arrivant pas à obtenir une réponse de l’auteur principal (que j’attends toujours, enfin une vraie, pas un FUD sur la licence utilisée…), et n’arrivant pas à convaincre du bien fondé de cette branche et de ce code, je décide de monter le projet Shinken comme indépendant de son grand frère. Le drôle de fork est fait, un peu à contre coeur à l’époque.

Mes sources de motivations étaient au tout début l’amusement et les défis techniques (je suis particulièrement fier du calcul de la date de checks pour tous les cas de timeperiod par exemple 🙂 ). Puis quand c’est devenu plus sérieux et que ça pouvait régler mes soucis au travail (je suis admin d’un parc de 300 serveurs dispersés sur 50 filiales de par le monde environs) je me suis dit que ça pouvait intéresser d’autres personnes, ce qui fût réellement le cas :).

Désormais je crois plus que jamais à ce projet, et j’aimerai pourquoi pas qu’il prenne un part plus importante dans mon activité professionnelle, comme pour des activités de consulting ou de formations par exemple à moyen terme (étant un heureux papa de deux petits bouts je ne peux me permettre de me lancer à cours terme dans une telle activité).

Développes tu Shinken seul ? As tu des contributeurs réguliers ?

Je suis le responsable d’une majorité de lignes de codes, et donc de bugs en effet. Mais je ne suis pas seul heureusement. Côté codeurs, Gerhard qui fût l’un des premiers contributeurs externes est désormais co-leader du projet et code régulièrement. Il est même maître sur certains modules importants comme celui qui permet à Thruk ou PNP (métrologique) d’obtenir leurs informations. Nous avons également eu le soutient d’un autre codeur allemand qui papillonne d’un projet à un autre, mais qui nous a bien aidé à nettoyer le code à une époque, ainsi qu’un autre codeur qui est un spécialiste du refactoring/nettoyage et de la recherche de bugs (salut Greg) 🙂 Nous avons également l’aide ces derniers temps d’un codeur d’UI, nommé Andreas, qui nous aide grandement sur ce nouveau domaine auquel nous ne sommes pas trop habitués 🙂

Mais les codeurs ne font pas tout, loin de là. Quelques personnes nous aide sur les forums pour répondre aux utilisateurs, écrire/corriger la doc (coucou Seb, Denis et Remi 🙂 ), tester de nouvelles fonctionnalités, dessiner le logo (salut Romu), faire des packages pour les distributions principales ou écrire des scripts d’installations ;). Ceci nous aide encore plus qu’un patch car se sont des tâches très ingrates du point de vue “codeur”, mais qui est pourtant l’un des aspect les plus cruciaux pour la réussite d’un projet! Je tiens donc à les remercier du font du coeur, car un projet c’est avant tout une communauté avant d’être des lignes de codes. Ils sont la vraie force de ce projet qui tente d’être le plus ouvert possible.

Quels sont pour toi les trois principaux points forts de Shinken par rapport à Nagios Core ?

Pas simple de répondre à cette question… On pourrait s’attendre à ce que je dise son architecture distribué, mais en fait ceci n’arrive qu’en 4ième position (même si pour certains confrontés à des soucis de performances il va naturellement remonté en première ligne dans leur cas).

Dans l’ordre :

  1. mise en avant du trio : corrélation + règles business + notion d’importance “business” qui simplifie grandement la vie des administrateurs
  2. le fait qu’il tourne sous Windows (et Android, mais j’ai encore du mal à trouver un vrai usage pour ce dernier 🙂 )
  3. ouverture du projet (j’ouvre sans trop poser de questions le temps que la personne veux aider) 

Le premier permet aux administrateurs d’un grand parc de se concentrer sur ce qui est “important”. Hors à notre époque de ressources humaines limitées, c’est plus que nécessaire.

Le second est souvent sous estimé, mais il est pourtant crucial dans le futur succès du projet. Nous avons vu que Nagios était orienté pour les infra de taille moyenne. Or Shinken lui couvre tout le spectre : moyen; haut avec le distribué mais également tout petit parc qui n’ont souvent pas d’admin Linux sous la main et seulement un serveur Windows à disposition.

Le dernier est tout simplement naturel pour moi, je ne saurai fonctionner autrement, mais le succès d’un projet passe par son ouverture. Il n’y a qu’a voir une preuve en regardant le déclin de Nagios : c’est plus un problème humain d’un projet qui n’avance plus dans son ensemble que technique qui est en est la cause.

Et les trois points faibles ?

  1. Le relatif manque de grosses productions tournant avec Shinken. Ce n’est pas étonnant vu que jusqu’à maintenant il était vu comme jeune, et mis à part l’aspect distribué n’apportait pas forcément beaucoup à Nagios (ce qui est loin d’être le cas 🙂 ). Son image ne justifiait pas encore une migration d’un des élément central de son IT du point de vue infra. Le manque de support d’entreprise fait parti de ce point. Il fragilise encore son image (“fait dans un garage”, alors que non, c’est “fait dans un bureau” 🙂 ) et limite fortement les conférences que l’on peux donner pour évangéliser ce projet. Heureusement, c’est un point qui s’améliore avec le temps 🙂
  2. Pas assez de tutoriaux “près à consommer” sur ce qu’apporte Shinken par rapport à Nagios.
  3. Il n’a pas sa propre UI, ce qui impacte fortement sa visibilité quoi qu’on en pense.

Quels sont les raisons que tu peux mettre en avant pour convaincre une DSI de changer de solution de supervision et de se tourner vers Shinken ? (question de Guillaume Reynaud du blog Quick Tutoriel)

Un outil de supervision est là pour aider les admis à garder les services pour les utilisateurs en état de fonctionnement. Dis comme ça c’est simple, mais en fait si c’était simple à atteindre il y a 10ans (quelques dizaines de serveurs tout au plus, des services infra qui avait une vue “pure IT” – non business – et des services rarement en cluster) avec des outils comme Nagios n’est plus possible efficacement.

Un service qui tombe est désormais directement converti en monnaie sonnante et trébuchante par le directeur financier. Or nous avons désormais une vue plus “business” qu’IT, des parcs de plus en plus large, de nombreuses couches d’abstractions (qui a dit virtualisation?), multiplication des serveurs et des services et des contracts de services sur la tête (arriver à ce moment là de la conversation, le DSI devrait être plus réceptif déjà, car ce sont des soucis qu’il a tous les jours).

Shinken est justement pensé pour cela : monté en charge sans soucis, notion dans le core de la criticité d’une application, de la notion de cluster, de la corrélation et ainsi arriver à une chose si simple à expliquer, mais si dure à obtenir : faire en sorte que les admins puissent se concentrer en priorité sur les problèmes sources qui impactent des services importants pour le business. Nagios se “vends” lui même comme un outil de supervision “IT”. Ceci n’est plus suffisant. Faut dépasser la vision pure IT, et passer au niveau “business”, car c’est ça que l’on attend les services informatiques désormais. Leur solution de supervision doit suivre logiquement. (ici, le DSI doit être plus réceptif, donc l’achever avec les gains apportés par la métrologie, sortir une carte ou deux de Nagvis, et c’est gagné).

En réaction à l’orientation très fermée du développement de Nagios Core, on voit fleurir de nombreux forks. Tu arrives donc dans un marché très concurrentiel…

Oh que oui ! D’un certain côté tant mieux, ceci laisse le choix à l’utilisateur, mais le risque réside dans la fragmentation de la communauté en plusieures bien moins fortes. Ceci est une part du dilemme qui m’a animé avant de publier Shinken en tant que projet à part entière. Mais j’ai pensé que même si le projet n’arrivait pas à s’imposer, au moins il aurait été un « proof of concept » géant sur où il fallait aller dans la supervision à mes yeux.

Au final, il semble bien prendre et j’en suis très heureux. On voit encore fleurir les forks, come celui dernièrement de Centreon, mais je pense que l’écosystème va jouer son rôle, et va sélectionner les meilleurs projets. Qui sait, peux être que Nagios sortira grand vainqueur (même si j’en doute fortement)? Qu’Icinga amènera de vraies avancées, que quelqu’un arrivera à comprendre l’architecture de Merlin ou que le couple Centreon-engine/Centreon-Broker raviera cette première place?

Un risque fort réside dans le fait d’avoir des coeurs “presques compatibles”, un peu comme un HTML à la mode IE6, le tout poussé par des besoins business des différents intervenants qui n’auraient plus d’intérêt à coopérer. Il ne faut pas oublier que des solution comme Zabbix montent aussi au créneau et réclame cette première place d’outil de supervision du monde Open Source. Bien malin sera celui qui saura ce que va donner cet Opéra joué par des musiciens qui on leur propre partition à jouer. Espérons seulement qu’un chef d’orchestre se révèle et que la musique reprenne une certaine harmonie. Ce vote se faisant par les utilisateurs, il sera sage et justifié. C’est après tout l’un des principal avantage de notre écosystème “Open Source” tant concurrentiel et sans merci !

Pour un utilisateur connaissant bien Nagios, quel est l’investissement en temps pour switcher vers  Shinken ?

Pas énorme. Disons une matinée pour l’installation propre et comprendre le fonctionnement global. Puis une après-midi pour mettre en place son premier environnement distribué/hautement disponible complet en suivant le tutorial. Beaucoup d’efforts on étés fait pour que la migration se passe de la manière la plus douce possible, comme la génération automatique de certains modules par exemple. En ce qui concerne les fonctionnalités avancées comme les règles business et les notion d’impact business, on rajoutera une matinée supplémentaire, pas tant dans l’écriture, mais surtout dans ce que ceci implique en matière de supervision 🙂

Une petite remarque par contre : pour un utilisateur ne connaissant pas Nagios, il y a toujours un certain temps d’adaptation qui ne diffère pas trop de Nagios. Comme par exemple comprendre les concepts de supervision (que beaucoup passent bien trop rapidement à mon goût) et les différentes sondes. Vous pouvez rajouter tous les outils de découverte que vous voulez (comme celui dans Shinken 🙂 ), ces phases seront toujours importantes pour pleinement utiliser l’outil à sa juste valeur. Un outil de supervision mal maîtrise fait plus de mal que de bien. Cette phase est donc cruciale et mérite un certain investissement qui sera rentabilisé par centuples plus tard 🙂

Quels sont les principaux avantages de Shinken par rapport à une solution comme Centreon ? (question de Guillaume Reynaud du blog Quick Tutoriel)

Exactement les mêmes que par rapport à Nagios, Centreon apportant une UI, certe pratique, mais qui ne révolutionne pas la conception de la supervision. Shinken avec son système avancé de corrélation, règles business et notion d’importance si (enfin il essaie au moins). Ce sont des choses qui aident les admins et leurs chefs dans leur vie de tous les jours, bien plus qu’un nouveau style CSS. Ceci sera vu un peu plus loin d’ailleurs.

Il faut voir par contre que Centreon est une solution complète, alors que Shinken est un outil, une brique de base. Centreon offre par exemple une gestion très pratique des traps SNMP ou son propre service de reporting.

Heureusement, les deux ne sont pas antinomiques, et il est possible, mais non trivial, de les faire dialoguer. C’est d’ailleurs ce que j’ai encore en production. Ceci grèvera cependant les possibilités de Shinken, comme par exemple la définition des règles business ou encore les notions d’importance business (des patchs “hacks” sont en cours pour Centreon 2.4). Mais qui sait, si la demande envers le projet Centreon se fait pressante, on peux espérer un support plus important de Shinken dans ce dernier, même si il faut bien le reconnaître que l’arrivée récente de centreon-engine ne va pas dans ce sens.

De part son architecture, Shinken offre nativement une supervision distribuée hautement disponible (contrairement à d’autres outils de supervision open-source),penses tu que cette fonctionnalité fait de shinken un outil a n’utiliser que sur des grandes architectures de système d’information ? (question d’Anthony Paradis modo du forum de Monitoring-FR)

Je ne pense pas, car justement je ne mettrait pas l’architecture dans la top 3 de ses avantages.

Une petit société avec 10 serveurs sous Windows sera bien contente d’avoir son système de supervision sur cette même plate forme, et mettre facilement un backup en place sur un second.

Une de taille moyenne sera contente d’enlever un serveur physique Nagios et mettre une machine virtuelle Shinken à la place grâce au gain de performances. Ils seront content également d’avoir un outil qui fait la liaison de dépendance automatique des VM et des hôtes pour eux, avec le support des migrations de machines virtuelles d’un hôte à un autre sans avoir à toucher quoi que ce soit.

Passons à l’actualité, la version (0.8 aka Guilty Gecko) sort dans quelques semaines. Mise à part les classiques corrections de bugs, quelles sont les nouvelles fonctions ?

Comme vu dans la dernière release, les aspects d’architectures sont finis, donc pas de grosse annonce de ce côté là. Cette version sera d’ailleurs la 0.8 et non la 0.7 car Shinken est déjà en production à plusieurs endroit sans soucis, donc il est temps d’accélérer un peu le mouvement vers la 1.0 qui devrait être pour la fin de l’année si tout va bien, et qui sera un signal fort sur la stabilité du projet.

Cette 0.8 aura donc principalement :

  • un outil CLI pour interroger/commande directement le daemon principal
  • des améliorations des “business rules” qui gèrent mieux maintenant les états dégradés
  • une reprise en main du module GLPI par les auteurs de ce derniers, donc une bien meilleure intégration entre les deux outils
  • un module “générique” de chargement depuis une base mysql (pour gérer les X outils de CMDB par exemple)
  • une possibilité de définir des modulation de la criticité business d’un élément suivant la période. Par exemple un serveur de paye est critique 3 ou 4 jours par mois, mais est “normal” le reste du temps.
  • un module thrift
  • mais la grosse partie qui nous a occupé une grande partie de l’été et qui va nous occuper encore un moment : l’arrivée d’une interface utilisateur dédiée !

A cours terme, quelles orientations penses tu donner à Shinken ?

Je pense qu’il faut dépasser la vision d’outil et se diriger vers la solution de supervision.

Combien d’administrateurs ont encore le temps de devenir des experts dans la supervision et monter leur propre solution à base de Shinken ou Nagios à la main ? Combien d’administrateurs sous Windows attendent un outil de supervision simple à mettre en place et sans prix exorbitant de licences ?

Les administrateurs d’aujourd’hui ne sont plus des barbus qui recompilent tous leurs outils, même si ceci m’attriste un peu il faut bien l’avouer (j’ai une capillarité limitée mais je suis un barbu dans l’âme 🙂 ). Mais c’est un fait, désormais nous mettons en place des solutions, non plus des outils. Nous devons nous concentrer sur les services rendus aux utilisateurs et arrêter de ne penser qu’à l’IT ‘infra’. On ne fait plus une infra avec des briques qui sont de simples outils, mais avec des briques qui sont elles mêmes des solutions.

Ce n’est pas pour rien que Zabbix a un succès grandissant : c’est rapide à mettre en place et l’utilisateur n’est pas perdu. Je ne suis pas un fan du fonctionnement “supervision” de Zabbix que je ne trouve pas assez flexible pour les modèles de corrélations (et donc source de tempêtes d’alertes, qui est l’ennemi juré en supervision), mais il a une grande qualité que l’on ne peux pas lui renier : on le met en place rapidement et “ça marche”.

Ceci n’empêchera pas Shinken de pouvoir être utilisé comme une simple brique d’une autre solution plus grosse de type Centreon, il est hors de question de casser ce côté modulaire et le core actuel continuera d’être utilisable seul bien évidement.

On reproche souvent à Nagios le manque d’ergonomie de son interface utilisateur (UI) basée sur des standards/technologies Web dépassés. Actuellement, Shinken utilise des UI externes (comme Thruk) qui copient plus ou moins cette dernière. A ton avis quelle est l’interface graphique permettant d’exploiter au mieux Shinken? (question de David Paugam du Groupe Asten)

Il est vrai que les technologies de l’UI de Nagios sont des hérésies à l’heure actuelle (CGI en C qui parse un gros fichier plat, tout ce qu’il ne faut pas en gros). Mais ce qui m’embête bien plus c’est son ergonomie et surtout la vision de la supervision qu’elle propose et le peux de service qu’elle rends à l’utilisateur au final. On mettrait un convertisseur XSL vers HTML en partant du fichier de status que l’on obtiendrait quelque chose de similaire.

Et ceci est le même constat pour les autres interfaces de visualisation (Thruk, Ninja, Centreon, Icinga 1.0 ou 2.0 ou alors MK/Multisite). Si on prends un peu de recul, que l’on enlève les jolis styles CSS et les bouts de javascript de certaines qu’est ce qu’elles proposent ?

Et bien les mêmes vues ou presque. Elles nous proposent toutes des vues ‘IT mode infra’ à la sauce CGI. On a donc le droit à une liste longue comme le bras d’éléments orange ou rouge sans aucun ordre (il est inutile de montrer du vert à un admin, le vert c’est réservé aux chefs 🙂 ). Or à l’heure actuelle on a pour un même service rendu aux utilisateurs au moins 3 environnements : DEV, QUALIF et PROD. Or lequel est important ? PROD. Le reste c’est à traiter après les autres.

De même, un service comme un ERP est plus important qu’un outil pour emprunter des DVD au CE. Il est donc crucial que l’administrateur se focalise en priorité sur ce qui est important pour le business, ca c’est ça qui le paye à la fin du mois !

Autre chose, nous avons maintenant des services qui se composent de clusters qui reposent sur des infras à X niveaux (au minimum Web frontaux, BDD, répartiteurs Web, serveur disque, serveurs ESX de virtualisation, baie de disque et toute la partie réseaux ethernet ou SAN bien entendu). Si un élément “pur infra” comme un switch tombe, tout le reste part avec lui, sur tous les services, sur tous les environnements. Vous allez donc avoir une part importante de votre infra en rouge vive sur votre console. Or une seule info importe pour l’administrateur : quel est l’élément source qui m’a causé tout ça ? Le reste est bon à mettre à la poubelle, c’est l’unique info qui importe à l’admin. Son chef lui voudra les mêmes infos mais dans un sens de recherche opposé : quels services sont tombés et pourquoi ?

Or, les outils ci-dessus n’aident en rien à cela. Il n’y a pas de priorisation des éléments, pas de visualisation de la corrélation faite au seins de l’outil, sous forme de graph ou autre. Et ceci en mettant de côté les vues “opposées” des admins et des responsables d’infra qui ne peuvent pas avoir les mêmes vues, car leurs manière de voir les choses est diamétralement opposée !

La seule UI qui a innovée ces dix dernières années dans ce sens c’est NagVis ! J’ai intégré quelques vues en ce sens dans Thruk en début d’année, mais ça n’a pas trop pris et on reste toujours avec la même philosophie qu’il y a 10 ans, ce que ne cache pas l’auteur de Thruk. Il conviendra parfaitement aux administrateurs qui n’ont pas/(pas besoin d’) un point de vue “business”. Pour les petits sites, MK/Multisite est très “joli”, mais est très lié à l’agent check_mk, et peux être considéré comme une solution à part entière, mais sans la partie modulaire par contre.

Reste le problème de la configuration. Là Centreon se pose encore en grand maître des lieux, mais n’est pas adapté à Shinken et va fortement limité son intérêt. Les autres solutions graphiques de configuration souffrent du même problème actuellement, il n’y a donc pas de solution miracle malheureusement à l’heure actuelle…

Souhaites tu intégrer une UI propre à Shinken ?

La réponse est oui !

En fait, j’ai tenté ce que j’ai pu pour l’empêcher, mais le fait est là : la vision problème source/ impact / criticité du coeur de Shinken n’est pas encore prise en compte par les interfaces. Quand le coeur de Shinken n’était pas encore fini à mon goût, je ne voulais pas lancer un projet qui aurait canibalisé nos forces.

J’ai donc tenté de motiver le projet Thruk qui a bien accepté mes patchs malgré mon Perl catastrophique (en même temps ça reste du Perl, ça se trouve il est très beau pour du Perl…), mais l’interface reste à dominance “old school” car elle plait ainsi à beaucoup d’anciens utilisateurs de l’ancienne CGI.

L’auteur de MK/Multisite n’est pas des plus ouverts à mes idées et mes tentatives de présentations de ma vision de la supervision auprès de Centreon n’a pas eu beaucoup d’effet et n’a pas dû convaincre car désormais nous avons un fork de Nagios en plus 🙂

Je me trompe peux être, mais je suis convaincu que mettre en avant la corrélation, la priorisation et tout ce qui va avec la vision “business” facilitera grandement le travail des admins et des responsables d’infrastructure.

Mon objectif est d’arriver à une UI qui permettra de dire simplement à :

  • un admin : cet élément d’infra (genre switch, car c’est bien connu c’est toujours le réseaux le responsable…) est un problème source qui engendre un fort impact négatif sur des services importants. Règle le. (donc il donne la TODO list aux admins)
  • un responsable d’infra : voici la liste des services rendus aux utilisateurs, celui là à un soucis, et de telle importance et est impacté par le swtich X, mais est en cours de résolution par Y. (donc il donne sur qui taper aux chefs… na taper pas sur l’UI, de toute manière ils l’auraient fait!)

Avec de l’aide d’un designer web, nous nous sommes lancés dans des mockups d’interface qui ne ressemblent pas vraiment à ce qui existe actuellement, tant sur le fond (UI sans BDD ni requêtes, assez original non?) que surtout sur la forme qui se veut très “user-friendly”, avec très peu de vues, mais très étudiées et utiles (80% des utilisateurs restent toute leur vie dans 20% des pages, gagnons du temps, ne faisons que 20% des pages).

Un bon indicateur de succès sera si les utilisateurs considèrent cette interface comme le “gnome” des interfaces de visualisation de supervision, reléguant les autres aux rang de WindowMaker. Elle ne remplacera pas un Thruk ou un Centreon chez les plus barbus d’entre nous, les vrais qui tournent en gentoo, changent les options de compilation de GCC pour gagner 0.5% de perf et ne voient pas l’intérêt des tablettes graphiques dans le monde de demain… Mais j’arriverai à vivre avec ça 🙂

Cette UI intégrera t’elle un outil de génération de rapports dont les DSI sont très ( voir trop) friand ?

Pas dans un premier temps et ce pour trois raison :

  • on doit déjà faire le reste de l’UI 🙂 Le reporting c’est la dernière étape, même si c’est celle qui fait “vendre” une solution à un DSI. Mais vu que l’on ne vends rien…
  • j’espère bien que le projet Nareto va renaître de ses cendres pour le faire à notre place 🙂
  • il faut définir le modèle de données pour cela (dit “en cube”). Étant également DBA à mes heures perdues, je n’arrête pas de pester auprès des devs qui font des requêtes de reporting sur une base qui n’est pas conçue pour ça, avec des schémas purement transactionnels non cubiques et qui me plombent mes (pauvres) serveurs. Hors de question de coder un outil de reporting qui va taper dans un schéma de supervision “temps réel” par exemple, ça serait une hérésie, même si c’est plus rapide à coder dans un premier temps évidement.

Et des fonctions d’édition en ligne des fichiers de configurations ?  (question de David Paugam du Groupe Asten)

Cela sera l’étape intermédiaire avant le reporting en effet, et devrait être consommatrice de temps. Mais je doute dans ce cas de l’édition “in line” en fichiers textes. Outils de configuration + fichiers plats ne font pas bon ménage à mon goût. Une “base” de configuration serait plus adaptée, mais je n’ai pas poussée la réflexion bien plus loin.

Sera t’elle compatible pour une utilisation mobile depuis les smartphones ou comptes tu faire développer des applications dédiées (iPhone et Android) ? (question de Nicolas Ledez du blog Le bazar de Nicolas)

Alors là c’est simple : j’ai une vision bien plus gentille avec les designers d’UI depuis que j’ai une tablette graphique et que j’ai regardé mon fils de 2ans l’essayer. Il l’utilise sans que je lui explique. Je me suis donc penché un peu plus sur ce domaine qui désormais me fascine, car l’ergonomie est quelque chose que j’avais en tête en pensant à celle de Shinken mais qui m’a permis d’avoir des exemples concrets de ce qu’il faut faire, et ne pas faire.

L’interface sera ainsi bien plus proche d’une interface “smartphone” que d’une UI classique d’un outil d’administration, ce qui explique pourquoi elle ne vas pas plaire à tout le monde également. Donc pas de soucis, les tablettes et smarphones sont prévus 🙂

D’un point de vue technique, je ne vois pas l’intérêt de l’application native quand on a toutes les possibilités d’HTML5 sous la main et que l’on n’a pas besoin de prendre en photo son utilisateur.

Il est donc à prévoir d’ailleurs une non-compatiblilité avec IE6 ou 7, et là clairement ils ne sont pas dans le cahier des charges. Je ne serai pas contre un patch (non intrusif…) qui permettrait de les supporter, mais ces navigateurs étant tellement mal faits et limitatifs dans l’interface qu’il serait non efficace de tenter de les gérer.

Quel logiciel de métrologie conseilles tu en parallèle de Shinken ?  (question de David Paugam du Groupe Asten)

PNP4 Nagios. C’est un très bon outil qui a d’ailleurs son propre module depuis Shinken. Celui de Centreon est pas trop mal non plus, mais est plus consommateur de perfs.

Je ne suis pas trop pour un Cacti en parallèle d’un outil de supervision, car on aura tendance à demander à ce dernier de rechercher l’information lui même (par exemple en SNMP) alors que l’on a déjà effectué une telle demande dans un agent de supervision. Ce n’est pas trop du point de vue charge machine ou réseaux que ceci m’embête, mais bien d’un point de vue conceptuel où on fait deux fois la même chose, et où l’admin va devoir gérer deux agents et configurations, ce qui est totalement injustifié quand on a un PNP qui peux faire tout aussi bien que Cacti par exemple.

Shinken est développé en langage Python. Quels sont pour toi les avantages de ce langage par rapport au langage C dont Nagios Core est issu ? Une vue extérieure pourrait penser que le Python est moins performant que C, surtout pour des applications proches des couches systèmes et réseaux.

J’avais le même a priori il y a quelques années. J’ai été élevé à l’assembleur et au C, avec de l’Emacs et du Makefile fait à la main (je n’ai pas tourné barbu pour rien hein…). Même si j’avais bien vu l’intérêt de l’orienté objet pour la création d’UI (modèle MVC + orienté objet = moins de code, moins de bugs), mais pas dans le domaine très “noble” des daemons serveurs.

J’ai aussi été bassiné pendant de longues années par des algorithmes au nom impossible à retenir (Disjtra, je suis désolé, j’adore ton algo, mais alors ton nom….) mais qui faisaient toute la différence dans ce que le développeur mettait comme “intelligence” dans son code (bien plus que de joli commentaires ou des lignes de 80 caractères au maximum). Les algos allant bien évidement avec la recherche de leur efficacité en O(1) si possible, O(n) dans de nombreux cas, et O(n*…*n) si on s’y était mal pris.

Je n’avais jamais fait le lien entre les deux. Pour moi la performance allait tout d’abord au langage choisi (plus c’est bas niveau, plus c’est rapide) puis le reste. Or c’est totalement faux, et c’est en devenant admin et étant confronté à des codes/requêtes testé(e)s sur de petits cas de tests mais qui se révélaient désastreux sur un cas réel (genre testé en 0.1s avec une table à 100 éléments, et qui prends 8h sur une table avec 10000). Le tout sur des serveurs plutôt “costaux”.

Et là le langage (haut niveau) n’y était pour rien, on aurait pu faire le même en C que ça aurait pris aussi 8h (aller, 7h45, toujours aussi insupportable pour un utilisateur et l’administrateur du pauvre serveur).

Non, la performance vient en premier lieu des algorithmes, pas du code. Mieux vaut un bon algo avec un langage lent qu’un mauvais avec de l’assembleur bien codé mais un algo mal pensé.

Or si on y pense, un outil de supervision a besoin de deux choses :

  • calculer une date de prochain check
  • lancer la sonde de supervision, donc un fork()

 Le reste, ce sont des problèmes de haut niveau.

 Si on refait la même chose que Shinken mais en C, on gagnera en performance sans aucun doute. Mais ceci va tout simplement demander un temps astronomique avec les ressources des projets Nagios ou Shinken, et on perdrait en modularité de code (on ne peux architecturer aussi simplement et rapidement un code en C qu’un code en Python, aussi bon codeur que l’on soit).

On peux se dire que plus on se rapproche du système, moins l’importance des algos est importante, un fork() est un fork() après tout. Mais en fait non, la manière dont on fait les appels bas niveau à un impact direct sur les performances. Par exemple, Nagios passe le plus clair de son temps à faire des choses “de la mauvaise manière” :

  • lancer des fils, donc des forks() pour ensuite les tuer. Le pauvre système à un mal fou à suivre, un fork() c’est très lourd!
  • écrire des fichiers plats qui seront lu par le processus principal pour obtenir les informations. C’est bien rigolo, mais le VFS du noyau n’est pas ce qui est le plus rapide au monde, si on pouvait directement parler de mémoire à mémoire avec une socket, on gagnerait un temps énorme!

 Ca tombe bien, ceci a été crié depuis 2 ans maintenant, mais les projets Nagios et centreon-engine s’y attellent aujourd’hui. Je leur souhaite bien du courage. Personnellement j’ai préféré faire confiance aux codeurs de Python qui sont sûrement bien plus doués que moi pour gérer ces problèmes bas niveaux de communication inter-process. Ceci permet par exemple de passer plus de temps sur des aspects importants pour la supervision comme les notions d’importances ou de corrélations. Ces dernières ne demandent pas de puissance de calcul particulières, mais résolvent les problèmes de bon nombres d’administrateurs dans la vie de tous les jours, les problèmes de performances étant désormais oublié 🙂

Le fait de disposer d’un coeur développé en Python permet d’installer un serveur Shinken sur une machine Windows. Conseilles tu cette architecture ? Quelles sont les éventuelles limitations ?

Oui, et vous remarquez que j’ai même mis ceci dans le TOP3 des features! Shinken est conçu/testé pour deux environnements : Linux et Windows.

Le Windows sera moins performant, non par ce qu’il est codé avec les pieds, mais bien parce qu’il a des fork() plus lent (le modèle de sécurité est plus évolué sous Windows, et implique donc des calculs bien supérieurs à ce que l’on fait sous Linux). Je n’ai pas de chiffres, mais on peux s’attendre à diviser les perfs par deux sur le lancement des sondes.

Je conseille donc pour les gros parcs d’avoir si possible des pollers en Linux pour prendre la majorité de la charge (test réseaux, tests des agents, etc). Mais un poller sous Windows peut avoir un gros intérêt également :

  • on peux le lancer avec un compte de domaine, donc potentiellement lancer directement des requêtes WMI sur les autres Windows. Et avec ça, on fait presque tout sous Windows!
  • pour les petits sites qui n’ont pas d’admin Linux, ils n’ont de toute manière pas le choix 🙂

Si c’est un reactionner, on peux restarter des services à distances, pratique…

Outre les problèmes de performances, il y a quelques limitations :

  • il n’y a pas de pipe nommé (nagios.cmd) sous Windows facilement acessible, donc il faut passer par un module externe pour la supervision passive (LiveStatus par exemple)
  • il y a beaucoup moins de sondes disponibles sous Windows. Très peu de packs tout en uns sont fait.
  • Aucune UI n’est faite pour !

Le premier est facilement contournable, surtout avec l’arrivée de la commande CLI dans la nouvelle version.

Le second est plus problématique, et il faudra qu’on s’y attelle sérieusement 🙂

Le dernier sera réglé avec l’UI de Shinken.

Quel environnement de développement (IDE, outil de debug, gestionnaire de version, tracking…) utilises tu pour le développement de Shinken?

Comme tout le monde, ce avec quoi j’ai appris à l’école:

  • IDE : Emacs, avec un module pour pylint et coverage
  • Debug : print, mais surtout la méthode de développement dirigée par les tests
  • Gestionnaire de version : GIT (le projet est hébergé sur GitHub)
  • Tracking : trac sur sourceforge (historique), mais aussi GitHub
  • Hudson : pour les tests de non régressions
  • Web : WordPress, car c’est tout simplement génial à administrer et mettre à jour 🙂

Si des lecteurs sont intéressés pour s’investir dans le développement de Shinken. Quels sont les besoins les plus importants ?

Un peu de tout en fait !

Des codeurs qui ont besoin d’un certain besoin ou veulent s’amuser en Python, des webdesigners qui sont tentés par la nouvelle UI qui se lâche dans ce domaine (on n’a pas peur de l’HTML 5 et du CSS3 on va dire 🙂 ), des rédacteurs de tutos sur le wiki, des modérateurs sur le forum, quelqu’un qui envoie un petit “merci” par mail (ça aide énormément à maintenir le rythme!) ou alors tout simplement un admin qui tente de l’installer, remonte un bug où nous dit qu’il est en production.

Toute personne qui veux aider est la bienvenue, il n’y a pas de “partie réservée” dans ce projet, mis à part le choix du nom (débile en général) de version qui est mon petit coin à moi 🙂

En discutant personnellement avec des responsables informatiques, les principales craintes qu’ils énoncent à l’utilisation de Shinken en environnement de production sont la pérennité de l’équipe de développement (et donc indirectement du produit) et le support technique. Comment les rassurer sur ces points ?

Ce sont des considérations justes et logiques. J’aurai la même en tant qu’admin. Pour l’instant la communauté est en train de monter, les tests se multiplient et le nombres de contributeurs augmente. Mais il n’y a pas encore de SSLL qui le proposent en formation ou intégration (ça arrive). J’ai par exemple déposé le nom Shinken à l’internationnal par exemple,si ceci peux démontrer à quel point j’y crois (surtout quand on connaît mon aversion pour les trucs administratifs, et là j’ai été servi..). Donc je pense que Shinken arrivera dans un premier temps par la petite porte, comme l’a fait Nagios avant lui d’ailleurs.

As tu des références d’entreprises utilisant Shinken pour la supervision de leur système d’information ?

Il y a pour ceux où je suis au courant déjà Lectra, société où je travaille (300 serveurs, 7k services), une section de Sogeti sur Bordeaux (12K services), l’hébergeur Sobio (100 serveurs) et un conseil général.

Si d’ailleurs certains l’ont mis en place, nous sommes en phase de recherche de références !

Est il intéressant de déployer Shinken sur des parcs informatiques de petite et moyenne taille ?  (question d’Anthony Paradis modo du forum de Monitoring-FR)

Oui pour les petits, car ils sont souvent sous Windows et là c’est tout simplement leur seule solution “libre” de ce calibre à ma connaissance 😉

Pour les moyens qui sont en pleine virtualisation, le module de création automatique des liens de dépendances entre l’hôte et les VM peux être utile par exemple, et montrer un peu à un DSI l’intérêt de ce genre de projet. On peux également le voir comme un “nagios like” et donc utiliser les mêmes arguments (nombreux!) de ce dernier, mis à part l’importance de la communauté de ce dernier (mais il a désormais un avenir incertain sous cette forme, il devient donc plus dur de le “vendre”).

Il offre aussi des simplications importantes dans la configuration de Nagios, donc un bac°5 n’est pas forcément nécessaire pour mettre en place des escalades de notification à 2h et 4h sur une partie du parc par exemple. Cela prends plutôt 5 mins désormais 🙂

Pour finir, comment vois tu Shinken dans 5 ans ce qui est une éternité pour un logiciel informatique ? (question de Romain de Woueb.net)

Comme une solution à part entière, c’est à dire :

  • un coeur performant, scalable et qui permet une corrélation avancée : OK, pas la peine d’attendre 5 ans 🙂
  • un environnement de sondes énorme : OK pour Linux, à faire pour Windows, même si ce dernier, un check_windows réglerait déjà 90% du besoin de cet environnement (j’ai un poc en alpha dans les cartons 🙂 ).
  • une UI de visualisation qui permettra à ses utilisateurs d’avoir les mêmes infos qu’un NagVis mais en plus “dynamique”
  • une UI de configuration, très axées découverte et “auto” configuration
  • un agent qui permet la découverte sur les éléments distants “à la check_mk” (ce dernier n’est malheureusement pas utilisable sur un environnement distribués, et l’auteur n’est pas pour changer cela à mon grand regret…)? (on avait dit 5ans hein 🙂 )
  • un module de reporting (si Nareto ne revient pas)

Mais même si nous n’atteignons jamais ça, déjà avoir une grosse communauté et savoir que ce projet a aidé bon nombres d’administrateurs dans leur vie de tous les jours et à leur permettre de se consacrer à des tâches plus intéressantes que courir partout car ils n’arrivent pas à trouver l’élément qui a fait tout tomber, ça serait déjà un objectif tout à fait satisfaisant pour moi.

Le reste (passer devant Nagios, contenir Zabbix, convaincre les gourous de la supervision du bien fondé de ma vision, avoir le temps de finir les deux Final Fantasy que j’ai de retards, …) ce n’est que du bonus. Si de plus ça peux devenir mon gagne pain, ça me permettrait à justifier à ma femme tout ce temps où je passe dessus 🙂

Un petit mot pour finir ?

Comme mot de fin, j’aimerai remercier Nicolas pour cette interview ainsi que tous ceux qui ont posés des questions et qui portent un intérêt à ce projet :).

Nous arrivons à la fin de cet interview. Encore merci à Jean pour sa disponibilité et aux lecteurs qui ont posés de questions intéressantes qui montrent l’intérêt du public pour cette solution de supervision.

Vous pouvez bien sûr poser des questions complémentaire à Jean en utilisant le formulaire en bas de cette page.

Quelques liens relatifs à Shinken:

Catégories
Blog Nagios Open-source Planet-libre

Participez à la prochaine interview de Jean Gabes

Jean Gabes, le « papa » de Shinken, a accepté d »accorder une interview au Blog de Nicolargo avant la prochaine sortie de la nouvelle version de son logiciel de supervision des systèmes d’informations.

J’aimerai que vous, lecteurs du blog, participiez activement à la préparation de cet interview en m’envoyant par mail des questions que vous souhaiteriez lui poser. Une sélection des questions les plus pertinentes sera proposée à Jean.

Pour participer (et gagner au passage un backlink), merci de m’envoyer par mail à l’adresse suivante: contact (a) nicolargo . com (sujet : Interview de Jean Gabes) en n’oubliant pas de donner votre nom/pseudo ainsi que l’adresse URL de votre site/blog (pour le backlink).

Catégories
Nagios Open-source Planet-libre Reseau Systeme

Problème dans l’installeur de la version 3.3.1 de Nagios

Si vous avez essayé d’installé la dernière version en date de Nagios sur votre système, il se peut que l’erreur suivante soit apparue lors du « make fullinstall »:

/usr/bin/install: omitting directory `includes/rss/extlib’

/usr/bin/install: omitting directory `includes/rss/htdocs’

/usr/bin/install: omitting directory `includes/rss/scripts’

make[1]: *** [install] Error 1

make[1]: Leaving directory `/srv/d_bilbo/install/nagios/nagios/html’

make: *** [install] Error 2

C’est en fait au niveau de l’installation du nouveau thème de l’interface Web de Nagios que le bas blesse et notamment au niveau du fichier Makefile qui se trouve dans le sous répertoire ./html.

Pour résoudre ce problème et procéder à une installation complète de Nagios 3.3.1, il faut suivre la procédure suivante (en attendant le patch de la part de Nagios qui devrait bientôt arriver dans la version 3.3.2):

./configure

sed -i ‘s/for file in includes\/rss\/\*\;/for file in includes\/rss\/\*\.\*\;/g’ ./html/Makefile

sed -i ‘s/for file in includes\/rss\/extlib\/\*\;/for file in includes\/rss\/extlib\/\*\.\*\;/g’ ./html/Makefile

make fullinstall

Je viens d’intégrer automatiquement ce patch maison dans les scripts d’installation et de mise à jour automatique de Nagios (à partir de la version 0.82 des scripts).

Donc si vous avez utilisé mes scripts pour installer et ou mettre à jours en version 3.3.1, je vous conseille de récupérer le script de mise à jour automatique de Nagios et de le ré-exécuter sur vos serveurs afin de finir proprement votre installation et disposer du nouveau thème Web:

Merci aux lecteurs qui on permis d’identifier le problème 🙂