Catégories
Nagios Open-source Planet-libre Reseau

Script d’installation automatique de Shinken/Thruk

Dans le petit monde des systèmes de supervision système et réseau, un nouveau venu pointe le bout de sa… lame: Shinken.

Développé de main de maître par Jean Gabes (un des spécialiste Français de Nagios), il en reprend la structure au niveau des fichiers de configuration tout en apportant de plus grandes des performances, le tout distribué sous une licence libre AGPL v3. Basée sur le langage Python, il offre une liste pour le moins  impressionnante de fonctions que vous pouvez consultez sur cette page.

Nous allons dans ce premier billet sur le sujet, détailler un script d’installation automatique du couple Shinken + Thruk (interface Web) sur une distribution GNU/Linux Debian (le script doit également fonctionner sur une distribution Ubuntu moyennant, peut être, quelques modifications, notamment l’édition des lignes arch_version et perl_version).

La version actuelle du script, va installer Shinken version 1.0 (à noter que cette version inclue une UI maison) et Thruk 1.1.7. Pour information, ces deux versions peuvent être utilisées dans un environnement de production.

Récupération du script d’auto installation de Shinken/Thruk

Il suffit d’ouvrir un terminal puis de saisir les commandes suivantes:

cd ~

rm -f shinkenautoinstall-debian.sh

wget –no-check-certificate https://raw.github.com/nicolargo/shinkenautoinstall/master/shinkenautoinstall-debian.sh

chmod a+x shinkenautoinstall-debian.sh

Vous pouvez également récupérer le script / remonter des demandes de nouvelles fonctions ou des bugs sur GitHub.

Lancement du script d’auto installation de Shinken/Thruk

Là encore rien de compliqué:

sudo ./shinkenautoinstall-debian.sh

Le script devrait se dérouler tout seul. Il vous demandera juste à un moment donnée de saisir le mot de passe que vous voulez affecter à l’utilisateur Unix shinken.

A la fin de l’installation, le serveur Shinken et l’interface Web Thruk seront lancées automatiquement.

—————————————————-

Installation terminée

—————————————————-

Fichiers de configuration : /etc/shinken

Fichiers de logs : /var/lib/shinken/nagios.log

Script de lancement de Shinken : /etc/init.d/shinken

Script de lancement de Thruk : /etc/init.d/thruk

Interface d’administration : http://@IP:3000

Arrivé à ce stade, vous pouvez éditer la configuration de Shinken (contenue dans le répertoire /etc/shinken) et vous connecter à l’interface Web d’administration (http://@IP:3000 ou @IP est à remplacer par l’adresse IP de votre serveur de supervision).

Petite astuce complémentaire pour les utilisateurs voulant faire transiter les connections vers l’interface d’administration Web par un serveur Web Nginx. Il suffit d’ajouter la configuration suivante dans un fichier de conf Nginx:

server {

listen 80;

server_name nagios.mondomaine.com;

location / {

proxy_pass http://127.0.0.1:3000;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

Toute les requêtes entrantes sur le port TCP 80 et le nom de machine  nagios.mondomaine.com (à adapter à votre serveur) seront redirigées vers Nagios (http://127.0.0.1:3000). Cela permet d’éviter d’avoir à ouvrir un port supplémentaire (le 3000) sur votre serveur…

Que fait exactement le script d’auto installation de Shinken/Thruk ?

Pas grand chose, mis à part:

  • installation des pré-requis système
  • création de l’utilisateur shinken et du groupe associé
  • téléchargement des sources de Shinken et de Thruk
  • mise en place des scripts de démarrage de Shinken et Thruk (init.d)
  • vérification de la configuration de Shinken (l’équivalent de l’option -v de Nagios)
  • premier lancement de Shinken
  • premier lancement de Thruk

Si vous testez ce script sur Debian ou sur une autre distribution, je suis preneur de vos retours.

Sources:

Catégories
Open-source Planet-libre Systeme

Mon desktop 201104

Avec quelques jours de retard, voici le desktop qui va me suivre pendant le beau mois d’avril 2011.

Voici ce que cela donne sans fenêtre:

et avec:

Les principales caractéristiques

Installer de la combo magique (Equinox Evolution Dawn  + Faenza + Nautilus Elementary)

Petit changement avec l’utilisation du thème GTK Equinox Evolution Dawn en lieu et place de Equinox Glass. De petites amélioration bien sympa notamment au niveau des ascenseurs des terminaux qui sont beaucoup plus fins.

Les icônes Faenza sont lisibles et facile à reconnaître et Elementary est pour moi devenu indispensable aux utilisateur de Nautilus:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

Pour activer Equinox, il faut aller dans le menu: “Système > Préférences > Apparences > Thème > Equinox Evolution Dawn“.

Installation de AWN

Si vous suivez cette rubrique, vous avez du vous rendre compte que je suis passé de Docky à AWN. Toutes les explications sont dans ce billet.

Dans mon dock il y a…:

  • Cairo menu
  • Lien vers mes répertoires
  • TodoList
  • Switch écran
  • Barre de lancement rapide (Terminator, Chromium,…)
  • Supervision du CPU
  • Supervision de la température de la carte mère
  • Supervision de la bande passante de mon interface Ethernet
  • La corbeille

Et chromium ?

Pour mettre également Chromium en concordance avec le reste du thème, j’utilise ce thème (point CRX à ouvrir directement dans Chromium).

A vous de nous montrer vos écrans (par exemple en utilisant http://twitpic.com/) !

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

Et un eBook gratuit sur Nagios, un…

On m’a plusieurs fois proposé d’écrire un livre sur Nagios et la supervision système et réseau. J’ai, pour l’instant, refusé ces offres par manque de temps et de motivation. Le Blog de Nicolargo m’occupe déjà  beaucoup et je trouve cette formule plus « interactive » que le support papier.

Cependant, je sais par expérience qu’il est parfois utile d’avoir une documentation papier ou sous la forme d’un simple fichier sur une clés USB. C’est donc pour cette raison que j’ai compilé l’ensemble des billets de ce blog abordant Nagios dans un eBook au format PDF sous licence Creative Common BY NC.

Pour télécharger gratuitement cet eBook, il suffit de cliquer sur l’image suivante:

Je vous rappelle, que l’ensemble des billets sur Nagios est regroupé également sur cette page (vous trouverez encore plus d’informations que dans l’eBook). Si vous voulez être tenu au courant des nouveaux articles, je vous conseille de vous abonner au flux RSS du blog, à mon compte Twitter ou à partir de Facebook.

Bonne lecture !

Catégories
Open-source Reseau

IperfiT, un petit script pour les fans de Iperf

J’utilise actuellement Iperf (voir la liste des billets sur le sujet ici) dans le cadre de tests de performances de réseaux divers et variés. Bien que très simple à utiliser pour une personne avertie, Iperf n’est pas conçu pour automatiser des benchs en faisant varier les cibles et les paramètres.

J’ai donc développé, sous licence LGPL, un script Perl nommé IperfiT qui fait « grosso modo » les choses suivantes lors d’un test entre les machines A (sur lequel le script sera lancé) et B (qui se trouve de l’autre coté du réseau à tester et qui accepte les connexions SSH venant de A):

  • Test de la connectivité avec la machine B (A ping B)
  • Connexion automatiquement en SSH vers la machine B
  • Lancement du serveur IPerf sur la machine B
  • Lancement du client sur la machine A
  • Affichage du rapport venant de l’IPerf de la machine B
  • Arrêt de l’Iperf de la machine B

Les options de la version 0.1 de IperfiT sont les suivantes:

-h: Print the command line help

-v: Print the program version

-q: Quiet mode (no display)

-s <ip>: Server IP address

-n <user>: SSH user name used to connect to the server

-u: Use UDP protocol (default is TCP)

-b: Target bitrate for UDP flow

-t <time>: Test duration, default is 30 sec

-m <mss>: Set the TCP Maximum Segment Size (MTU-40), default 1400 bytes

-w <wsize>: Set the TCP Window Size, default 128 Kbytes

-l <bsize>: Set the R/W Buffer Size, default 8000 bytes

-d <tos>: Set the TOS field (Diffserv), default is 0

Installation de IperfiT

C’est assez simple, je l’ai mis à disposition dans ce répertoire. Vous pouvez également suivre cette procédure:

cd /tmp

wget https://raw.githubusercontent.com/nicolargo/iperfit/master/iperfit.pl

chmod a+rx /tmp/iperfit.pl

cp /tmp/iperfit.pl /usr/local/bin

Utilisation de iperfiT en quelques exemples

Pour un simple test TCP de 5 minutes (300 secondes) vers la machine 192.168.0.100 (login SSH nicolargo) avec une taille MSS de 1200 octets:

iperfit.pl -c 192.168.0.100 -n nicolargo -t 300 -m 1200

Pour lancer un test entre votre machine et la machine d’adresse IP 192.168.0.100 (login SSH nicolargo) en UDP avec une taille de buffer de 170 octets sur une durée de 60 secondes et avec un débit de 64 Kbps, il suffit de saisir la ligne suivante:

iperfit.pl -c 192.168.0.100 -n nicolargo -u -l 170 -t 60 -b 64

Remarque

Si vous avez le message suivant au lancement du programme:

Can’t locate Net/IPv4Addr.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at ./iperfit.pl line 33.BEGIN failed–compilation aborted at ./iperfit.pl line 33.

C’est que vous n’avez pas la librairie Perl IPv4Addr qui est installé, sous Ubuntu/Debian pour remédier à cela il faut saisir la commande suivante:

sudo aptitude install libnetwork-ipv4addr-perl

Si vous avez des améliorations à proposer à ce script je suis à votre écoute !

Catégories
Blog Web

Un blog en héritage ?

L’age aidant, j’ai été emmené à réfléchir sur les questions d’héritages de mes biens au cas au je casserai ma pipe du jour au lendemain. Aucune inquiétude à avoir, je suis en bonne santé et le moral est là mais c’est un fait, tout peut arriver.

Passé les choses importantes (habitation, biens financiers, objets personnels…), tout blogueur est en droit de se poser cette question: « Que deviendra mon blog quand je  ne serais plus là ? ».

En effet, la grande majorité des blog personnels, comme le mien, ne sont gérés que par une seule personne. Celle-ci, en plus de rédiger les billets et de répondre aux commentaires, s’occupe de l’administration système (mise à jour de sécurité)  et des taches administratives (renouvellement du contrat d’hébergement et du nom de domaine).

Si ce bloguer décède, la fin du contrat chez l’hébergeur sonnera comme la fin de vie de son blog qui ne sera plus accessible.  Dur de voir tout son travail et ses données disparaître comme cela. Il existe bien des projets comme Internet Archive qui s’occupe d’archiver votre site à intervalle plus ou moins régulier. Le problème avec ce genre d’archivage est qu’il propose une image de votre site à un instant t. Il ne gère pas les options dynamiques comme les commentaires.

A titre personnel, je souhaiterai que mon blog continu à être accessible aux lecteurs et idéalement qu’il soit repris par des personnes partageant les mêmes intérêts. A ma connaissance, il n’existe pas en dehors du testament, de service permettant de transmettre les informations nécessaires à l’administration d’un site à une ou plusieurs personnes de confiance.

Si certains d’entre vous se sont posés ce genre de questions (blogueur, notaires, hébergeur), je serais curieux d’avoir leurs retours.

Catégories
Blog

Edito presto

Comme vous pouvez le voir, cher lecteur, je ne suis pas très actif sur le blog et sur mon twitter en ce moment. Je suis en pleine bourre coté boulot et cela risque de durée quelques semaines. Je prends donc du retard sur le traitements de mes mails et sur les réponses aux commentaires.

En parallèle, j’essaye quand même un peu de bosser pour vous (« ah quand même ! »). Je vous prépare un petit eBook (vous savez le truc à la mode) au format PDF qui sera un recueil de mes billets sur Nagios, l’outil de supervision des systèmes d’informations.

Je regarde aussi de prêt les solutions de qualité de service que l’on peut implémenter sur le noyau Linux. Je ferais surement un petit billet dessus.

Si vous avez d’autres idées, je suis preneur de vos commentaires !

Catégories
Blog Open-source Web

Le panier du marché libre #8

C’est la saison des pois chiches, alors on prend son petit panier et on va glaner les bons liens de Nicolargo:

En bonus la recette de la socca Niçoise (il ne faut pas faire le petit bras avec le poivre…)

Catégories
Open-source Planet-libre Web

Supprimer les logs Apache « internal dummy connection »

Si comme moi vous avez des tonnes d’entrées du type:

::1 - - [10/Mar/2011:10:41:50 +0000] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"

dans les fichiers de logs de votre serveur Apache, voici une procédure simple pour les supprimer.

On commence par éditer le fichier de configuration /etc/apache2/apache2.conf pour créer un filtre nommé local:

# Filters

SetEnvIf Remote_Addr « 127\.0\.0\.1 » local

SetEnvIf Remote_Addr « \:\:1 » local

Ensuite, on doit activer ce filtre le fichier de définition de votre site (sous le répertoire /etc/apache2/site-enabled). Il faut modifier la ligne suivante:

CustomLog /var/log/apache2/www-access.log combined env=!local

Puis on relance Apache:

sudo apache2ctl restart

Et hop…

Sources:

Catégories
Image Open-source Planet-libre Systeme

Mon desktop 201103

C’est le début du mois, encore un billet pour vous montrer mon desktop pro sous GNU/Linux Ubuntu 10.10 post configuré avec mon script ubuntupostinstall.sh.

Voici ce que cela donne sans fenêtre:

et avec:

Les principales caractéristiques

Installer de la combo magique (Equinox Glass + Faenza + Nautilus Elementary)

Je reste fidèle a cette configuration des fenêtres depuis quelques mois, si vous avez mieux je suis preneur !

Equinox Glass est clair, les icônes Faenza sont lisibles et facile à reconnaître et Elementary est pour moi devenu indispensable aux utilisateur de Nautilus:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

Pour activer Equinox, il faut aller dans le menu: “Système > Préférences > Apparences > Thème > Equinox Glass“.

Installation de AWN

Si vous suivez cette rubrique, vous avez du vous rendre compte que je suis passé de Docky à AWN. Toutes les explications sont dans ce billet.

Dans mon dock il y a…:

  • Cairo menu
  • Lien vers mes répertoires
  • TodoList
  • Switch écran
  • Barre de lancement rapide (Terminator, Chromium,…)
  • Supervision du CPU
  • Supervision de la température de la carte mère
  • Supervision de la bande passante de mon interface Ethernet
  • La corbeille

A vous de nous montrer vos écrans (par exemple en utilisant http://twitpic.com/) !

Catégories
Gstreamer Open-source Planet-libre Video Web

Un serveur RTSP basé sur GStreamer

Dans le petit monde du streaming vidéo, RTSP est un protocole permettant à un client (lecteur multimédia) de contrôler un serveur (serveur de streaming) en lui envoyant des ordres simples: lire, pause, stop, déplacement temporel (pour avoir une liste des fonctions théoriquement disponibles, vous pouvez lire la RFC 2326). Il est important, pour comprendre la suite de ce billet que le protocole RTSP ne fait pas lui même le streaming vidéo (il utilise pour cela le protocole RTP). RTSP est juste une couche complémentaire permettant de contrôler ce streaming.

Nous allons dans ce billet étudier un serveur basé sur le framework GStreamer. Maintenu par Wim Taymans, un des développeurs de GStreamer, gst-rtsp se compose d’un ensemble de librairies permettant de concevoir simplement son propre serveur RTSP. Pour effectuer des tests, les développeurs fournissent quelques exemples de serveurs.

Installation de gst-rtsp

On commence par récupérer les sources puis à compiler:

mkdir ~/src

cd ~/src

wget http://gstreamer.freedesktop.org/src/gst-rtsp/gst-rtsp-0.10.8.tar.bz2

bzip2 -d gst-rtsp-0.10.8.tar.bz2

tar xvf gst-rtsp-0.10.8.tar

cd gst-rtsp-0.10.8/

./configure

make

Premier streaming RTSP: la mire

On commence par lancer le serveur de test qui va streamer une mire:

cd examples/

./test-readme

Le serveur est maintenant lancé, en écoute sur le port TCP/8554 et l’URL: rtsp://127.0.0.1:8554/test

Note: si vous lancer le client sur une autre machine il faut bien sur remplacer 127.0.0.1 par l’adresse IP (ou le nom d’hôte) de votre serveur.

Si on regarde le code C de ce premier serveur (./test-readme.c), on peut retrouver la pipeline GStreamer qui va s’occuper de diffuser le flux sur le réseau:

videotestsrc is-live=1 ! x264enc ! rtph264pay name=pay0 pt=96

On a donc la génération de la mire avec videotestsrc, puis un encodage H.264 avec x264enc puis enfant un streaming RTP avec rtph264pay.

Pour lire se genre de flux, on peut utiliser plusieurs logiciels. Le plus « populaire » est le très frenchie VLC. On lance donc le logiciel puis on va dans le menu Média / Ouvrir un flux réseau, puis on entre l’URL: rtsp://127.0.0.1:8554/test

Après quelques secondes, la vidéo devrait s’afficher:

On peut aussi utiliser FFplay (le player basée sur FFmpeg):

ffmplay rtsp://127.0.0.1:8554/test

Ou bien directement une pipeline GStreamer, ce qui ouvre la porte à des post traitements:

gst-launch -v rtspsrc location=rtsp://127.0.0.1:8554/test ! queue ! decodebin ! ffmpegcolorspace ! autovideosink

Il est bien sur possible de lancer plusieurs clients vers la même source RTSP (j’ai testé 3 clients en parallèle).

Une mire c’est bien, un fichier MPEG-4 c’est mieux

Les esprits chagrins vont me dire que pour tester les fonctions de seekink (déplacement temporel) avec une mire ce n’est pas terrible… Nous allons donc streamer une vidéo MPEG-4 (j’ai utilisé le logiciel Avidemux pour produire une vidéo de 640×360 en MPEG-4 ISO à partir d’une source Big Buck Bunny 720p AVI).

On va lancer le serveur avec les commandes suivantes (toujours dans le sous répertoires examples):

./test-mp4 ~/big_buck_bunny_360p_surround.mp4

Lecture à partir de VLC:

On a alors, pour cette vidéo, un flux réseau entre le serveur et le client variant entre 350 et 550 Kbps. Ceci est normal car la pipeline suivante que l’on peut trouver dans le fichier test-mp4.c ne fait en fait aucun transcodage. Comme la vidéo n’a pas été encodé en CBR (constant bit rate) on se retrouve avec des variations de débits:

filesrc location=%s ! qtdemux name=d d. ! queue ! rtph264pay pt=96 name=pay0 d. ! queue ! rtpmp4apay pt=97 name=pay1

Coté occupation CPU du coté client je suis à environ 25% sur un Core 2 à 1.8 Ghz.

Capture réseau

Pour les plus curieux d’entre vous, voici le résultat d’une capture réseau entre mon serveur RTSP (192.168.29.79) et un client (192.168.29.148).

On peut notamment y voir la négociation RTSP avec la liste des fonctions disponibles sur le serveur (OPTIONS, DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, SET-PARAMETER, TEARDOWN) puis le début du streaming RTP.

Conclusion

Bien qu’en développement, ce projet de serveur RTSP basé sur GStreamer est très stable (je n’ai pas rencontré de plantage lors de mes tests) et facile à intégrer dans un développement en C. Si vous voulez faire mumuse et développer votre propre serveur, je vous conseille la lecture du fichier README qui se trouve dans le sous répertoire docs.

A vos serveurs !