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

Glances: vos stats systèmes en un clin d’oeil

Il y a quelques jours, je vous avais parlé de Saidar, un logiciel permettant de regrouper dans un terminal|console un certain nombre de statistiques sur votre machine. Après quelques heures d’utilisations, j’ai identifié des choses qui ne me convenait pas:

  • pas d’affichage de la mémoire réellement disponible (comme on peut le trouver sur la deuxième ligne de la commande free -m)
  • pas de détail au niveau des processus
  • affichage des débits réseaux en octets/sec alors que j’utilise toujours les bits/sec
  • pas d’information sur l’espace disque disponible

Comme je ne trouvais pas la « killer application » dans ce domaine (même si il existe de très bon outils comme top), j’ai décidé de repartir d’une feuille blanche et de développer le logiciel Glances (licence LGPL) dont je vais vous présenter les grandes lignes dans ce billet.

Glances screenshot

Objectifs

Ils sont multiples:

  • prises en compte de mes griefs sur Saidar
  • accès à la fois depuis un environnement graphique (terminal) qu’à distance (console)
  • mise en avant des statistiques importantes à la compréhension d’un éventuel problème
  • affichage des processus triés de manière intelligente et automatique
  • développement en langage Python (je connais assez bien, c’est portable et facile à maintenir)

Installation

Après avoir téléchargé la dernière version stable disponible , il suffit de saisir les commandes suivantes:

[cc lang= »bash »]

tar zxvf glances-version.tar.gz

cd glances-version

./configure

make

sudo make install

[/cc]

Notes: remplacer « version » par le numéro de version que vous avez téléchargé…

Glances a besoin de la librairie python-statgrab version 0.5 (ou supérieure) pour fonctionner correctement. Sous Ubuntu, il suffit de lancer la commande:

[cc lang= »bash »]

sudo apt-get install python-statgrab

[/cc]

Sous Debian Squeeze, seule la version 0.4 de python-statgrab est disponible dans les dépôts. Il faut donc installer la version 0.5:

[cc lang= »bash »]

sudo apt-get install libstatgrab-dev

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]

Utilisation

On lance le logiciel avec la commande:

[cc lang= »bash »]

glances.py

[/cc]

Par défaut, le rafraîchissement des données se fait toutes les secondes. Il est possible de l’augmenter avec l’option -t. Par exemple pour avoir un taux de rafraîchissement de 5 secondes:

[cc lang= »bash »]

glances.py -t 5

[/cc]

Une fois lancé, les touches suivantes sont actives:

  • ‘a’: passer le tri des processus en automatique (c’est le mode par défaut). Glances utilisera par défaut un tri décroissant sur l’utilisation CPU. Si une alerte sur la mémoire globale apparaît (mémoire occupé > 70%), le tri se fera alors par occupation mémoire.
  • ‘c’: forcer le tri des processus en fonction de leurs utilisations de la CPU.
  • ‘m’: forcer le tri des processus en fonction de leurs occupations mémoire.
  • ‘q’: quitter le programme (on peut également utiliser CTRL-C).

Si votre terminal|console est compatible avec un affichage couleur, alors les statistiques importantes (à mes yeux…) sont mises en avant de la manière suivante:

  • VERT: le compteur est < 50%
  • BLEU: le compteur est > 50% et < 70%
  • VIOLET: le compteur est > 70% et < 90%
  • ROUGE: le compteur est > 90%

Limitations

L’API python-statgrab comporte actuellement un bug pour la récupération des statistiques sur les espaces disques. Dès que ce dernier sera corrigé, je pense inclure ces statistiques dans l’espace libre en bas à gauche de la fenêtre de Glances.

Un problème ?

Si vous rencontrez un problème lors de l’installation ou de l’utilisation de Glances:

  1. Vérifié que le problème n’est pas référencé
  2. Saisir le nouveau bug dans le tracker GitHub

Lors de la saisie du bug merci de fournir les informations suivantes:

  • Système d’exploitation (nom, version)
  • version de Python (python -v)
  • version de la librairie statgrab (apt-cache show statgrab)
  • version de la librairie python-statgrab (apt-cache show python-statgrab)

Contribuer ?

Le logiciel est distribué sous licence libre LGPL. Il est disponible dans le GitHub suivant: https://github.com/nicolargo/glances

Si vous trouvé ce logiciel intéressant et que vous souhaitez vous impliquer, j’ai besoin de vous sur les sujet suivants:

  • packaging de Glances pour Debian, Ubuntu (PPA), Fedora, Redhat, Free|Open|NetBSD…
  • amélioration/optimisation du code (lire le billet contribuer à un projet hébérgé sur GitHub)
  • inclure la vérification de la présence de la librairie python-statgrab lors du .configure (j’ai un bug dans le configure.ac)
  • ‘Man’ page
  • Afficher une fenêtre d’aide avec les touches disponibles quand on clique sur F1
  • Corriger le bug de python-statgrab afin que l’on puisse inclure les statistiques sur les systèmes de fichiers

J’attends vos retours. 🙂

Catégories
Open-source Planet-libre Systeme

Supervision simple en ligne de commande avec Saidar

Marre des interfaces graphiques qui ne sont là que pour faire plaisir à vos chefs ? Marre de passer vos journées dans les méandres des fichiers de configuration de Nagios ? Vous avez besoin d’un moyen simple et rapide pour voir ce qui cloche sur une machine ?

Si vous avez répondu oui aux questions précédentes ou que comme moi la première chose que vous faites en cas de problème sur une machine est de regarder la charge, la mémoire et l’espace disque disponible  alors Saidar est fait pour vous !

C’est quoi donc ?

Saidar est un logiciel libre (GPL v2), en ligne de commande permettant d’afficher sur dans une console l’état de votre machine. Il se base sur la librairie libstatgrab qui apporte une couche d’abstraction pour la récupération des informations sur les systèmes d’exploitations Solaris 2.x, Linux 2.2/2.4/2.6, FreeBSD 4.x/5.x, NetBSD 1.6.x, OpenBSD 3.x, DragonFly BSD 1.0, HP-UX, et Cygwin (donc Windows).

Cette librairie dispose également de binfing (interface) vers les langages suivants:

Comment cela marche ?

Sous Debian/Ubuntu, l’installation est facilité par la présence de Saidar dans les dépôts officiels:

[cc lang= »bash »]

# apt-get install saidar

[/cc]

Il suffit ensuite de lancer le logiciel depuis une console (/ terminal):

[cc lang= »bash »]

# saidar

[/cc]

Pour voir afficher les merveilleuses statistiques:

Personnellement j’ai ajouté un raccourci à mon fichier .bashrc pour activer certaines options (couleur et rafraîchissement toute les secondes):

[cc lang= »bash »]

alias saidar=’saidar -c -d 1′

[/cc]

Et voilà le résultat:

Si un chiffre apparaît en gras, c’est que la valeur dépasse les 60%. Au dessus de 90% il est affiché en avec un fond de couleur.

Bref, un outil bien sympathique dans l’esprit GNU à laisser tourner sur vos machines critiques !

Catégories
Open-source Planet-libre Systeme

Script de post installation de Mint 12 (aka Lisa)

L’utilisation par défaut de l’environnement Unity dans la dernière version d’Ubuntu (la 11.10) a beaucoup fait parler d’elle dans le petit monde des utilisateurs GNU/Linux. En effet, cette nouvelle interface demande à l’utilisateur une période d’adaptation pour retrouver ses marques. Personnellement, j’ai dans un premier temps renoncé à l’utiliser sur mon PC personnel mais pas pour cette raison. Comme j’utilise des distributions diverses et variées (Debian, Fedora, Ubuntu, BSD…), je souhaite avoir un environnement similaire entre tous ces systèmes. Comme Unity est seulement utilisée dans l’écosystème Ubuntu, je me suis penché sur Gnome 3 (Gnome Shell) et je l’ai donc installé puis configuré sur mon Laptop perso.

Aujourd’hui sort Mint 12 (« Lisa »), une distribution GNU/Linux basée sur Ubuntu (11.10) mais avec Gnome Shell comme environnement graphique par défaut. J’ai donc installé cette distribution sur une de mes machines et je dois avouer que j’ai été assez bluffé par le degré et la maturité d’intégration de Gnome Shell.

J’en ai également profité pour écrire un script de post installation qui permet de peaufiner le système en installant des logiciels manquants (voir la liste ici) et en améliorant encore un peu plus Gnome Shell (installation de thèmes et d’icônes supplémentaires).

Le script est disponible sur le repo GitHub (lien direct pour le téléchargement).

Pour exécuter le script sur une Mint fraichement (hahaha) installée:

[cc lang= »bash »]
mkdir ~/install
cd ~/install
wget https://raw.github.com/nicolargo/ubuntupostinstall/master/mint-12-postinstall.sh
chmod a+x mint-12-postinstall.sh
sudo ./mint-12-postinstall.sh
[/cc]

Voici le résultat:

Je suis bien sûr preneur de toutes les remarques sur le script. Vous pouvez également contribuer à son évolution en suivant ce tutoriel.

Avec quelques jours de recul, je pense le plus grand bien de cette distribution, elle apporte une cohérence et une continuité au niveau de l’interface graphique que l’on ne retrouve pas (ou plus) chez Ubuntu.

Avez-vous essayé Mint ? Qu’en pensez-vous ?

Catégories
Open-source Planet-libre Systeme

Mon desktop 201111

Cela fait maintenant plus d’un mois que je suis passé à Gnome Shell sur mon Laptop Ubuntu personnel. Je peaufine petit à petit la configuration de mon bureau qui commence à me donner satisfaction.

Voici un screenshot de la bête:

 

Ma configuration

Une petite description:

Au niveau du menu avec les raccourcis, rien de très original:

Google Chrome

 

Firefox (comme ça pas de jaloux)

 

Terminator, le terminal

 

Shutter pour les screenshots

 

VLC, pour tout lire / voir

 

Spotify pour la zic

Retour 1 mois après…

Il est intéressant de noter que je commence à trouver mes marques dans ce fameux Gnome Shell. Je ne regrette pas d’avoir choisi Gnome Shell à la place d’Unity. Le temps passé à cet apprentissage pourra facilement être récupéré sur d’autre système GNU/Linux qui passeront un jour ou l’autre sous Gnome 3 (je pense notamment à Debian). L’intégration avec Ubuntu est encore loin d’être parfaite ce qui peut être un vrai problème pour un nouveau venu dans le monde GNU/Linux mais je ne doute pas que des améliorations seront apporté par la version 12.04 LTS d’avril prochain.

Et vous ?

Cela donne quoi ? Sous Gnome Shell, Unity, Gnome 2 ou autres ?

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

Catégories
Open-source Planet-libre Systeme

Trousse à outils libres sous Windows

Depuis début septembre, j’ai changé de poste. Je bosse maintenant dans un service qui utilise massivement les systèmes d’exploitation Windows. Même si des projets sont en cours pour migrer nos chers développements sous GNU/Linux, c’est plutôt un projet à long terme et je dois donc m’adapter en travaillant une bonne partie de mon temps sous un poste sous Windows XP (ou XP même pas 7even). Afin de survivre dans ce monde hostile, j’ai récupéré et installé sur mon poste quelques logiciels libres me permettant de travailler à peu près correctement.

J’essayerai de faire évoluer cette liste en fonction de mes découvertes et je l’espère des votre (les commentaires sont fait pour cela) !

Capture écran

Shutter fait parti des logiciels que le « monde Windows » regrette de ne pas avoir de son coté. GetGreenShot est une alternative libre sous l’OS de Microsoft qui comble la faiblesse des fonctions par défaut (c’est quand même mieux qu’un « Print Screen » et copier/coller dans Paint :)).

Lien vers le site de téléchargement officiel de GetGreenShot.

Navigateur Web

Chromium est le navigateur open-source maintenu par Google et qui sert de base au bien connu Google Chrome. Le fait d’utiliser Chromium à la fois sous GNU/Linux, Windows et Mac OS me permet de partager tous les plugins, bookmarks et configurations.

Lien vers un site de téléchargement de Chromium.

Console SSH

Pour administrer les serveurs (GNU/Linux ou BSD bien entendu, aller pas me mettre des Windows 2008 serveurs) il est nécessaire de disposer d’une console SSH. Comme cette fonction n’existe pas sous Windows (et vu la qualité du terminal cmd.exe il est préférable que Microsoft s’abstienne d’en développer un), il faut se retourner vers le logiciel libre PuTTY qui offre un terminal SSH et telnet de bonne qualité.

Lien vers le site de téléchargement officiel de PuTTY.

Lecteur multimédia

Pas la peine de vous faire l’affront de vous présenter VLC, le seul, l’unique, le meilleur lecteur multimédia (audio, vidéo) disponible sous Windows. On ne dira jamais assez merci à l’équipe de Videolan pour leur travail sur ce logiciel.

Lien vers le site de téléchargement officiel de VLC.

Editeur de texte

Si il y a bien un logiciel de base de Windows qui n’est pas très évolué, c’est bien l’éditeur de texte par défaut (Notepad). Heureusement pour nous, le monde libre vient à notre rescousse avec NotePad++. Ce logiciel apporte toutes les fonctions que l’on peut attendre d’un éditeur de texte en 2011. Je m’en sers même pour faire des petits développements.

Lien vers le site de téléchargement officiel de Notepad++.

Client CVS, SVN et GIT

Pour continuer dans la programmation, TortoiseSVN (ou CVS) permet d’intégrer directement la gestion en configuration dans le gestionnaire de fichier de Windows. A noter également qu’un portage pour GIT est en cours de développement: TortoiseGIT (je ne l’ai pas encore essayé).

Liens vers les téléchargements de TortoiseSVN et TortoiseGIT.

Conclusion

Si toi aussi tu es obligé de travailler sous Windows XP|7|8 et que tu utilises pour survivre des pépites libres, alors partage ton expérience dans les commentaires ci-dessous !

Catégories
Developpement Open-source Planet-libre Systeme

MySQL Cluster – Administration 5/5

Ce billet est le premier d’une série de 5 articles sur Cluster MySQL écrite par Rémy Verger(auteur invité).

Je rappelle que ce billet est le dernier (et oui déjà) d’une série de 5 billets:

1. Introduction

2. Concepts de base de MySQL Cluster / Configuration simple-multi serveurs

3. Installation

4. Demarrage du MySQL Cluster

5. Commande d’administration

DUMP a chaud sur une base de données de type Cluster MySQL

La plus part des sociétés qui décide d’employer ce genre d’architecture pour leur base de données, pensent avant tout a la sauvegarde en ligne de leur données sans l’interruption de service. L’intérêt de MySQL Cluster est que les données sont donc toutes stockées en mémoire, ce qui rend donc possible ce processus de sauvegarde.

Une sauvegarde représente le contenu d’une base de données, à un moment donné. La sauvegarde contient 3 parties principales :

  • Les méta-données (quelles tables existents, etc.)
  • Les lignes des tables(les données )
  • Un historique des transactions archivées

Chaque partie est stockée sur tous les noeuds qui participent à la sauvegarde.

Durant une sauvegarde, chaque noeud sauve ces données sur le disque, en trois fichiers :

BACKUP-<BackupId>.<NodeId>.ctl 

Le fichier de contrôle, qui contient les données de contrôle et les méta-données.

BACKUP-<BackupId>-0.<NodeId>.data 

Le fichier de données qui contient les lignes des tables.

BACKUP-<BackupId>.<NodeId>.log 

Le fichier de log, qui contient les transactions archivées.

Dans les lignes ci-dessus, <BackupId> est un identifiant pour la sauvegarde, et <NodeId> est l’identifiant du noeud qui a créé le fichier.

Meta data

Les méta-données sont consistuées des définitions de table. Tous les noeuds ont la même définition de table, sauvée sur le disque.

Table records

Les lignes sont sauvées par fragment. Chaque fragment contient un entête qui décrit à quelle table appartient les lignes. Après un groupe de ligne, il y a pied-de-page qui contient une somme de contrôle. Différents noeuds sauvent différents fragment durant la sauvegarde.

Committed log 

L’historique contient les transactions archivées, effectuée durant la sauvegarde. Seules les transactions impliquant les tables stockées sur le noeud sont stockées dans le log. Les différents noeuds de la sauvegarde sauvent différents logs, car ils abritent différents fragments de bases de données.

Utilisation du serveur de gestion pour une sauvegarde de cluster

Il faut suivre les étapes suivantes:

  1. Lancez le serveur de management.
  2. Exécutez la commande START BACKUP.
  3. Le serveur de gestion vous indiquera « Start of backup ordered ». Cela signifie que le serveur de management a envoyé la requête au cluster, mais qu’il n’a pas encore reçu de réponse.
  4. Le serveur de gestion va indiquer « Backup <BackupId> started », où <BackupId> est l’identifiant de la sauvegarde. Cette information sera aussi enregistrée dans le log du cluster (à moins que cela ne soit configuré autrement). Cela signifie que le serveur a reçu des réponses, et que la sauvegarde a été faite. Cela ne signifie pas que la sauvegarde est complète.
  5. Le serveur de gestion va indiquer que la sauvegarde est finie avec le message « Backup <BackupId> completed ».

[cce]

ndb_mgm> start backup

Waiting for completed, this may take several minutes

Node 3: Backup 1 started from node 1

ndb_mgm> Node 3: Backup 1 started from node 1 completed

StartGCP: 76106 StopGCP: 76109

#Records: 2057 #LogRecords: 0

Data: 51188 bytes Log: 0 bytes

[/cce]

Utilisation du serveur pour annuler une sauvegarde :

  1. Lancez le serveur de gestion.
  2. Exécutez la commande ABORT BACKUP <BACKUPID>. Le numéro <BackupId> est l’identifiant de la sauvegarde, qui est inclut dans la réponse du serveur de gestion au moment de la création de la sauvegarde : « Backup <BackupId> started ». L’identifiant est aussi sauvé dans le log du cluster (cluster.log).
  3. Le serveur de gestion répond « Abort of backup <BackupId> ordered ». Cela signifie qu’il a envoyé la requête au cluster, mais n’a pas encore re¸u de réponse.
  4. Le serveur de gestion répond « Backup <BackupId> has been aborted reason XYZ ». Cela signifie que le cluster a annulé la sauvegarde, et supprimé toutes les ressources reliées, y compris les fichiers.

Dans la partition /home de votre serveur noeud vous pouvez donc voir ceci . Un dossier Backup crée par le serveur de management, puis le numeros de la sauvegarde et les fichiers nécessaire a sa restauration.

Utilisation des processus serveurs MySQL par MySQL Cluster

mysqld est le processus traditionnel du serveur MySQL. Pour être utilisé avec MySQL Cluster, il doit être compilé avec le support des tables NDB. Si le binaire mysqld a été compilé correctement, le moteur de tables NDB Cluster est désactivé par défaut.

Pour activer le moteur NDB, il y a deux méthodes. Soit vous utilisez l’option –ndbcluster au démarrage, lorsque vous utilisez la commande mysqld ou bien, insérez une ligne avec ndbcluster dans la section [mysqld] de votre fichier my.cnf.

Un moyen facile pour vérifier que votre serveur supporte le moteur NDB Cluster est d’utiliser la commande SHOW ENGINES depuis un client mysql. Vous devriez voir la valeur YES dans la ligne de NDBCLUSTER. Si vous voyez NO, c’est que vous n’utilisez pas le programme mysqld compilé avec le support de NDB Cluster. Si vous voyez DISABLED, alors vous devez simplement activer le moteur dans votre fichier de configuration my.cnf.

Le serveur MySQL doit savoir comment lire la configuration du cluster. Pour accéder à cette configuration, il doit connaître 3 choses :

  • Son propre numéro d’identifiant de noeud dans le cluster.
  • Le nom d’hôte ou l’adresse IP où le serveur de gestion réside.
  • Le port sur lequel se connecter au serveur de gestion.

Il y a actuellement trois moyens pour donner ces informations au processus mysqld. La méthode recommandée est de spécifier la chaîne de connexion de mysqld appelée ndb-connectstring, soit au démarrage de mysqld ou dans le fichier my.cnf.

Vous pouvez aussi inclure cette information dans un fichier appelé Ndb.cfg. Ce fichier doit résider dans le dossier de données de MySQL. Une autre solution est de configurer la variable d’environnement appelée NDB_CONNECTSTRING. La chaîne sera la même dans tous les cas : « [nodeid=<id>;][host=]<host>:<port> ». Si aucune information n’est fournie, cette chaîne vaudra par défaut « host=localhost:2200 ».

[cce]

shell> mysqld –ndb-connectstring=ndb_mgmd.mysql.com:2200

[/cce]

ndb_mgmd.mysql.com est l’hôte où le serveur de gestion réside : il attend sur le port 2200.

Avec cette configuraiton, le serveur MySQL sera partie prenant du cluster MySQL, et accédera à la liste complète de tous les noeuds du cluster ainsi que leur statut. Il va se connecter à tous les noeuds de stockage, et sera capable d’utiliser chacun d’entre eux comme coordonnateur de transaction, ainsi que pour accéder aux données.

ndb_mgmd, le serveur de management

Le serveur de management est le processus qui lit le fichier de configuration du cluster, et distribue cette information à tous les noeuds qui le demande. Il gère aussi le log d’activité du cluster. Les clients de gestion s’y connectent et peuvent l’utiliser pour envoyer des commandes d’analyse et d’administration.

Si vous utilisez plusieurs serveurs de gestion, une chaîne de connexion doit être fournie, et tous les noeuds du cluster doivent explicitement spécifier leur identifiant.

  • config.ini est le fichier de configuration du cluster. Il est créé par l’utilisateur et lu par le serveur de gestion.
  • ndb_1_cluster.log est le fichier où les événements du cluster sont consignés. Les événements du cluster sont, par exemple : les jalons commencés ou complétés, les incidents de noeuds, les démarrages de noeuds, les niveaux d’utilisation de mémoire, etc.
  • ndb_1_out.log est le fichier utilisé pour les entrées et sorties (stdout et stderr) lors de l’exécution du serveur de gestion comme démon. 1, dans ce contexte, est l’identifiant de noeud.
  • ndb_1.pid est le fichier de PID utilisé lors de l’exécution du serveur de gestion comme démon. 1, dans ce contexte, est l’identifiant de noeud.
  • ndb_1_cluster.log.1 , lorsque le log de cluster dépasse un millions d’octets, alors le fichier de log prend le nom indiqué ici, où 1 est le nombre de fichier de logs : si 1, 2 et 3 existent déjà, le suivant sera le numéro 4.

ndb_mgm, le client de gestion du cluster

Le dernier processus important à connaître est le client de gestion. Ce processus n’est pas nécessaire pour faire fonctionner le cluster. Son intérêt est que pouvoir vérifier le statut du cluster, de lancer les sauvegardes, et effectuer les autres activités d’administration. Il fournit un moyen d’accès et un jeu de commandes.

En fait, le client de gestion utilise une interface C qui donne l’accès au serveur de gestion : pour les utilisateurs experts, il est possible de programmer des processus spécifiques qui pourront effectuer des taches d’administration automatisées.

[cce]

shell> ndb_mgm

[/cce]

Commandes du client de gestion du Cluster

En plus du fichier de configuration central, le cluster peut aussi être contrôlé avec une interface en ligne de commande. La ligne de commande est disponible via un processus séparé de client de gestion du cluster. C’est l’interface principale de gestion du cluster.

Le client de gestion a les commandes suivantes de base. Ci-dessous, <id> indique un noeud de base de données (i.e. 21) ou le mot clé ALL qui indique que la commande doit être appliquée à tous les noeuds dans le cluster.

HELP

Affiche les informations sur toutes les commandes disponibles.

SHOW

Affiche les informations sur le statut du cluster.

<id> START

Lance le noeud de base de données identifié par <id>, ou bien tous les noeuds.

<id> STOP

Stoppe le noeud de base de données identifié par <id>, ou bien tous les noeuds.

<id> RESTART [-N] [-I]

Relance le noeud de base de données identifié par <id>, ou bien tous les noeuds.

<id> STATUS

Affiche les informations de statut du noeud de base de données identifié par <id> (ou de tous les noeuds avec ALL).

ENTER SINGLE USER MODE <id> 

Active le mode d’utilisateur unique, où seule l’API avec le noeud <id> est autorisée pour accéder au système de base de données.

EXIT SINGLE USER MODE

Quitte le mode d’utilisateur unique.

QUIT

Quitte le client de gestion du cluster.

SHUTDOWN

Arrête tous les noeuds du cluster, hormis les serveurs MySQL, puis s’arrête.

Conclusion

Note de Nicolargo: Merci encore à Remy pour cette série d’articles sur un sujet d’actualité vu le nombre croissant de données gérées par nos applications.

Catégories
Gstreamer Hardware Open-source Reseau Systeme

Supervision SMART de vos disques via Nagios

Disque durSuperviser l’espace disque des serveurs est une bonne chose… encore faut il que les données soient stockées sur des disques en bonne santé. Le but de ce billet est de mettre en place via Nagios/Shinken une supervision de l’état SMART renvoyé par l’outil Smartmontool.

Sur le serveur à superviser

Les pré-requis

La commande smartctl sera exécutée avec sudo, il faut donc l’installer si ce n’est pas déjà fait sur votre système:

[cce lang=bash »]

apt-get update

apt-get install sudo

[/cce]

Il fait aussi installer l’outil de vérification SMART : SmartMonTools.

[cce lang=bash »]

apt-get install smartmontools

[/cce]

Superviser quels disques ?

Pour savoir quels disques superviser, on peut utiliser la commande suivante (en root):

[cce lang=bash »]

fdisk -l

[/cce]

Exemple : sur un RAID1, on trouvera souvent /dev/sda et /dev/sdb. On prendra ce cas pour illustrer le reste de notre procédure.

Récupération et installation du plugin

Téléchargement du script :

[cce lang=bash »]

cd /etc/snmp/

wget https://raw.github.com/nicolargo/nagiosautoinstall/master/check_smart.pl

[/cce]

On donne les droits d’exécution :

[cce lang=bash »]

chmod 755 /etc/snmp/check_smart.pl

[/cce]

Modification de la configuration de SNMP

Pour prendre en compte Smart, il faut modifier la configuration de votre serveur SNMP (suivre cette procédure pour installer le serveur SNMPd sur votre machine) en éditant le fichier snmpd.conf et en y ajoutant les lignes suivantes :

[cce lang=bash »]

vi /etc/snmp/snmpd.conf

exec SmartSDA /etc/snmp/check_smart.pl -t -d /dev/sda

exec SmartSDB /etc/snmp/check_smart.pl -t -d /dev/sdb

[/cce]

Note : L’ordre des lignes est important !

La première ligne « exec » aura l’OID « .1.3.6.1.4.1.2021.8.1.101.1 », la seconde ligne l’OID « .1.3.6.1.4.1.2021.8.1.101.2 », etc…

Si vous utilisez déjà des commande exec dans le fichier snmpd.conf, les OID ne correspondront pas forcément avec ceux de cette procédure.

Redémarrage du service SNMP

[cce lang=bash »]

/etc/init.d/snmpd restart

[/cce]

Modification des sudoers

Il faut autoriser l’utilisateur snmp à exécuter la commande « /usr/sbin/smartctl ».

Pour faire cela, il est nécessaire de modifier le fichier /etc/sudoers via la commande visudo et d’ajouter :

[cce lang=bash »]

snmp ALL= NOPASSWD:/usr/sbin/smartctl

[/cce]

Vérification du plugin

Pour voir si les résultats des checks sont bien rentrés dans la MIB SNMP du serveur, on teste avec cette commande :

[cce lang=bash »]

snmpwalk -c public -v 1 [IP du serveur à superviser] .1.3.6.1.4.1.2021.8.1

[/cce]

On devrait avoir quelque chose du genre :

UCD-SNMP-MIB::extIndex.1 = INTEGER: 1

UCD-SNMP-MIB::extIndex.2 = INTEGER: 2

UCD-SNMP-MIB::extNames.1 = STRING: SmartSDA

UCD-SNMP-MIB::extNames.2 = STRING: SmartSDB

UCD-SNMP-MIB::extCommand.1 = STRING: /etc/snmp/check_smart.pl

UCD-SNMP-MIB::extCommand.2 = STRING: /etc/snmp/check_smart.pl

UCD-SNMP-MIB::extResult.1 = INTEGER: 0

UCD-SNMP-MIB::extResult.2 = INTEGER: 0

UCD-SNMP-MIB::extOutput.1 = STRING: SMART overall-health self-assessment test result: PASSED

UCD-SNMP-MIB::extOutput.2 = STRING: SMART overall-health self-assessment test result: PASSED

UCD-SNMP-MIB::extErrFix.1 = INTEGER: noError(0)

UCD-SNMP-MIB::extErrFix.2 = INTEGER: noError(0)

UCD-SNMP-MIB::extErrFixCmd.1 = STRING:

UCD-SNMP-MIB::extErrFixCmd.2 = STRING:

L’état SMART du disque sda est remonté sur l’OID : .1.3.6.1.4.1.2021.8.1.101.1

L’état SMART du disque sdb est remonté sur l’OID : .1.3.6.1.4.1.2021.8.1.101.2

Sur le serveur Nagios

Création de la commande

On défini une nouvelle commande en ajoutant les lignes suivantes dans le fichier commands.cfg:

[cce lang=bash »]

define command{

command_name check_smart

command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C public -o $ARG1$ -r $ARG2$

;command_example !.1.3.6.1.4.1.2021.8.1.101.1!PASSED

}

[/cce]

Syntaxe de la commande :

• -H Hostaddress : IP ou nom DNS de la machine à superviser

• -C public : Communauté SNMP (on peut la mettre en variable si on veut)

• -o $ARG1$ : OID SNMP à intérroger

• -r $ARG2$ : Comparaison avec une chaine de caratère, ici « PASSED » (attention de respecter la casse). Si dans le retour du check, on ne trouve pas la chaine de caractère « PASSED », le service va passer en « Critical ».

Exemple de service

On défini ensuite le service:

[cce lang=bash »]

define host{

use generic-host

host_name monserveur

alias Serveur_Zimbra

address 192.168.0.100

}

define service{

use generic-service

host_name monserveur

service_description SMART_sda

check_command check_smart!.1.3.6.1.4.1.2021.8.1.101.1!PASSED

}

[/cce]

Il ne reste plus qu’à redémarrer votre service Nagios ou Shinken pour prendre en compte la configuration:

[cce lang=bash »]

sudo /etc/init.d/nagios restart

[/cce]

Catégories
Developpement Open-source Planet-libre Systeme

MySQL Cluster – Démarrage 4/5

Ce billet est le premier d’une série de 5 articles sur Cluster MySQL écrite par Rémy Verger(auteur invité).

Je rappelle que ce billet est le 4em d’une série de 5 billets:

1. Introduction

2. Concepts de base de MySQL Cluster / Configuration simple-multi serveurs

3. Installation

4. Demarrage du MySQL Cluster

5. Commande d’administration

Démarrage du Cluster

Démarrer le cluster n’est pas très difficile une fois qu’il a été configuré. Chaque noeud doit être lancé séparément, et depuis l’hôte sur lequel il réside. Même s’il est possible de lancer les noeuds dans n’importe quel ordre, il est recommandé de lancer le serveur d’administration en premier, puis les noeuds de stockage et enfin, les noeuds SQL.

Sur l’hôte de gestion, utilisez la commande suivante depuis le Shell pour lancer le processus de gestion :

[cce]

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[/cce]

Notez que ndb_mgmd doit recevoir le nom et chemin du fichier de configuration, avec l’option -f ou –config-file.

Sur chaque hôte de stockage, exécutez cette commande pour lancer les processus NDBD :

[cce]

ndbd –initial

[/cce]

Notez qu’il est très important d’utiliser le paramètre –initial uniquement lors du premier démarrage de ndbd, ou lors du redémarrage apràs une opération de restauration des données ou de modification de configuration. En effet, ce paramètre va forcer le noeud à effacer les fichiers créé par les anciennes instances de ndbd, y compris les fichiers de log.

Sur les hôtes SQL, exécutez une commande mysqld classique (sous simple utilisateur le service ne fonctionne pas si vous êtes en root ) :

[cce]

mysqld &

[/cce]

Si tout se passe bien, et que le cluster a été correctement configuré, il devrait être opérationnel à nouveau. Vous pouvez tester cela en utilisant la commande ndb_mgm, c’est à dire le client de gestion; le résultat devrait être similaire à celui-ci :

[cce]

[root@localhost ~]# ndb_mgm

— NDB Cluster — Management Client —

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=3 @12.0.1.30 (mysql-5.1.56 ndb-7.1.15, Nodegroup: 0, Master)

id=4 @12.0.1.31 (mysql-5.1.56 ndb-7.1.15, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)

id=1 @12.0.1.10 (mysql-5.1.56 ndb-7.1.15)

id=2 @12.0.1.11 (mysql-5.1.56 ndb-7.1.15)

[mysqld(API)] 2 node(s)

id=5 @12.0.1.20 (mysql-5.1.56 ndb-7.1.15)

id=6 @12.0.1.21 (mysql-5.1.56 ndb-7.1.15)

[/cce]

Quelques pistes si vous avez des messages d’erreurs

Can’t connect to mysql server through socket ‘/tmp/mysql.sock’

Le serveur MySQL n’est pas lancé.

Le socket précisé lors du lancement du client ne correspond pas à celui du serveur (option –socket pour le client en ligne de commande

Sous UNIX, le user mysql n’a pas les droits sur le répertoire /tmp du serveur.

Access denied for user : ‘xx@xx’ (using password : Y/N)

Le mot de passe entré n’est pas le bon.

Aucun mot de passe n’a été donné alors que le serveur en attend un (option -p du client MySQL en ligne de commande par exemple).

L’utilisateur n’a pas les droits pour se connecter ou sur certaines tables. Pour voir les droits d’un utilisateur, utilisez la commande SHOW GRANTS FOR user@host. Si nécessaire, donnez les privilèges au user (voir plus haut). N’oubliez pas de faire un FLUSH PRIVILEGES pour recharger les droits

L’utilisateur est occulté par un autre plus prioritaire mais aux droits plus restreints. Le serveur MySQL considère d’abord les users les plus spécifiques (avec une adresse IP précise ou « localhost » par exemple) avant de prendre en compte les plus génériques (caractères ‘%’ ou ‘_’ dans le nom du user ou de l’hôte).

Ex : si l’utilisateur Bob se connecte à partir de la machine locale où se trouve le serveur MySQL, les droits de ‘bob@localhost’ primeront, s’ils existent, sur les droits de ‘bob@%’.

Les erreurs d’accès s’expliquent souvent par la présence d’utilisateurs anonymes (user= ») dans la table users qui masquent les droits de certains autres utilisateurs. Pour y remédier, on peut les supprimer par un DELETE FROM mysql.user WHERE user= ».

Connexion failed 1130- Host ‘X’ is not allowed to connect to this MySQL server

Il n’existe aucun utilisateur autorisé à se connecter depuis l’hôte X (dans la table des droits, il n’y a pas de user …@X).

Can’t connect to mysql server on [hôte]

L’option skip-networking du serveur est activée (au démarrage ou dans le fichier de configuration my.ini/my.cnf) et empêche les connexions TCP/IP venant de l’extérieur.

Désactivez également l’option bind-address 127.0.0.1

Arrêter le cluster

Pour arrêter le cluster, utilisez simplement cette commande dans le Shell sur la machine qui héberge le serveur de gestion MGM :

[cce]

ndb_mgm -e shutdown

[/cce]

Cela va forcer les processus ndb_mgm, ndb_mgm et ndbd à s’arrêter proprement. Tous les noeuds SQL peuvent alors être arrêté avec la commande mysqladmin shutdown classiques ou par d’autres moyens.

Pour relancer le cluster, lancez simplement ces commandes :

Sur l’hôte de gestion (12.0.1.10 et 12.0.1.11 dans notre cas) :

[cce]

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[/cce]

Sur chaque noeud de stockage (12.0.1.30 et 12.0.1.31) :

[cce]

ndbd

[cce]

N’oubliez pas d’invoquer cette commande avec l’option –initial lorque vous redémarrez un noeud NDBD normalement.

Et les hôtes SQL (12.0.1.20 et 12.0.1.21) :

[cce]

mysqld &

[cce]

Suite et fin au prochain épisode !

Catégories
Open-source Planet-libre Systeme

Que faire après l’installation de Ubuntu 11.10 ?

Je viens de finaliser l’installation sur mon PC portable perso (le pro reste sous Debian Stable) de la toute dernière version d’Ubuntu Desktop: Oneiric 11.10. Voici donc les actions que j’ai suivi pour en faire mon système maison.

Le script de post-install

Comme j’aime partager, j’ai mis sur mon GitHub la version du script de post install pour cette version d’Ubuntu. Pour l’installer  et l’executer sur un système fraichement installé, il suffit de  lancer les commandes suivantes:

[cce]

wget https://raw.github.com/nicolargo/ubuntupostinstall/master/ubuntu-11.10-postinstall.sh

chmod a+x ubuntu-11.10-postinstall.sh

sudo ./ubuntu-11.10-postinstall.sh

[/cce]

Il faut être patient car le script prend un certain temps à s’exécuter…

Que va faire ce script ?

  • Installer une liste impressionnante de logiciels que je trouve utile (la liste se trouve ici). Libre à vous de modifier le script pour l’adapter à vos besoins. On peut citer Dropbox, Google Earth, Jupiter (pour les PC portables)…
  • Installer Gnome Shell (Gnome 3) car je n’arrive pas à me faire à Unity (je suis sûrement trop vieux).
  • Installer un thème pour ce même Gnome Shell.
  • Faire quelques configurations systèmes (remettre les icônes d’agrandissement et de réduction des fenêtres, passer la barre de notification dans celle du haut, ajout d’alias dans le .bashrc…).

A noter que pour finaliser l’installation de Dopbox, il faut lancer l’application après la fin du script.

Configuration à la mimine

Il reste maintenant à mener des actions qui ne sont pas automatisable par le script de post install.

Update: les 2 premières étapes sont maintenant automatisées par le script (merci à Makidoko).

Etape 1 – On passe sous Gnome Shell

Après un bon petit reboot, vous allez normalement arriver sur le gestionnaire LightDM ou il faudra sélectionner GNOME (Gnome Shell) comme interface utilisateur en lieu et place d’Ubuntu (UNITY).

Devant vos yeux ébahis, vous devriez avoir l’interface Gnome Shell par défaut.

Etape 2 – On change de (Gnome) thème

Pour sélectionner un thème plus agréable à ces mêmes yeux, il suffit de lancer l’utilitaire Gnome Tweak Tool:

  • d’appuyer sur la touche SUPER (Windows) de votre clavier
  • entrer « gnome tweak tool » dans la zone de recherche
  • cliquer sur l’icône Advanced Settings

Puis quand le logiciel est lancé, il faut se rendre dans le menu Shell Extensions et activer le plugin User Themes Extension qui va prendre en compte les thèmes qui se trouve dans le répertoire $HOME/.themes.

Il faut ensuite relancer Gnome Tweak Tool puis aller dans le menu Theme et sélectionner Faience. En bonus, j’utilise les icônes Faenza-Dark.

Etape 3 – On configure sa barre de lancement

Ici c’est affaire de goût, personnellement, j’ai les applications suivantes:

  • Chromium, the navigateur Web (même si il m’arrive d’utiliser Firefox en //)
  • Terminator, parce que les lignes de commandes il n’y a rien de mieux
  • VLC, c’est français, léger, rapide, complet… Le top du multimédia
  • Shutter, pour faire de beaux screenshots
  • Spotify car ma musique est virtuelle

Voila un petit aperçu final:

Et de votre coté, vous avez switchés vers la 11.10 ? Cela donne quoi ?

Catégories
Developpement Open-source Planet-libre Systeme

MySQL Cluster – Installation 3/5

Ce billet est le premier d’une série de 5 articles sur Cluster MySQL écrite par Rémy Verger(auteur invité).

Je rappelle que ce billet est le second d’une série de 5 billets:

1. Introduction

2. Concepts de base de MySQL Cluster / Configuration simple-multi serveurs

3. Installation

4. Demarrage du MySQL Cluster

5. Commande d’administration

Il est préférable de télécharger directement les paquets sur le site officiel de MySQL.

Dans notre cas nous utiliserons une distribution CentOS 6.0 avec les paquets RedHat Cluster Suite . On commence donc par téléchargez les paquets suivant :

MySQL-Cluster-gpl-client-7.1.15a-1.rhel5.x86_64.rpm

MySQL-Cluster-gpl-tools-7.1.15a-1.rhel5.x86_64.rpm

MySQL-Cluster-gpl-storage-7.1.15a-1.rhel5.x86_64.rpm

MySQL-Cluster-gpl-shared-7.1.15a-1.rhel5.x86_64.rpm

MSQL-Cluster-gpl-management-7.1.15a-1.rhel5.x86_64.rpm

MySQL-Cluster-gpl-server-7.1.15a-1.rhel5.x86_64.rpm

On les installe avec la commande suivante:

[cce lang= »bash »]

rpm-ivh mysql-cluster-gpl-*

[/cce]

Je vous conseille de faire l’installation pas à pas. Si jamais lors de l’installation des paquets, vous rencontrez une erreur similaire a celle ci :

Vous devez désinstaller la librairie qui pose soucis . Car elle corrompt les paquets de MySQL-Cluster .

Serveur de management

Dans un premier temps il est préférable de commencer par les serveurs de management, il s’agit de la même configuration sur les deux, avec la même installation de paquet.

Nous devons créer config.ini dans le répertoire /var/lib/mysql-cluster qui permettra le chargement des fichiers de configuration pour le Cluster. On ajoute des directives de configuration suivantes dans le fichier.

[cce lang= »bash »]

# vim /var/lib/mysql-cluster/config.ini

[NDBD DEFAULT]

NoOFReplicas=2

LockPagesInMainMemory=1

DataMemory=4000M

IndexMemory=768M

ODirect=1

NoOfFragmentlogFiles=300

MaxNoOfConcurrentOperations=100000

TimeBetweenGlobalCheckpoints=1000

TimeBetweenEpochs=200

DiskCheckpointSpeed=5M

DiskCheckpointSpeedInRestart=50M

RedoBuffer=16M

MaxNoOfTables=9096

MaxNoOfAttributes=10000

MaxNoOfExecutionthreads=4

MaxNoOfOrderedIndexes=5000

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

SendBufferMemory=8M

ReceiveBufferMemory=8M

[NDB_MGMD]

NodeId=1

HostName=12.0.1.10

[NDB_MGMD]

NodeId=2

HostName=12.0.1.11

[NDBD]

NodeId=3

HostName=12.0.1.30

[NDBD]

NodeId=4

HostName=12.0.1.31

[MYSQLD]

Hostname=12.0.1.20

[MYSQLD]

Hostname=12.0.1.21

[/cce]

Il faut que les deux serveurs de management possède exactement le même fichier de configuration, si vous êtes sous CentOS et que vous n’avez jamais touché a la configuration du parefeu, pensez a le désactiver.

[cce lang= »bash »]

# chkconfig iptables off

[/cce]

Serveurs SQL et serveurs de nœud

Il vous faut installer les mêmes paquets sur ces quatres autres machines, et elles possèdent toutes le même fichier de configuration /etc/my.cnf

[cce lang= »bash »]

# vim /etc/my.cnf

[client]

port=3306

socket=/var/lib/mysql/mysql.sock

[MYSQLD] # Options du processus mysqld

ndbcluster # Fonctionne en mode NDB

ndb-connectstring=12.0.0.100 # Situation du noeud MGM

[MYSQL_CLUSTER] # Options pour le processus ndbd

ndb-connectstring=12.0.0.100 # Situation du noeud MGM

[/cce]

Sur les serveurs SQL pensez a utiliser la commande :

[cce lang= »bash »]

# mysql_secure_installation

[/cce]

Elle permet de donner un mot de passe par défaut a votre serveur SQL, ainsi que l’accès a distance .