Catégories
Open-source Planet-libre Reseau

Installation de VNStat sous Debian

VNStat est un outil bien utile pour surveiller le débit des interfaces réseaux de ses machines. Il se présente sous la forme d’un processus tournant en tache de fond (les versions plus anciennes se basaient sur crontab) et surveillant les flux transitant sur vos interfaces.

Nous allons détailler l’installation et l’utilisation de cet outil sur un système GNU/Linux Debian Squeeze.

Installation de VnStat

Dans une console root (ou en utilisant sudo), il faut saisir les commande suivantes:

[cce lang= »bash »]

apt-get install vnstat vnstati

vnstat -u -i eth0 –nick « LAN0″

/etc/init.d/vnstat start

[/cce]

La configuration de VnStat est centralisé dans le fichier /etc/vnstat.conf. Par défaut, le rafraîchissement se fait toutes les 5 minutes et surveille l’interface eth0. Cette configuration est bien sûr à adapter à vos besoins.

Si vous saisissez la commande suivante dans les 5 minutes qui suivent l’installation, il est normal d’avoir le message d’erreur:

[cce lang= »bash »]

vnstat

eth0: Not enough data available yet.

[/cce]

Les premières statistiques sont disponibles 5 minutes après l’installation.

Utilisation de VnStat

Statistiques instantanées basées sur les 5 dernières secondes:

[cce lang= »bash »]

# vnstat -tr

[/cce]

Statistique de la dernière journée avec une granularité par heure:

[cce lang= »bash »]

# vnstat -h

[/cce]

Statistique sur la dernière journée:

[cce lang= »bash »]

# vnstat -d

[/cce]

Statistique sur la dernière semaine:

[cce lang= »bash »]

# vnstat -w

[/cce]

Statistique sur le dernier mois:

[cce lang= »bash »]

# vnstat -m

[/cce]

Utilisation de VnStati (pour générer des graphes)

VnStati est un logiciel qui perme, à partir de la base de données renseignée par VnStat, de générer des rapports au format images (PNG) que l’on peut facilement intégrer dans une page Web de supervision (à noter qu’il existe un script PHP permettant de générer automatiquement des rapports).

Pour créer une image au format PNG contenant le rapport des dernières heures, il suffit de saisir la commande suivante:

[cce lang= »bash »]

# vnstati -h -o h.png

[/cce]

Le fichier h.png contiendra:

Comme vous pouvez le voir, VnStati utilise les mêmes arguments que VnStat (un petit man vnstat vous sera utile pour avoir la liste exhaustive).

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 Open-source Planet-libre Web

Configuration Varnish+Nginx pour WordPress

Vu le nombre d’articles sur l’utilisation du serveur de cache Varnish pour une utilisation avec le CMS WordPress, force est de constater qu’il est difficile de faire le tri pour en sortir LA configuration. Dans ce billet, je vais donc vous présenter ma configuration qui tourne depuis quelques jours sur le serveur hébergeant le Blog de Nicolargo.

Ce serveur sous Debian Squeeze est composé de:

  • Varnish
  • Nginx avec le module PHP-FPM
  • WordPress avec le plugin « Varnish HTTP Purge »

Je maintiendrai à jour une configuration stable (avec des commentaire en Anglais) de cette pile HTTP dans le GIT suivant:

https://github.com/nicolargo/varnish-nginx-wordpress

Une configuration pour quoi faire ?

Le principal objectif est d’optimiser votre serveur pour supporter une montée en charge pouvant aller jusqu’à plusieurs centaines de requêtes HTTP par seconde. C’est à dire une configuration adaptée pour une grande majorité des blogs personnels à fort trafic.

Avec une pile HTTP classique (c’est à dire sans cache), toutes les requêtes vers WordPress vont entraîner:

  • l’exécution d’un script PHP générant en sortie un fichier HTML
  • des requêtes vers la base de donnée MySQL
  • la lecture sur disque des éléments statiques de la page (fichiers CSS, JS, images…)

Lors de ces premières requêtes il est important d’avoir un thème bien optimisé. Le plugin W3 Total Cache peut vous aider dans cette démarche en optimisant les fichiers CSS (compression / regroupement) et en mettant dans un cache certaine requêtes SQL. Il faut également noter qu’avec un système de cache externe comme Varnish, la première requête va également engendrer ces actions mais pas les suivantes.

Les deux premiers points sont fortement consommateurs de ressources matérielles (CPU et mémoire). Ainsi, la charge globale de votre serveur augmente avec le nombre de requêtes simultanées. Arrivé à saturation, votre serveur ne peut plus répondre correctement aux requêtes et le temps de chargement de vos pages commencent à augmenter jusqu’à arriver au point ou il n’est plus capable de rien faire.

L’utilisation d’un cache comme Varnish permet de fournir directement les fichier HTML au navigateur client sans passer par l’exécution du script PHP et les requêtes MySQL.

Concernant le troisième point, le problème vient de la relative lenteur des accès disques (notamment si vous êtes sur un hébergement de type virtuel (aka) VPS).

Une optimisation possible est de lire les objets statiques non pas depuis le disque mais directement depuis un cache mis en RAM. Deux solutions sont possibles, soit faire effectuer cette tache par Varnish (que l’on peut optimiser en utilisant un disque tmpfs pour le répertoire de travail de Varnish) qui en plus des pages HTML va également « cacher » les objets statiques, soit laisser NGinx gérer cela directement, notamment en utilisant une brique comme Memcached. Si les deux sont comparables en terme de performances pures (c’est à dire la capacité à supporter un grand nombre de requêtes simultanées), il semble que NGinx est une consommation CPU moins importante.

Avant de cacher il faut savoir purger

Les lecteurs attentifs ont déjà dû noter qu’il y avait un trou dans la raquette dans l’exposé précédant. En effet, par définition, WordPress génère des sites dynamiques ou les articles peuvent évoluer, des commentaires peuvent être ajoutés. Il faut donc un mécanisme pour prévenir Varnish de mettre à jour son cache quand certaines actions sont faites sur le blog.

Heureusement pour nous, WordPress dispose d’un grand nombre de plugins permettant d’automatiser cette tache. W3 Total Cache, déjà mentionné dans le premier chapitre dispose d’une option pour  communiquer avec Varnish. Il semble cependant qu’il y est des problèmes quand l’on configure ce plugin avec plusieurs serveurs Varnish (pour faire du partage de charge). Je conseille donc l’utilisation d’un plugin ne faisant que la tache de purge:  Varnish HTTP Purge.

Il faut donc désactiver la fonction de purge Varnish dans W3 Total Cache (si ce dernier est installé):

puis activer le plugin Varnish HTTP Purge:

On passe aux résultats

Pour avoir un « test bed » stable, j’ai installé les briques sur une machine dédiée sous Debian Squeeze. J’ai ensuite rédigé un billet de test comprenant du texte et 3 images.

Test de montée en charge locale avec Apache Bench

Dans un premier temps j’ai utilisé l’utilitaire Apache Bench (utilitaire ab) qui permet de simuler en local (c’est à dire sans les contraintes réseau) un grand nombre de requêtes simultanées sur l’URL du billet de test.

Sans Varnish / Sans W3 Total Cache:

[cce lang= »bash »]

# ab -c 5 -t 30 http://blogtest.nicolargo.com/2011/09/lorem.html

Requests per second: 20.45 [#/sec] (mean)

[/cce]

=> CPU proche de 95% pendant le test.

Sans Varnish / Avec W3 Total Cache:

[cce lang= »bash »]

# ab -c 5 -t 30 http://blogtest.nicolargo.com/2011/09/lorem.html

Requests per second: 232.62 [#/sec] (mean)

[/cce]

=> CPU proche de 85% pendant le test.

On note une augmentation des performances mais la charge CPU reste forte. Les processus PHP-FPM sont nombreux.

Avec Varnish / Sans W3 Total Cache:

[cce lang= »bash »]

# ab -c 5 -t 30 http://blogtest.nicolargo.com/2011/09/lorem.html

Requests per second: 8001.76 [#/sec] (mean)

[/cce]

=> CPU proche de 30% pendant le test.

Le gain est impressionnant par rapport à la configuration sans Varnish. On atteint un nombre de requêtes par seconde très important (> 8000 en moyenne) avec une marge CPU ne dépassant pas les 35% !

Avec Varnish / Avec W3 Total Cache:

[cce lang= »bash »]

# ab -c 5 -t 30 http://blogtest.nicolargo.com/2011/09/lorem.html

Requests per second: 8018.47 [#/sec] (mean)

[/cce]

=> CPU proche de 30% pendant le test.

Comme on n’a pas ou peu de gain supplémentaire en utilisant W3 Total Cache en plus de Varnish. J’ai donc décidé de ne plus utilisé W3 Total Cache sur mon blog WordPress. Il sera remplacé par « Varnish HTTP Purge » pour la gestion des purges de Varnish et « WP Minify » pour la réduction automatique des fichier CSS et JavaScript.

Test de montée en charge online avec Blitz.io

Si vous ne connaissez pas le service Blitz.io, je vous conseille la lecture du très bon billet de Romain sur le sujet.

J’ai utilisé la commande « rush » suivante:

[cce]

–timeout 5000 –region ireland –pattern 1-250:60 http://blogtest.nicolargo.com/2011/09/lorem.html

[/cce]

NGinx seul:

A partir de 50 utilisateurs, le temps de chargement des pages commence à augmenter pour arriver au timeout (limité à 5 secondes pour les tests chez Blitz.io) vers 120 utilisateurs.

NGinx avec Varnish:

Dans cette configuration, je ne rencontre aucune chute de performance avec 250 utilisateurs simultanés.

Grâce à Romain (encore lui) j’ai pu lancer sur le Blog de Nicolargo (Varnish + Nginx) un test avec 500 utilisateurs simultanés (par défaut Blitz.io est limité à 250).

Voici le résultat sur le Blog de Nicolargo:

Pas de problème jusqu’à 500 utilisateurs simultanés !!!

Test des purges

Pour valider que le plugin « Varnish HTTP Purge » fonctionnaite bien j’ai effectué les taches suivantes en vérifiant que la page était bien mise à jour pour un lecteur lambda:

  • Modification d’un billet existant
  • Suppression d’un billet existant
  • Ajout d’un commentaire
  • Modification d’un commentaire
  • Suppression d’un commentaire

Tous les tests ont été concluant.

Conclusion

Le couple Varnish + Nginx est donc une des pile que l’on peut utiliser pour obtenir un blog performant et résistant à une montée en charge bien supérieure aux nombres maximum de visiteurs sur la plupart des sites Internet. Ce n’est bien pas la seule solution et il existe sûrement des piles encore plus optimisé (notamment au niveau statique avec un serveur comme G-WAN), mais il est de mon point de vu, celui qui offre le meilleur ratio stabilité/sécurité/performance.

Pour suivre l’activité de la configuration étudiée dans ce billet, je vous conseille de vous abonnez au projet GitHub.

Quelques unes des sources de ce billet:

Catégories
Blog Open-source Planet-libre Web

Interview d’Aurélien Poncini, père de Web4All !

C’est avec une certaine impatience que j’ai préparé l’interview d’Aurélien. Imaginez un peu un geek n’ayant jamais vu aucun des films des séries de « La guerre des étoiles » ou du « Seigneur des anneaux » et qui s’implique sans compter dans une association proposant des services d’hébergement de site Internet…

Bonjour Aurélien, peux tu nous présenter Web4All ?

Web4all est une association française de loi 1901 créée en octobre 2006 par moi-même. Composée uniquement de bénévoles nous parvenons ainsi à réduire les charges afin d’offrir à nos clients un service d’hébergement optimal pour un prix très convenable.

Nous proposons des services d’hébergements permettant à tous de pouvoir se faire une visibilité sur internet qu’ils soient particuliers, associatifs ou professionnels. Nos offres se veulent relativement complètes, elles incluent un espace de stockage avec accès FTP, une publication via Apache / Php, une gestion des statistiques Awstats, bases de données MySQL, un service mail via la suite Zimbra sans oublier les sauvegardes.

Peux tu nous donner quelques chiffres ?

Aujourd’hui Web4all héberge environ 5000 sites internet et gère 2000 noms de domaines ce qui en fait un des plus gros acteur du marché des hébergeurs associatifs français. L’équipe est composé de 9 personnes, chacune avec ses compétences : administration système, comptabilité, développement… et ne demande qu’à s’agrandir.

Au niveau infrastructure nous avons 7 serveurs physiques chez OVH utilisés ainsi : trois hyperviseurs délivrant 288Go de RAM dotés de deux cartes 10Gbps par serveur, deux serveurs de backups pour les données clients, un serveur MySQL et un serveur de fichiers qui va bientôt disparaître. Elle fait tourner une cinquantaine de machines virtuelles.

Il faut ajouter à cela les 4 NAS utilisées pour la virtualisation.

Nous avons également un serveur de virtualisation chez Online permettant d’héberger un serveur DNS, des serveurs MTA, un serveur de supervision, le tout extérieur au réseau OVH afin d’assurer un service en mode dégradé en cas de soucis chez OVH (ce qui entre nous, n’arrive jamais).

Web4all c’est environ 1To de données clients, 1.5To de machines virtuelles, 2500 bases de données MySQL, 15To de sauvegardes.

Certes ces chiffres sont petits comparés à de très gros hébergeurs mais à notre niveau cela représente une belle évolution de notre association.

Quel est la place des logiciels libres dans cette association ?

Web4all repose majoritairement sur des briques libres mais nous utilisons également des applications non libres, notamment pour la gestion en interne (application de comptabilité).

Ce choix de briques libres permet une réduction des coûts apportant là aussi un intérêt pour le client sur le prix final.

Ce choix n’est pas uniquement basé sur une question de coût, ces applications ont aussi l’avantage d’être réputées stables, fonctionnelles et généralement largement documentées nous permettant de gagner du temps en terme d’administration et formation.

Ainsi nous pouvons approximativement dire que Web4all repose à 95% sur des logiciels libres.

Quelles sont les chantiers en cours chez Web4All ?

 Nous avons beaucoup de projets d’améliorations, d’évolutions. Mais nous souhaiterions aussi aller plus loin en proposant de nouveaux services à nos clients. Actuellement nous travaillons sur la finalisation du projet Zimbra Network Edition, sur la possibilité de commercialiser des serveurs virtuels administrés par nos soins, le but étant pour le client de bénéficier des avantages d’une machine dédié en terme de ressources mais sans avoir à s’occuper des tâches d’administration : vendre du service comme nous le faisons depuis le début mais cette fois-ci très axée “professionnel”.

En te mettant dans la peau d’un commercial, essayes de nous vendre Web4All…

Nous n’inventons rien, que ce soit au niveau des services que nous commercialisons déjà ou ceux à venir nous avons bien conscience qu’ils existent déjà chez de nombreux prestataires. Mais nous avons notre philosophie, une petite structure conviviale où le rapport humain passe avant tout ce qui signifie donc un support le plus adapté possible à nos clients et ce sans surcoût.

 Nous croyons à ce que beaucoup nomment aujourd’hui le Cloud, nous avons toujours privilégié les systèmes permettant de travailler en mode « distant » où toutes les données sont stockées sur le web. Mais nous sommes aussi de fervents défenseurs de la vie privée au sens large. Non pas qu’il faille ou non changer l’existant mais tout simplement en laissant à chacun le choix de ce qu’il souhaite faire de ses données et ce en toutes connaissance de cause. Or aujourd’hui, beaucoup de particuliers et de sociétés utilisent des services (je ne nommerais personnes pour éviter les trolls) sans connaître ce qu’il est fait de leur données ou ce qui pourrait éventuellement en être fait. Nous souhaitons proposer des alternatives à ce genre de services.

De quoi Web4All a besoin pour continuer son développement ?

Tout cela prends du temps, beaucoup de temps et comme dis précédemment nous ne sommes composé que de bénévoles, chacun avec son emploi du temps et un emploi en parallèle. Il nous est difficile de trouver des personnes souhaitant s’investir et en ayant les compétences ou étant en mesure de les acquérir. Tous ces services que nous proposons et que nous serons amenés à proposer ne peuvent exister que si nous avons une équipe forte et compétente pour cela.

 Notre outil de gestion des hébergements est un outil développé en interne par moi-même, ce dernier me prends énormément de temps et nous avons pour objectif d’en faire une nouvelle version que nous souhaiterions à terme diffuser librement. Là aussi il faut… du temps et des personnes prêtes à s’investir.

Ainsi, à défaut de pouvoir bénéficier de plus de temps, ce dernier n’étant malheureusement pas extensible, il nous faut trouver des personnes voulant participer à l’aventure.

Tu recherches actuellement des personnes voulant s’impliquer, peux tu nous donner quelques détails ?

Nous accueillons en permanence des personnes désireuses de nous rejoindre. Quelque soit leurs niveaux nous sommes très ouvert, le plus important étant la motivation, la capacité d’apprentissage et de travail en équipe. Mais surtout un point important : la disponibilité.

 Actuellement nous sommes en effectifs réduits donc je ne cache pas que le mieux seraient de pouvoir “recruter” des personnes ayant déjà un niveau confirmé.

Une liste non exhaustive des postes :

  • administrateurs système : Debian, Ubuntu principalement
  • administrateurs applicatif : Apache, MySQL, Bind, PostgreSQL, PureFTP, Nagios-Centreon, PHP, Ruby… et bien d’autres 😉
  • développeurs : PHP, principalement. Seraient un plus : Shell, Perl, Python…
  • Community manager

Un petit mot à nos lecteurs pour finir ?

 Web4all c’est une équipe composé de personnes de tout niveaux, dans différents domaines. Des personnes qui amènent des compétences, effectuant ainsi un transfert de compétences en interne auprès de celles et ceux intéressées.

En rejoignant l’équipe de Web4all vous aurez la chance de vivre une expérience exeptionnelle : celle d’apprendre toujours plus, de travailler sur un projet concret que vous pourrez mettre en avant lors, pourquoi pas d’un entretien d’embauche comme certains de notre équipe l’ont fait !

C’est avant tout une expérience humaine, un travail d’équipe au service de clients et adhérents qui attendent beaucoup de nous.

 En revanche si vous n’êtes pas vraiment motivé, réfléchissez bien et s’il vous plaît, ne nous contactez pas juste pour voir car nous perdons aussi beaucoup de temps avec des personnes que nous “formons” pendant quelques semaines et qui ne continuent pas l’aventure par manque de motivation.

Si Web4all existe aujourd’hui c’est grâce aux personnes qui composent l’équipe, actuels ou anciens. Mais c’est aussi en grande partie grâce à des sites et blogs comme celui de Nicolargo sur lesquels nous trouvons des ressources documentaires de qualité permettant un gain de temps considérable. Alors je tiens à adresser un grand merci à cette communautée de bloggeurs, du monde Open-Source ou non et tout particulièrement à Nicolas qui sans le savoir nous a beaucoup aidé et nous aide encore grâce à son blog !

 N’hésitez pas à parler de ces blogs autour de vous, n’hésitez pas à parler de nous autour de vous. Nous avons un point commun : une des meilleures manières de nous aider c’est aussi en parlant de nous 🙂

Merci Aurélien !

Catégories
Open-source Planet-libre Systeme

Surveiller l’état de son RAID1 hardware sous Debian

Sur ma Dedibox DC, je dispose en standard de deux disques dur fonctionnant en RAID1 grâce à une carte hardware. Comme le mirroring entre les deux disques est effectué directement depuis la carte hardware, il faut effectuer quelques manipulations au niveau du système d’exploitation pour avoir un état du RAID1.

Installation des utilitaires

On commence par trouver le nom de la carte qui se charge du RAID.

[cc lang= »bash »]

# lspci

01:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)

[/cc]

On ajoute ensuite le dépôt suivant pour prendre en charge les utilitaires pour la carte  Fusion-MPT SAS-2:

Dans un terminal root, il faut saisir la commande suivante:

[cce lang= »bash »]

echo « deb http://hwraid.le-vert.net/debian squeeze main » > /etc/apt/sources.list.d/hwraid.list

[/cce]

Puis mettre à jour ses dépôts et installer le logiciel dédié à cette carte:

[cc lang= »bash »]

apt-get update

apt-get install sas2ircu

[/cc]

Utilisation des utilitaires

Pour avoir la liste des cartes RAID de son système:

[cc lang= »bash »]

# sas2ircu LIST

LSI Corporation SAS2 IR Configuration Utility.

Version 5.00.00.00 (2010.02.09)

Copyright (c) 2009 LSI Corporation. All rights reserved.

Adapter Vendor Device SubSys SubSys

Index Type ID ID Pci Address Ven ID Dev ID

—– ———— —— —— —————– —— ——

0 SAS2008 1000h 72h 00h:01h:00h:00h 1028h 1f1dh

SAS2IRCU: Utility Completed Successfully.

[/cc]

L’information intéressante est le numéro de la carte (0 dans mon cas) qui va servir pour la commande suivante qui va afficher l’état des disques RAID:

[cc lang= »bash »]

# sas2ircu 0 DISPLAY

LSI Corporation SAS2 IR Configuration Utility.

Version 5.00.00.00 (2010.02.09)

Copyright (c) 2009 LSI Corporation. All rights reserved.

 

Read configuration has been initiated for controller 0

————————————————————————

Controller information

————————————————————————

Controller type : SAS2008

BIOS version : 7.11.01.00

Firmware version : 7.15.04.00

Channel description : 1 Serial Attached SCSI

Initiator ID : 0

Maximum physical devices : 39

Concurrent commands supported : 2607

Slot : 1

Segment : 0

Bus : 1

Device : 0

Function : 0

RAID Support : Yes

————————————————————————

IR Volume information

————————————————————————

IR volume 1

Volume ID : 79

Status of volume : Okay (OKY)

RAID level : RAID1

Size (in MB) : 953344

Physical hard disks :

PHY[0] Enclosure#/Slot# : 1:0

PHY[1] Enclosure#/Slot# : 1:1

————————————————————————

Physical device information

————————————————————————

Initiator at ID #0

 

Device is a Hard disk

Enclosure # : 1

Slot # : 0

State : Optimal (OPT)

Size (in MB)/(in sectors) : 953869/1953525167

Manufacturer : ATA

Model Number : WDC WD1003FBYX-1

Firmware Revision : 1V02

Serial No : WDWCAW31480098

Protocol : SATA

Drive Type : SATA_HDD

 

Device is a Hard disk

Enclosure # : 1

Slot # : 1

State : Optimal (OPT)

Size (in MB)/(in sectors) : 953869/1953525167

Manufacturer : ATA

Model Number : WDC WD1003FBYX-1

Firmware Revision : 1V02

Serial No : WDWCAW31419175

Protocol : SATA

Drive Type : SATA_HDD

————————————————————————

Enclosure information

————————————————————————

Enclosure# : 1

Logical ID : 5782bcb0:32624a00

Numslots : 8

StartSlot : 0

Primary Boot Slot : 0

————————————————————————

SAS2IRCU: Command DISPLAY Completed Successfully.

SAS2IRCU: Utility Completed Successfully.

[/cc]

On peut voir l’état du disque RAID ainsi que celui des disques physiques (slot 0 et slot 1).

Pour effectuer une vérification rapide du RAID1, c’est à dire que les deux disques sont fonctionnels, il suffit de sasir la commande suivante:

[cc lang= »bash »]

# sas2ircu 0 STATUS

LSI Corporation SAS2 IR Configuration Utility.

Version 5.00.00.00 (2010.02.09)

Copyright (c) 2009 LSI Corporation. All rights reserved.

 

Background command progress status for controller 0…

IR Volume 1

Volume ID : 79

Current operation : None

Volume status : Enabled

Volume state : Optimal

Physical disk I/Os : Not quiesced

SAS2IRCU: Command STATUS Completed Successfully.

SAS2IRCU: Utility Completed Successfully.

[/cc]

La ligne suivante:

Volume state : Optimal

permet d’identifier un fonctionnement nominal.

Il ne reste plus qu’à intégrer cette commande dans un nouveau plugin Nagios/Shiken pour superviser l’état de votre RAID1 (cela sera surement le sujet d’un prochain billet).

Source: Forum Online.net

Catégories
Blog Open-source Web

Migration du blog vers une Dedibox DC

Ce matin, vers les 10h, j’ai procédé à la migration de mon blog depuis un serveur VPS Gandi 4 parts vers une Dedibox DC.  J’ai choisi un samedi matin car c’est à ce moment là que le trafic est le plus faible sur le site.

Voici la procédure que j’ai suivi:

  • Installation du nouveau serveur en suivant cette procédure
  • Sauvegarde de la base MySQL depuis le serveur VPS Gandi
  • Fermeture des commentaires sur le blog WordPress du serveur VPS Gandi
  • Copie du répertoire wp-contents vers la Dedibox DC
  • Importation de la base MySQL sur la Dedibox DC
  • Test du nouveau serveur
  • Modification des serveurs DNS

 

La migration semble se dérouler comme sur des roulettes. J’ai encore quelques connexions sur l’ancien serveur, depuis des réseaux dont les DNS ne sont pas encore à jour.

Au niveau des performances, les graphes suivants parlent d’eux même, le nouveau serveur résiste beoucoup mieux à la charge, il faut dire que j’utilise un nouveau stack HTTP: Varnish 3 + Nginx.

Performances avant la migration:

Performances après la migration:

Si vous rencontrez des problèmes pour accéder à mon blog, merci de me prévenir :).

Update: Certains lecteurs rencontrent des effets de bord (page non mise à jour après un commentaire et affichage de la version mobile), j’ai donc désactivé Varnish en attendant de trouver LA configuration qui va bien. J’ai refait un test avec Load Impact et l’on voit clairement que l’on perd en perfo…

Update2: Tout est rentré dans l’ordre 🙂

Catégories
Blog Open-source Web

Le panier du marché libre #12

C’est la rentrée, je sais c’est dur… Heureusement un petit panier libre devrait vous redonner courage !

Une bonne pissaladière pour finir l’été ?

« La pâte à pain et l’oignon peuvent suffire, mais la vraie pissaladière ne saurait être faite sans pissalat, sorte de pâte ou de crème salée faite à partir de sardines et d’anchois salés, qui ont d’ailleurs donné son nom à la spécialité (du nissart peis salat = poisson salé). De plus en plus, on remplace le pissalat par de la crème d’anchois ou des filets d’anchois. Enfin, on a coutume d’ajouter à la pissaladière des olives noires, les caillettes (petites olives noires de Nice). » (source: Wikipédia)

 


Catégories
Open-source Planet-libre Systeme

Mon desktop 201109

Comme je l’annonçais il y a quelques jours dans ce tweet…

…je suis finalement retourné à Gnome 2 sur mon portable perso (sous Ubuntu 11.04) qui me sert pour surfer et bloguer à la maison.

J’en avait vraiment marre d’Unity. J’ai essayé quelques mois mais la mayonnaise ne prend pas… peut être les prémisses de la vieillesse de mon coté. Bientôt la cure de cranberry contre l'incontinence… Sérieux. J’avais la désagréable impression d’avoir dans les mains un système non finalisé.

Voici donc mon desktop Ubuntu 11.04 avec le bon vieux Gnome 2:

Les principales caractéristiques

Conky

Pour installer le thème Conky Orange, il faut bien sur dans un premier temps installer Conky sur votre système (en cliquant directement ici si vous êtes sous Ubuntu) ou en suivant la documentation Ubuntu-fr.

Ensuite, il suffit de saisir les commande suivante dans un terminal:

[cc lang= »bash » width= »580″]

wget http://gnome-look.org/CONTENT/content-files/137503-conky_orange.zip

unzip 137503-conky_orange.zip

mkdir ~/.conky/

cp conky_orange/* ~/.conky/

mv ~/.conkyrc ~/.conkyrc.old

ln -s ~/.conky/conkyrc_orange ~/.conkyrc

[/cc]

Le tableau de bord Gnome 2

Je reviens à du très simple:

  • Les menus Applications / Raccourcis et Système
  • Le navigateur entre mes 4 desktops
  • Les liens vers mes applications:
  • Chromium (navigateur Web)
  • Terminator (client terminal)
  • Shutter (capture d’écran)
  • Spotify (ma musique !!!)

Et vous ? Cela donne quoi ?

A vous de nous montrer vos écrans
(par exemple en utilisant yFrog puis en partagant l’URL) !

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
Open-source Planet-libre Reseau

Mounter son espace de sauvegarde FTP en local sous Debian

Voici une rapide explication pour « mounter » dans un répertoire local un espace de sauvegarde FTP. J’ai utilisé cette procédure pour accéder à mon espace de stockage gratuit de 10 Go sur mon serveur Dedibox DC sous Debian Squeeze.

On commence par récupérer les paramètres de son serveur FTP

On a besoin:

  • du nom de la machine hébergeant le serveur FTP (host)
  • un compte utilisateur (login)
  • un mot de passe (password)

Chez Online.net, ces informations se trouve dans la console d’administration:

Une fois ces informations sous le coude on peut passer à l’étape suivante.

On prépare le terrain

On commence par installer Fuse qui va permettre de faire le montage du répertoire en FTP (toutes les commandes suivantes sont à saisir dans une console root):

[cc lang= »bash »]

apt-get install curlftpfs

[/cc]

Ensuite on créer le répertoire local (/mnt/backup dans mon cas) à partir duquel le répertoire FTP distant sera visible.

[cc lang= »bash »]

mkdir /mnt/backup

[/cc]

On teste que tout fonctionne en ligne de commande:

[cc lang= »bash »]

curlftpfs login:password@host /mnt/backup/

[/cc]

Vous devriez pouvoir lire, écrire et effacer des fichiers dans le répertoire /mnt/backup/.

On démounte le répertoire avec la commande suivante:

[cc lang= »bash »]

umount /mnt/backup

[/cc]

On automatise le tout

On lieu d’avoir à saisir à la main ou dans un script de démarrage la commande curlftpfs, le plus simple et transparent est d’utiliser le fichier /etc/fstab qui va mounter automatiquement l’espace FTP au démarrage de votre machine.

Pour cela, il faut d’abord créer un fichier /root/.netrc contenant les informations sur votre serveur FTP, donc après un « vi /root/.netrc », il faut ajouter la section suivante:

[cc lang= »bash »]

machine host

login login

password password

[/cc]

Puis une petite sécurité sur ce fichier:

[cc lang= »bash »]

chmod 600 /root/.netrc

[/cc]

Ensuite on édite le fichier /etc/fstab et on y ajoute la ligne suivante:

[cc lang= »bash »]

curlftpfs#host /mnt/backup fuse _netdev,allow_other,uid=1000,gid=1000,umask=0022 0 0

[/cc]

Note: il faut remplacer uid=1000,gid=1000 par les valeurs données par le résultat de la commande « id ».

Un petit…

[cc lang= »bash »]

mount -a

[/cc]

… plus tard et votre répertoire FTP distant devrait être accèssible depuis votre répertoire local /etc/backup !

Source: Linux Config