Catégories
Open-source Planet-libre Reseau Systeme

Installation et configuration de Munin, le maître des graphes

Munin est un logiciel de supervision permettant de centraliser la gestion des graphes de données RRDTools. Il permet en quelques commandes que nous allons détailler dans ce billet de générer des graphes complexes pour surveiller vous machines et les processus qui tournent dessus.

Voici un exemple de graphe sur les statistiques remontées par un serveur utilisant Varnish:

Introduction

Munin est proposé sous la forme de deux packages complémentaires: munin et munin-node.

Le premier (munin) est à installer sur votre serveur de supervision (appelé maître). Son objectif principal est de récupérer les données venant des machines à surveiller puis de générer des graphes qui seront présentés aux utilisateurs via une interface Web.

Le second  (munin-node) est à installer sur toutes les machines à superviser (appelées noeuds). Son objectif est de collecter les informations systèmes en utilisant des plugins (présent dans le package munin-node et dans munin-plugins-extra).

La communication entre le serveur maître et les machines noeuds utilise, par défaut le protocole TCP/4949 (initialisation de la connexion TCP de la part du serveur maître).

Installation de Munin

Pour la suite de ce billet (et sauf mention spécifique), je partirai sur le principe ou vous utilisez des machines sous Debian/Ubuntu.

Installation de Munin sur le serveur maître

Le serveur maître doit disposer d’un serveur Web (voir ce billet pour installer simplement NGinx sur votre système) configuré avec le répertoire root par défaut: /var/www.

Comme Munin est présent dans les dépôts officiels, il suffit de saisir la commande suivant qui va installer le package maître ainsi que le package esclave histoire de pouvoir superviser son serveur de supervision…:

sudo apt-get install munin munin-node munin-plugins-extra

sudo ln -s /var/cache/munin/www /var/www/munin

sudo /etc/init.d/munin-node restart

En faisant pointer un navigateur Web vers l’URL:

http://votreserveurdesupervision/munin

Vous devriez voir s’afficher les statistiques de votre serveur. Il faut attendre quelques minutes avant de voir les premiers graphes, le temps que les bases de données soient renseignées.

Installation de Munin sur les machines noeuds

Installation des noeuds sous GNU/Linux

Là encore c’est assez simple:

sudo apt-get install munin-node munin-plugins-extra

La configuration de Muni sur les machines noeuds est centralisée dans le fichier /etc/munin/munin-node.conf. Il faut éditer ce fichier pour y configurer l’adresse IP de votre serveur maître à la ligne suivante:

# A list of addresses that are allowed to connect. This must be a

# regular expression, since Net::Server does not understand CIDR-style

# network notation unless the perl module Net::CIDR is installed. You

# may repeat the allow line as many times as you'd like

allow ^192\.168\.1\.200$

Cette configuration (à adapter à votre besoin) va autoriser la machine maître d’adresse IP 192.168.1.200 à se connecter sur cette machine noeud pour y récupérer les données à superviser.

Il faut ensuite relancer le service Munin-node pour faire prendre en compte la nouvelle configuration:

sudo /etc/init.d/munin-node restart

Installation des noeuds sous Windows

Le projet Munin ne fourni pas de « node » pour WIndows, il faut donc se retourner du coté de la communauté pour trouver notre bonheur. En l’occurrence du coté du logiciel Munin-Node-Win32 disponible au téléchargement sur cette page.  Il suffit de lancer l’installer pour que l’installation et le lancement du processus en tache de fond soit effectué (procédure testé sous Windows 7).

Installation des noeuds sous MacOS

Si vous avez à surveiller des machines sous Mac OS X, il va falloir mettre un peu plus les mains dans le cambouis. En effet, il faut obligatoire passer par l’installation des gestionnaires de paquets Fink ou MacPorts. Je vous conseille la lecture du Wiki officiel.

Configuration des plugins sur les machines noeuds

Nous allons voir dans cette sections comment configurer ce que l’on souhaite superviser sur les machines noeuds. Munin utilise le fichier  /etc/munin/plugin-conf.d/munin-node (ainsi que tous les fichiers se trouvant dans le même répertoire) pour configurer les paramètres des plugins (bien souvent de simples script Perl).

Le répertoire /etc/munin/plugins/ contient la liste des plugins utilisables par la machine noeud et le répertoire /usr/share/munin/plugins/ l’ensemble des plugins. En y regardant de plus prêt, le répertoire  /etc/munin/plugins/ fait des liens symboliques vers le répertoire /usr/share/munin/plugins/.

Pour voir la liste des plugins disponibles sur le noeud, on peut utiliser:

# sudo munin-node-configure

Exemple de l’ajout des plugins NGinx (permettant de surveiller un serveur Web NGinx) sur un noeud:

Pour faire prendre en compte un nouveau plugin sur un noeud (node) il faut faire un lien symbolique entre le fichier en question dans ce répertoire et /etc/munin/plugins/. Par exemple pour accéder aux stats de mon serveur NGinx:

sudo ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status

sudo ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request

Il est quelquefois necessaire d’installer des dependances pour que le plugin fonctionne.

Pour voir les dépendances nécessaire il suffit de saisir la commande:

sudo munin-node-configure --suggest | grep nginx

nginx_request | yes | no [LWP::UserAgent not found]

nginx_status | yes | no [LWP::UserAgent not found]

Il faut donc installer la librairie perl contenant le module LWP qui est présente dans le package libwww-perl sur Debian/Ubuntu:

sudo apt-get install libwww-perl

Cela a l’air OK:

sudo munin-node-configure --suggest

nginx_request | yes | yes

nginx_status | yes | yes

On peut faire prendre en compte la configuration par Munin-node:

sudo /etc/init.d/munin-node restart

Configuration du maître pour prendre en compte les machines noeuds

Une fois toutes vos machines noeuds configurés (voir le chapitre précédant), il faut maintenant modifier la configuration du serveur maître pour les prendre en compte. Là encore, fidèle à la philosophie Unix, la configuration est centralisé dans le fichier /etc/munin/munin.conf.

En plus des répertoires systèmes en début de fichier:

# The next three variables specifies where the location of the RRD

# databases, the HTML output, logs and the lock/pid files. They all

# must be writable by the user running munin-cron. They are all

# defaulted to the values you see here.

#

dbdir /var/lib/munin

htmldir /var/cache/munin/www/

logdir /var/log/munin

rundir /var/run/munin

Il faut configurer la liste des noeuds de la manière suivante:

# A simple host tree for mondomaine.com

[maitre.mondomaine.com]

address 127.0.0.1

[noeud1.mondomaine.com]

address noeud1.mondomaine.com

[noeud2.mondomaine.com]

address noeud2.mondomaine

Reste à relancer le serveur Munin pour prendre en compte la configuration:

su - munin --shell=/bin/bash

/usr/share/munin/munin-update

exit

En faisant pointer un navigateur Web vers l’URL:

http://votreserveurdesupervision/munin

Puis par exemple les graphes sur l’occupation mémoire:

Pour voir une démonstration en ligne des capacités de Munin, vous pouvez consulter ce serveur maître qui est en accès libre.

Plus de plugins ?

Un des gros avantage de Munin est le fait de pouvoir simplement écrire de nouveaux plugins en utilisant votre langage favori (nous reviendrons bientôt sur ce sujet dans un prochain billet).  Pas mal d’exemples sont proposés  dans le dépôt GitHub suivant (vous devriez trouver votre bonheur).
Catégories
Open-source Planet-libre Systeme Web

NGinx – Protéger son site avec une authentification simple HTTP

Un petit billet « flash express » pour  protéger son site (ou un répertoire de son site) avec une authentification simple (type login/password) sur un serveur NGinx.

Pré-requis

Il faut disposer d’un serveur NGinx bien configuré (par exemple en utilisant ce script d’auto-installation pour Debian ou Ubuntu) puis du logiciel htpasswd que l’on peut installer sous Debian/Ubuntu avec la commande suivante:

[cc]

sudo apt-get install apache2-utils

[/cc]

Création du fichier .htpasswd

Ce fichier va contenir, de manière chiffré, le mot de passe associé à l’utilisateur. La commande à utiliser pour créer ce fichier est la suivante:

[cc]

sudo htpasswd -c /var/www/.htpasswd nicolargo

New password:

Re-type new password:

Adding password for user nicolargo

[/cc]

Ou:

  • -c est une option pour créer le fichier (sans cette option, le couple login/password est ajouté)
  • /var/www/ est l’emplacement du fichier .htpasswd. Le contenu du répertoire /var/www/ (donc la racine de mon site Web) sera donc protégée par le couple login/password
  • nicolargo est le nom de l’utilisateur (login)
  • ilfaut sasir deux fois le mot de passe (password)

Configuration de NGinx

Pour que NGinx puisse gérer les fichiers .htpasswd, il faut ajouter modifier la configuration de son site (à  adapter selon votre configuration):

[cc]

server {

listen 80;

server_name localhost;

root /var/www;

# Static

location / {

index index.html index.htm;

auth_basic « Login »;

auth_basic_user_file /var/www/.htpasswd;

}

# Protect hidden file to read/write access

location ~ /\. {

deny all;

}

}

[/cc]

Après avoir rechargé la configuration:

[cc]

sudo /etc/init.d/nginx restart

[/cc]

Il ne reste plus qu’à…

Tester

En pointant un navigateur sur le site en question, une bannière d’authentification va apparaitre:

 

Note sur la sécurité

Attention de ne PAS utiliser se mécanisme pour protéger des informations sensibles. En effet il n’y a pas de chiffrement des données lors de la transmission en HTTP entre le navigateur et le serveur et le fichier .htpasswd peut être récupéré en cas de corruption de votre serveur…

Catégories
Open-source Planet-libre Web

MyTinyTodo, un outil « TODO list » auto-hébergé et libre

Etant à la recherche d’un outil auto-hébergé, en ligne et libre pour gérer la liste des taches de ma vie quotidienne j’ai lancé un petit sondage sur Twitter. L’étude de vos réponses m’a permis de découvrir le script PHP MyTinyTodo dont je vais détailler l’installation et la configuration dans ce billet.

Introduction

MyTinyTodo (licence GPL) est donc un script PHP (il a donc besoin d’un serveur Web avec le support de ce langage) fonctionnant avec une base de donnée MySQL ou SQLite (j’ai choisi cette deuxième option).

Je pars donc sur le principe que vous disposez d’un serveur Web avec le support de PHP configuré pour pointer par défaut sur le répertoire /var/www (pour arriver à une telle configuration sous Debian vous pouvez utiliser mon script d’auto-installation de NGinx + PHP-FPM).

Certaines commandes nécessites des droits d’administration sur votre machine. J’utilise ‘sudo’ pour les exécuter  mais il est également possible de les saisir dans un terminal root.

Pré-requis

En plus du serveur Web et du support PHP, MyTinyTodo a besoin des librairies pour communiquer avec la base de donnée.

Si vous utilisez MySQL il faut saisir la commande:

[cc]

sudo apt-get install php5-mysql

[/cc]

Si comme moi vous préférez SQLite il faut installer la librairie de la manière suivante:

[cc]

sudo apt-get install php5-sqlite

[/cc]

On doit dans tous les cas relancer le serveur PHP-FPM pour prendre en compte la configuration:

[cc]

sudo /etc/init.d/php-fpm restart

[/cc]

Installation de MyTinyTodo

On commence par récupérer le script MyTinyTodo puis de le mettre au bon endroit sur notre système (c’est à dire dans le répertoire racine du serveur Web: /var/www).

[cc]

cd `mktemp -d`

wget http://mytinytodo.googlecode.com/files/mytinytodo-v1.4.2.zip

unzip mytinytodo-v1.4.2.zip

sudo mv mytinytodo /var/www

wget http://www.mytinytodo.net/lang/zip/fr.zip

unzip fr.zip

sudo mv fr.php /var/www/mytinytodo/lang/

sudo chown -R www-data:www-data /var/www/mytinytodo

[/cc]

Il faut ensuite faire pointer un navigateur Internet vers l’adresse de votre serveur:

http://votreserveur.com/mytinytodo/setup.php

La page suivante devrait s’afficher:

Puis:

Et enfin:

Pour éviter que des gens mal attentionnés modifient votre configuration, il est conseillé d’effacer le fichier setup.php de votre système:

[cc]

sudo rm /var/www/mytinytodo/setup.php

[/cc]

Configuration initiale

Vous pouvez maintenant accéder à votre système de « TODO list » est saisissant l’URL suivante:

http://votreserveur.com/mytinytodo/

Nous allons commencer par appliquer une configuration initiale (langue, fuseau horaire, protection par mot de passe…):

Voici mes paramètres à adapter à vos besoins:

Utilisation

Il ne reste plus qu’à créer des onglets (j’ai pris comme habitude d’avoir un onglet par type d’activité: perso, blog, boulot…) et de saisir vos taches:

Il existe pas mal d’options, une des plus intéressante de mon point de vu est de pouvoir partager un onglet (donc une liste de taches) à travers un flux RSS, pour cela il suffit de deux clics:

Conclusion

MyTinyTodo remplit parfaitement son rôle. Sans fioriture mais avec souplesse et légèreté. J’ai laissé tombé le service en ligne RememberTheMilk (par ailleurs très bien fait) pour mon service MyTinyTodo auto hébergé :).

Update (26/01/2012): Si vous préférez utiliser le couple Apache/Mysql en lieu et place de NGinx/SQLite, je vous conseille la lecture du billet de Jidey sur le blog « Pelle la tarte ».

Catégories
Developpement Open-source Planet-libre Systeme

Les nouveautés de Glances 1.3.6

Glances, mon logiciel de supervision système en mode console vient de sortir en version 1.3.6.

Voici les nouveautés:

  • Les statistiques du panneau de gauche peuvent être masqués ou affichés à la demande en cliquant sur les touches ‘n‘ (interfaces réseau), ‘d‘ (entrées/sorties disques) et ‘f‘ (espaces disques).
  • Un panneau d’aide s’affiche quand on clique sur la touche ‘h‘.
  • En plus du « man », il est possible d’afficher le manuel en lançant glances avec les options -h ou –help.
  • Glances est maintenant disponible en Anglais (langue par défaut), en Français ou en Espagnol grâce à la contribution de Jean Bob.
  • Optimisation de l’affichage sur des terminaux > 80×24 caractères.
  • … et bien sûr son lot de corrections de bugs et ajout de contrôles lors du lancement de l’application.

Voici un aperçu de l’interface de la version 1.3.6 de Glances:

Vous trouverez plus d’informations ainsi que la procédure d’installation dans le billet suivant.

Catégories
Gstreamer Musique Open-source Planet-libre

Musique en qualité Studio Masters à partir de votre PC GNU/Linux

Définition: « Est considéré comme étant de qualité Studio Masters tout fichier dont au moins l’échantillonnage ou la quantification sont supérieurs à celle de la qualité CD. Pour rappel, un CD a un échantillonnage de 44,1 kHz et une quantification de 16 bits.« 

La manière d’écouter la musique est certainement une des choses qui a changé le plus radicalement ces 10 dernières années. Contrairement à la vidéo et à l’utilisation des format HD, ce changement s’est accompagné d’une baisse globale de la qualité de la source musicale. En effet, les stores proposent majoritairement des fichiers musicaux compressés en utilisant des codecs avec perte d’information (MP3, MP4, Vorbis…). Si cette perte d’information est négligeable pour une écoute grand public avec votre baladeur ou depuis votre PC, il en est autrement sur une chaîne HIFI de bonne qualité. On se retrouve alors avec une source qui n’est plus en adéquation avec le matériel, celui-ci se trouvant sous exploité.

Nous allons donc voir dans ce billet comment télécharger et exploiter des fichiers musicaux en qualité supérieure au format CD (Studio Masters) sur nos chers machines GNU/Linux. Avant de commencer, voici le matériel que j’ai utilisé pour rédiger ce billet:

  • chaîne HIFI Cambridge avec un DAC Audio Magic de la même marque (voir le test ici) et casque audio AKG K450 et/ou enceintes B&W 685
  • PC sous Ubuntu 11.10 avec la suite logiciel libre Sox
  • MacBook Pro avec sortie audio optique pour exploiter les fichiers > 44.1 kHz (mon PC sous Ubuntu ne disposant pas de sortie audio numérique et l’entrée USB du DAC Cambridge est limité à 44.1 khz)
  • un album en qualité StudioMaster (24 bits / 96.0 kHz) acheté sur le site Qobuz

Obtenir une source « Studio Masters »

Comme nous l’avons vu en introduction, les « stores leaders » sur le marché ne propose pas de formats de fichiers supérieurs à la qualité CD. Il faut donc se retourner sur les boutiques spécialisés dans la haute définition comme par exemple Qobus. Bien que leur catalogue « Studio Masters » ne soit pas très étoffé, c’est quand un même un point d’entrée.

J’ai donc acheté l’album « Audio, video, Disco. » du Groupe Français Justice. en qualité FLAC 24 bits / 96 kHz. (15€ soit 3€ plus cher que la qualité CD et 5€ de plus que la qualité MP3).

Qui dit qualité Studio Masters, dit fichiers de taille importante, il faut donc télécharger presque 1 Go pour un album.

Installation de SoX, le couteau Suisse des logiciels audio HQ

SoX est un ensemble de logiciels permettant de manipuler, en ligne de commande tout type de fichier musicaux.

Pour installer SoX sur votre distribution Ubuntu, rien de plus simple:

[cc]

sudo aptitude install sox libsox-fmt-all

[/cc]

SoX se compose des commandes suivantes:

  • soxi pour obtenir des informations sur un fichier audio
  • rec pour enregistrer dans un fichier audio le son venant d’un de vos périphérique d’entrée
  • play pour jouer vos fichiers audio sur la sortie définie par votre système (analogique, numérique, USB…)
  • sox pour convertir, ajouter des effets dans un fichier audio

Utilisation des fichiers Studio Masters

« Commençons pas le commencement » en utilisant la commande soxi sur les fichiers Studio Masters téléchargés sur Qobus.

[cc]

soxi 01-01-Justice-Horsepower-SMR.flac

[/cc]

On obtient le résultat suivant:

Input File     : '01-01-Justice-Horsepower-SMR.flac'
Channels       : 2
Sample Rate    : 96000
Precision      : 24-bit
Duration       : 00:03:40.09 = 21128600 samples ~ 16506.7 CDDA sectors
File Size      : 89.9M
Bit Rate       : 3.27M
Sample Encoding: 24-bit FLAC
Comments       :
ALBUM=Audio, Video, Disco.
TITLE=Horsepower
TRACKNUMBER=1
TRACKTOTAL=11
DISCNUMBER=1
DISCTOTAL=1
DATE=2011
COPYRIGHT=Ed Banger Records Because Music
GENRE=Electro
ALBUMARTIST=Justice
ARTIST=Justice
DESCRIPTION=Interprètes : Justice, performer; Gaspard Augé, composer & author; Xavier de Rosnay, composer & author
Label : Ed Banger Records Because Music - Because

Les informations « intéressantes » pour notre sujet sont le « sample rate » et la « precision » respectivement aux valeurs 96 kHz et 24 bits.

En utilisant la commande play, j’ai joué ce fichier depuis mon PC Ubuntu branché via un câble USB sur l’entrée USB de mon DAC Cambridge. Comme la documentation du DAC l’annonçait, le fichier est joué en 44,1 kHz car le port USB est seulement en version 1 donc avec un débit insuffisant pour du 96 kHz (plus de 3 Mbps).

[cc]

play 01-01-Justice-Horsepower-SMR.flac

[/cc]

01-01-Justice-Horsepower-SMR.flac:

 File Size: 89.9M     Bit Rate: 3.27M
  Encoding: FLAC          Info: Interprètes : Justice, performer; Gaspard Augé, composer & author; Xavier de Rosnay, composer & author
Label : Ed Banger Records Because Music - Because

  Channels: 2 @ 24-bit   Track: 1 of 11
Samplerate: 96000Hz      Album: Audio, Video, Disco.
Replaygain: off         Artist: Justice
  Duration: 00:03:40.09  Title: Horsepower

In:7.33% 00:00:16.13 [00:03:23.96] Out:1.55M [  ====|====- ] Hd:5.9 Clip:0

La qualité est cependant au rendez-vous. Surtout si je fais la comparaison avec le même morceau compressé en MP3 à 320 Kbps.

Note: les DAC récents proposent des entrées USB 2 supportant des entrées en 24 bits/ 96 kHz (comme le très bon HRT Music Streamer II à moins de 200€ que j’ai eu la chance d’écouter chez un ami).

En jouant le même fichier depuis mon Mac BookPro en utilisant la sortie jack optique (c’est quand même la classe le matériel chez Apple) connecté via un câble Jack – TosLink S/PDIF sur mon DAC Cambridge, je dois avouer (comme pour mon premier billet sur le sujet) que la différence n’est pas flagrante. J’ai donc décidé de faire un « blind test » en passant d’une source 24 bits/ 96 kHz (Mac) à la même source mais « resampler » à 24 bits / 44.1 kHz par le DAC (PC Ubuntu).

Résultat des courses: 7 fois sur 10, j’ai préféré le morceau en 24 bits/ 96 kHz.

Manipuler ses fichiers audio avec SoX

Nous allons maintenant passer à la partie ludique de ce billet en manipulant nos fichiers audio avec les différentes fonctions offertes par SoX.

Resampling: de « Studios Masters » vers CD

Pour transformer notre fichier source Studio Masters (24 bits/ 96 kHz) dans un fichier au format CD (16 bits/ 44.1 kHz), il faut saisir la commande suivante:

[cc]

sox -S 01-01-Justice-Horsepower-SMR.flac -b 16 01-01-Justice-Horsepower-SMR-16bits-44.1kHz.flac rate -h -I -b 90 44100

[/cc]

Notes sur les options:

  • -S permet d’avoir une barre de progression qui s’affiche sur l’écran
  • -b 16 force un resampling en 16 bits (compatible CD)
  • rate -h -I -b 90 44100: resampling de haute qualité en 44.1 kHz

Après une dizaine de secondes de traitement, vous devriez obtenir un fichier de 27 Mo (contre 86 Mo pour la source):

[cc]

soxi 01-01-Justice-Horsepower-SMR-16bits-44.1kHz.flac

[/cc]

Input File     : '01-01-Justice-Horsepower-SMR-16bits-44.1kHz.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:03:40.09 = 9705951 samples = 16506.7 CDDA sectors
File Size      : 28.1M
Bit Rate       : 1.02M
Sample Encoding: 16-bit FLAC
Comments       :
ALBUM=Audio, Video, Disco.
TITLE=Horsepower
TRACKNUMBER=1
TRACKTOTAL=11
DISCNUMBER=1
DISCTOTAL=1
DATE=2011
COPYRIGHT=Ed Banger Records Because Music
GENRE=Electro
ALBUMARTIST=Justice
ARTIST=Justice
DESCRIPTION=Interprètes : Justice, performer; Gaspard Augé, composer & author; Xavier de Rosnay, composer & author
Label : Ed Banger Records Because Music - Because

Conversion en MP3

SoX reconnait le format MP3, il est donc simple comme bonjour de transformer notre source loss-less en MP3:

[cc]

sox -S 01-01-Justice-Horsepower-SMR.flac -r 44100 01-01-Justice-Horsepower-SMR-16bits-44.1kHz.mp3 rate -h -I -b 90 44100

[/cc]

Mais…

…  même si la conversion se passe sans problème, le fichier obtenu à un débit de 128 Kbps (donc un MP3 de très mauvaise qualité). Je n’ai trouvé nulle part une option pour encoder à un débit plus important. Si vous avez une idée je suis preneur (avec SoX bien sûr…).

Il est toujours possible d’utiliser SoX pour resampling et lame (sudo apt-get install lame) en utilisant un pipe comme le montre la ligne de commande suivante:

[cc]

sox -S 01-01-Justice-Horsepower-SMR.flac -r 44100 – rate -h -I -b 90 44100 | lame –preset insane – 01-01-Justice-Horsepower-SMR-16bits-44.1kHz.mp3

[/cc]

Et encore…

Voici quelques exemples en bonus (les commentaires sont là pour en ajouter d’autres):

Mixer plusieurs sources audio entre elles en conservant les volumes d’origines:

[cc]

sox -m source1.flac source2.flac destination.flac

[/cc]

Mixer plusieurs sources audio entre elles en mettant tous les volumes au même niveau:

[cc]

sox –combine mix-power source1.flac source2.flac destination.flac

[/cc]

Enregistrer dans un fichier FLAC (par défaut en 16 bits et 48 kHz) le son venant du périphérique d’entrée par défaut de votre PC:

[cc]

rec test.flac

[/cc]

Enregistrer dans un fichier FLAC (16 bits et 8 kHz, adapté à la voix) le son venant du périphérique d’entrée par défaut de votre PC:

[cc]

rec -r 8000 test.flac

[/cc]

 Pour trouver d’autres exemples d’utilisation de SoC, je vous conseille la lecture des ce billet ou de celui-là.
Catégories
Open-source Planet-libre Systeme

Créer un dépôt Debian local sans liaison Internet

Vous êtes sur un réseau sans accès Internet et vous devez installer et maintenir plusieurs machines Debian ?

Ce scénario s’étant présenté à moi, j’ai décidé d’installer sur ce réseau isolé  un dépôt Debian local que j’ai construit à partir des 8 DVD d’installation de la version 6.0.3 de Debian Squeeze.  Nous allons donc dans ce billet voir la marche à suivre, étape par étape.

Construction du dépôt local

Pour effectuer cette action, il faut:

  • les DVD d’installation de la Debian 6.0.x ou toutes les images ISO des DVD d’installation de Debian 6.0.x (à télécharger ici)
  • une machine sous Debian qui hébergera le dépôt local (donc avec un minimum de 50 Go de disque disponible)
  • du temps…

On commence par faire une installation standard de Debian 6.

On créé ensuite un répertoire qui contiendra le dépôt local (/data/debian dans mon exemple qui est en fait un point de montage sur un deuxième disque dur):

mkdir /data/debian

Si vous avez les DVD…

On copie les fichiers .deb des DVD dans ce répertoire en utilisant insérant le DVD dans le lecteur puis en saisissant la commande suivante (action à répéter pour les 8 DVD):

for f in $(find /media/cdrom/debian/pool/ -type f); do cp $f -t /data/debian; done

Si vous avez les images ISO…

Si comme moi vous avez copié les images ISO des DVD sur un NAS (monté dans le répertoire /mnt/nas/iso/debian) alors vous pouvez utiliser cette commande en lieu et place de la précédante:

mkdir -p /mnt/iso
for i in `ls /mnt/nas/iso/debian`
do
  mount -o loop /mnt/nas/iso/debian/$i /mnt/iso
  for f in $(find /mnt/iso/debian/pool -type f)
  do 
    echo $f
    cp $f -t /data/debian
  done
  umount /mnt/iso
done

A la fin de ces opérations, le répertoire /data/debian devrait contenir l’ensemble des paquets .deb constituant la distribution stable de Debian Squeeze (pour une taille d’environ 35 Go).

On passe ensuite à la création des deux fichiers qui vont permettre de transformer ce répertoire en un dépôt Debian: les fichiers Release et Packages.gz.

Le fichier Release

On commence par le fichier Release (à mettre dans le répertoire /data/debian) qui décrit le le dépôt. C’est un fichier texte à créer avec votre éditeur favori:

Archive: squeeze

Component: main

Origin: Nicolargo

Label: Le depot de Nicolargo

Architecture: amd64

Les lignes importantes sont:

Archive: squeeze > Ce dépôt sera utilisable par des machines sous Debian 6 (nom de code Squeeze)

Component: main > Ce dépôt contient les composant principaux de la distribution Debian 6

Architecture: amd64 > Ce dépôt sera utilisable par des machines 64 bits

Le fichier Packages.gz

On continu ensuite avec le fichier Packages (compressé avec Gzip) qui contiendra la description (nom, version , description, dépendances…) de tous les paquets .deb se trouvant dans le répertoire. Il est bien sur impossible de construire ce fichier à la mimine. Nous allons donc utiliser l’utilitaire dpkg-scanpackages.

cd /data/debian

dpkg-scanpackages ./ /dev/null | gzip -9c > Packages.gz

Cette opération va prendre un certain temps… Soyez patient…

Test local du dépôt

Avant d’utiliser ce dépôt sur d’autres machines, il faut dans un premier temps le tester sur notre machine hébergeant le dépôt. Pour cela il faut éditer le fichier /etc/apt/sources.list pour y laisser seulement la ligne suivante:

deb file:///data/debian ./

On met ensuite à jour la base APT de notre machine:

apt-get update

Installation du serveur Web pour proposer le dépôt à d’autres machines

Pour que votre dépôt soit visible depuis les autres machines de votre réseau, le plus simple est d’y installer un serveur Web qui va présenter le répertoire /data/debian en utilisant le protocole HTTP.

Personnellement, j’utilise le serveur Web NGinx:

apt-get install nginx

Puis en éditant le fichier /etc/nginx/sites-enabled/defaults:

server {

listen 80;

server_name localhost;

access_log logs/debianrepos.access.log main;

location /debian {

root /data;

autoindex on;

}

}

On relance NGinx pour prendre en compte la configuration:

/etc/init.d/nginx restart

Utilisation du dépôt local

Pour utiliser notre beau dépôt local sur une autre machine Debian Squeeze, il suffit d’éditer le fichier /etc/apt/sources.list pour y laisser seulement la ligne suivante:

deb http://192.168.1.100/debian ./

Ou 192.168.1.100 est à remplacer par l’adresse IP du serveur hébergeant votre dépôt.

On met ensuite à jour la base APT de notre machine:

apt-get update

Il ne reste plus qu’a installer vos logiciels en utilisant la commande apt-get install !

Sources pour la rédaction de ce billet:

Catégories
Open-source Planet-libre Systeme

Pense-bête: un deuxième disque dur pour votre GNU/Linux

Petit pense-bête à usage interne pour installer (= partitionner & formater) un deuxième disque dur au format ext4 sur une distribution GNU/Linux.

Notes: les commandes suivantes doivent être effectuées depuis un compte root.

Préparation

On commence par vérifier la liste des disques disponibles avec la commande:

[cc]
# fdisk -l
[/cc]

J’obtiens:

Disk /dev/sda: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f7a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1998    16043008   83  Linux
/dev/sda2            1998        2089      731137    5  Extended
/dev/sda5            1998        2089      731136   82  Linux swap / Solaris

Disk /dev/sdb: 34.4 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

J’ai donc deux disques disponibles (je suis sur une VM donc ne vous étonnez pas des tailles):

  • /dev/sda: d’une taille de 17.2 GB avec 3 partitions (sda1, sda2, sda5)
  • /dev/sdb: d’une taille de 34.4 GB sans partition

C’est ce deuxième disque (sdb) que l’on souhaite installer

Partitionnement

On commence donc par partitionner le disque en question:

[cc]
# fdisk /dev/sdb
[/cc]

Notes: Faites bien attention à lancer la commande fdisk sur le bon disque…

une seule grosse partition qui utilisera la totalité de l’espace disque:

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x852ed7ac.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4177, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4177, default 4177): 
Using default value 4177

Puis on demande à fdisk de lui affecter le type ‘Linux’

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83

Puis on valide:

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

La partition que l’on vient de créer portera le nom sdb1.

Formatage en ext4

On utilise ensuite la commande mkfs.ext4 pour formater la partition au format EXT4

[cc]
# mkfs.ext4 -b 4096 /dev/sdb1
[/cc]

mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2097152 inodes, 8387930 blocks
419396 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
256 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Vérification

On vérifie que tout c’est bien passé:

[cc]
# fdisk -l
[/cc]

Disk /dev/sda: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f7a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1998    16043008   83  Linux
/dev/sda2            1998        2089      731137    5  Extended
/dev/sda5            1998        2089      731136   82  Linux swap / Solaris

Disk /dev/sdb: 34.4 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x852ed7ac

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        4177    33551721   83  Linux

Nous disposons donc bien d’une disque (/dev/sdb1) de 34.4 GB

Utilisation de la nouvelle partition

Pour utiliser ce nouveau disque, il faut le monter (« mount »).

On commence donc par créer un répertoire (/mnt/data) dans lequel le contenu du disque sera visible:

[cc]
# mkdir /mnt/data
[/cc]

Puis on édite le fichier /etc/fstab pour lui ajouter la ligne suivante:

/dev/sdb1             /mnt/data    ext4  defaults   1 1

On monte le disque:

[cc]
# mount /mnt/data
[/cc]

et on vérifie que le système le détecte:

[cc]
# df -k
[/cc]

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15791024   2446256  12542620  17% /
tmpfs                   513604         0    513604   0% /lib/init/rw
udev                    508732       116    508616   1% /dev
tmpfs                   513604         0    513604   0% /dev/shm
/dev/sdb1             33025240    180152  31167504   1% /mnt/data

Bingo, il ne reste plus qu’à écrire/lire vos données dans le répertoire /mnt/data !

Catégories
Blog Open-source Planet-libre Systeme

Résultats du sondage sur les systèmes d’exploitation

Je viens de clôturer le sondage que j’avais mis en ligne dimanche dernier et qui avait pour objectif de connaître les systèmes d’exploitation que vous, lecteurs du blog, utilisez au quotidien.

Quelques 638 réponses plus tard, voici le résultat des courses !

Question 1: Quel système d’exploitation utilisez vous chez vous ?

Pas de grosses surprise, les distributions basées sur Debian (Ubuntu/Debian/Mint) arrive en tête pour le monde GNU/Linux. Windows est encore bien présent mais souvent en deuxième machine (c’est pour cela que la somme des réponses dépassent les 100%). A noter que Mac OS X arrive en 4em place.

Les lecteurs de ce blog sont donc bien équipés avec une moyenne de 2.06 OS par domicile.

Question 2: Quel système d’exploitation utilisez vous au boulot ?

Le lobbying|vente forcée de Microsoft marche encore bien dans nos entreprises puisque Windows arrive en deuxième position (419) derrière les « Debian like » (492).  Il est par contre assez étonnant de voir le relatif faible score de la distribution Redhat pour qui l’entreprise est clairement la cible. Il faut cependant relativiser ces chiffres par le fait que les lecteurs de ce blog ne sont pas des utilisateurs lambda…

L’utilisation de plusieurs systèmes est aussi important (2.02 OS par utilisateur).

Question 3: Si vous êtes sous GNU/Linux, quel est votre environnement graphique ?

Question un peu à part, mais d’actualité, sur l’utilisation des environnements graphiques GNU/Linux. Gnome 2 (le classique) arrive en tête mais il est suivi le prêt par Gnome 3 (Shell) qui semble enfin prendre son envol. Unity qui a pas mal fait parlé de lui arrive en 3em place alors qu’il est seulement pré-installé sur les dernières distributions Ubuntu.

Question 4: Sur quel système d’exploitation installez vous vos serveurs (dédiés ou virtuels) ?

Il est intéressant de voir que pour vos serveurs, Debian largement en tête des votes. La stabilité de ce système est rassurante pour des machines qui sont critiques. Ubuntu Server arrive en deuxième place devant Fedora/Redhat.

Que pensez-vous de ces résultats ? Des surprises ?

Vous pouvez consulter les résultats complets sur cette page.

Catégories
Open-source Planet-libre Systeme

Présentation complète de Glances

Il y a quelques jours, je vous avez présenté la première version de Glances, mon logiciel pour surveiller simplement ses systèmes en mode texte à partir d’une console ou d’un terminal. Quelques versions plus tard (Glances est actuellement disponible en version 1.3.7), il était temps pour moi de vous en faire une présentation un peu plus complète.

Introduction

Glances est un logiciel libre (distribué sous licence LGPL) permettant de surveiller votre système d’exploitation GNU/Linux ou BSD à partir d’une interface texte. Glances utilise la librairie libstatgrab pour récupérer les informations de  votre système. Il est développé en langage Python.

Installation

Depuis le gestionnaire de paquet de votre système

Des paquets existent pour plusieurs distributions: Arch, Fedora/Redhat…

Le processus de packaging est actuellement en cours sur d’autres distribs, je vous conseille donc de rechercher Glances (avec un s !) sur votre gestionnaire de package avant de faire une installation depuis les sources.

Merci de laisser un commentaire dans ce billet si vous trouvez Glances sur votre système 🙂

Depuis le PPA

Pour les distributions Ubuntu (et dérivées) depuis la 9.10 jusqu’à la 12.04, il est possible d’utiliser le PPA généreusement maintenu par Arnaud Hartmann.

[cc lang=bash »]

sudo add-apt-repository ppa:arnaud-hartmann/glances-stable

sudo apt-get update

sudo apt-get install glances

[/cc]

Depuis les sources

Le projet Glances est hébergé sur GitHUB.

Pour l’installer, il suffit de suivre les instructions suivantes depuis un terminal.

Récupération de la dernière version (1.3.7):

[cc]

$ wget https://github.com/downloads/nicolargo/glances/glances-1.3.7.tar.gz

[/cc]

Procédez ensuite à l’installation:

[cc]

$ tar zxvf glances-1.3.7.tar.gz
$ cd glances-1.3.7
$ ./configure
$ make
$ sudo make install

[/cc]

Glances a besoin des dépendances suivantes:

  • Python 2.6+ (non testé avec Python 3+)
  • libstatgrab 0.16+
  • python-statgrab 0.5+ (ne marchera PAS avec python-statgrab 0.4)

Notes specifiques pour une installation sous Debian 6.

Debian Squeeze met à disposition la version 0.4 de python-statgrab. Il faut donc installer la version 0.5 à la main:

[cc]

$ sudo apt-get install libstatgrab-dev pkg-config python-dev make
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install

[/cc]

Notes specifiques pour une installation sous Ubuntu 10.04 et 10.10.

Ces versions d’Ubuntu mettent à disposition la version 0.4 de python-statgrab. Il faut donc installer la version 0.5 à la main:

[cc]

$ sudo apt-get update
$ sudo apt-get install pkg-config build-essential autoconf automake python libstatgrab-dev python-all-dev
$ sudo apt-get remove python-statgrab
$ wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz
$ tar zxvf pystatgrab-0.5.tar.gz
$ cd pystatgrab-0.5/
$ ./setup.py build
$ sudo ./setup.py install

[/cc]

Lancement de Glances

Il suffit de saisir la commande suivante dans une console ou un terminal:

[cc]

$ glances.py

[/cc]

Note: sur certaines distributions, il faut saisir glances en lieu et place de glances.py.

Guide d’utilisation

Par défaut, l’affichage des statistiques est rafraichi toute les secondes.

Il est possible de changer cette valeur en utilisant l’option -t. Par exemple pour fixer un taux de rafraichissement à 5 secondes:

[cc]

$ glances.py -t 5

[/cc]

Les statistiques jugées importantes sont affichées en couleur:

  • VERT: la statistique est « OK »
  • BLEU: la statistique est « CAREFUL » (à surveiller)
  • VIOLET: la statistique est « WARNING » (en alerte)
  • ROUGE: la statistique est « CRITICAL » (critique)

Quand Glances est lancé, il est possible d’utiliser les touches suivantes:

a‘ pour trier la liste des processus de manière automatique:

  • Si la CPU totale > 70% alors le tri se fait pas consommation CPU
  • si la mémoire total > 70% alors le tri se fait pas consommation MEMOIRE

c‘ pour forcer le tri par consommation CPU

d‘ pour desactiver ou activer l’affichage des entrées/sorties disques

f‘ pour desactiver ou activer l’affichage de l’occupation des FS

h‘ pour afficher ou cacher l’aide en ligne

m‘ pour forcer le tri par consommation MEMOIRE

n‘ pour desactiver ou activer l’affichage des interfaces réseau

q‘ pour quitter Glances (il est également possible d’utiliser CTRL-C)

Passons ensuite à la description de la fenêtre de Glances:

En-tête

L’en-tête montre la version de Glances, le nom de la machine (FQND) ainsi qu’une information sur le système d’exploitation (nom, version).

CPU

L’état de la CPU est affiché par un pourcentage de l’utilisation globale.

  • Si user|kernel|nice CPU est < 50%, alors le status est « OK ».
  • Si user|kernel|nice CPU est > 50%, alors le status est « CAREFUL ».
  • Si user|kernel|nice CPU est > 70%, alors le status est « WARNING ».
  • Si user|kernel|nice CPU est > 90%, alors le status est « CRITICAL ».

Charge moyenne (aka Average Load)

Il est assez difficile de donner une définition claire de la charge d’une machine (load average). Sur le blog Nosheep, Zach en donne la définition suivante:

 » C’est la somme moyenne du nombre de processus en attente dans la queue d’execution plus le nombre de processus actuellement en train d’être executés sur une période de temps de 1, 5 et 15 minutes. »

Glances permet d’afficher les alertes en tenant compte du nombre de coeurs de votre processeur. Par exemple, le seuil WARNING sera de 2 pour un processeur  Bi-Core alors qu’il sera de 4 sur un Quad-Core.

  • Si la charge moyenne est < O.7*Core, alors le status est « OK ».
  • Si la charge moyenne est > O.7*Core, alors le status est « CAREFUL ».
  • Si la charge moyenne est > 1*Core, alors le status est « WARNING ».
  • Si la charge moyenne est > 5*Core, alors le status est « CRITICAL ».

Mémoire

Glances affiche 3 types d’informations pour la mémoire: RAM, SWAP et réelle (un peu à la manière de la commande « free -h »).

La mémoire réelle occupée est calculée ainsi = used – cache.

La mémoire réelle libre est calculée ainsi = free + cache.

Les alertes utilisent les seuils suivants:

  • Si la mémoire est < 50%, alors le status « OK ».
  • Si la mémoire est > 50%, alors le status « CAREFUL ».
  • Si la mémoire est > 70%, alors le status « WARNING ».
  • Si la mémoire est > 90%, alors le status « CRITICAL ».

Débits des interfaces réseau

Glances affiche les débits des interfaces réseau en adaptant dynamiquement l’unité à utiliser (bits par seconde).

Les alertes ne sont affichées que pour les interfaces dont les informations sur la vitesse maximale sont disponibles (cela dépend des distributions):

  • Si le débit < 50%, alors le status est « OK ».
  • Si le débit > 50%, alors le status est « CAREFUL ».
  • Si le débit > 70%, alors le status est « WARNING ».
  • Si le débit > 90%, alors le status est « CRITICAL ».

Par exemple, sur une interface Ethernet Fast Ethernet (100 Mbps), le status passera à WARNING si le débit dépasse les 70 Mbps.

Entrées/Sorties disque

Glances permet d’afficher les débits en lecture et écriture sur les disques en adaptant dynamiquement l’unité à utiliser (octets par seconde).

Il n’y a pas d’alerte remontée pour ce type d’information.

Espace sur les systèmes de fichiers

Glances affiche par système de fichiers l’espace disque total et utilisé. L’unité est automatiquement adaptée (octets par seconde).

Les alertes sont remontées sur l’espace disque utilisé:

  • Si l’espace disque utilisé est < 50%, alors le status est « OK ».
  • Si l’espace disque utilisé est > 50%, alors le status est « CAREFUL ».
  • Si l’espace disque utilisé est > 70%, alors le status est « WARNING ».
  • Si l’espace disque utilisé est > 90%, alors le status est « CRITICAL ».

Les processus

Glances affiche un résumé sur l’état des processus ainsi qu’une liste détaillé (CPU, MEMOIRE et nom du processus).

Le nombre des processus affichés est adapté à la taille de la fenêtre.

Les logs

Nouveauté de la version 1.3.7.

Lire le billet suivant pour une description de la fonction logs.

 

Pied de page

Glances y affiche la légende (rappel des codes des couleurs) ainsi que la date et l’heure courante.

A faire…

J’ai besoin de contributeurs pour faire évoluer Glances.

Notamment:

  • Packaging pour Debian, Ubuntu, BSD et toutes autres distributions
  • Controle de la présence des librairie dans le fichier configure.ac
  • Inclure les stats de FS directement dans python-statgrab
  • Ajout d’une fenêtre d’aide
  • Optimisation du code

Pour toutes remarques, bugs, demande d’évolution sur Glances, merci d’utiliser le formulaire GitHub.

Catégories
Blog Open-source

Petit sondage pour mes lecteurs…

Cliquer ici pour voir les résultats du sondage. 

Comme vous avez pu le voir, depuis quelques temps, je n’ai pas trop le temps de bloguer régulièrement. Entre mon boulot, la vraie vie et les évolutions de Glances (mon petit logiciel de supervision système qui vient de sortir en version 1.3.2), je n’arrive pas à libérer du temps pour finaliser les billets que j’ai dans le pipe (notamment un sur la virtualisation QEMU/Libvirt).

Donc, pour une fois, je vais vous faire travailler !

Je viens de mettre en ligne un petit sondage qui me permettra de mieux cibler les articles (ou du moins les procédures) afin qu’ils s’adaptent à vos environnements de travail. Il ne devrait pas vous prendre plus de 2 minutes de votre temps.

Le sondage est disponible ici (cliquer sur ce lien pour ouvrir la page du sondage).

D’avance merci à vous !