Catégories
Hardware Open-source Planet-libre

Ma shortlist d’Ultrabooks sous GNU/Linux

dellxps

Je cherche à remplacer mon bon vieux PC laptop personnel qui commence un peu à dater (Fujitsu Lifebook S Series de 2009). L’utilisation que je fais de ce PC est assez varié: Surf sur le Web, blogging, développement, traitement d’image (photo)…

A partir de mon expérience sur le Fujitsu, les caractéristiques minimales sont les suivantes (par ordre décroissant d’importance):

  • composant compatible avec les distributions GNU/Linux (Ubuntu pour mon cas)
  • écran avec une résolution Full HD avec une diagonale minimale de 13″
  • 8 Go de RAM
  • disque dur système SSD car une fois que l’on y a goûté, il est impossible de revenir en arrière
  • processeur i5 ou supérieur
  • qu’il ne soit pas trop moche car il traîne souvent dans mon salon et pas trop lourd car je l’emporte avec moi en voyage et déplacement
  • un clavier AZERTY normal (donc ce qui met hors jeu des Apple MacBook Pro…)
  • un prix autour des 1200€

Comme vous pouvez le voir, ces caractéristiques collent parfaitement avec les laptop de type ultrabook.

J’ai donc commencé à chercher sur le net des informations sur les machines pouvant coller à mes besoins. De manière assez surprenante, la liste n’est pas si grande que cela. En effet, à l’heure actuelle (décembre 2013), beaucoup d’Ultrabooks ne proposent qu’une résolution « HD Ready »  (1366×778 pixels) ou d’une mémoire trop juste (4 Go).

Ainsi, ma shortlist  initiale se compose d’une dizaine de machines: CLIQUEZ ICI pour consulter ma liste sur Google Drive.

Voici, par ordre alphabétique, les ultrabooks qui sortent du lot par rapport à mes besoins/goûts.

Clevo W840SU 14″

Proposé par le site Anglais PCSpecialist, ce laptop n’est pas à proprement parler un ultrabook mais dispose d’une configuration paramétrable, d’un port Ethernet (oui madame !) et de composant de qualité. Il peut de plus être commandé sans OS Windows, d’ou un prix de vente assez concurrentiel (moins de 1200 € pour une configuration musclée).

Le seul problème pour moi est le design général qui n’est pas vraiment glamour.

cosmos

 

 

Dell XPS 13 Dev

La deuxième machine est beaucoup plus connue car elle avait fait le buzz au moment de sa commercialisation. Imaginer un ultrabook design, doté d’une configuration musclée pour les développeurs sous Ubuntu (au moins on est sûr de la compatibilité) !

Vous en avez rêvé ? Dell a essayé de le faire avec son XPS 13 Dev Edition.

Au niveau du look, rien à dire, c’est une belle machine que l’on a pas honte de sortir en public. Au chapitre des points négatifs: pas de port Ethernet et un prix qui grimpe à plus de 1300€ avec la livraison.

dellxps2

 

Lenovo Ideapad Yoga 2 Pro 59386559

Quoi ? Un IBM (enfin Lenovo) dans cette sélection ? Et oui, l’Ideapad Yoga 2 est une bien belle machine avec notamment une dalle HD avec une résolution de 3200×1800 pixels, un design très sympa (si on aime le orange) et une configuration qui tient la route pour 1200€.

Il est par contre très difficile de le trouver en France et la compatibilité avec Linux demande quelques manipulations.

lenovo

 

MOUNTAIN Portátil LightU T744G

Enfin, pour finir cette sélection, nous allons aller du coté de l’Espagne ou l’intégrateur Mountain propose des PC et laptops à configurer et compatible avec Ubuntu (il propose même d’installer nativement l’OS avant de vous l’expédier).

La configuration est bonne, le design plus sexy que le Clevo Anglais mais le prix grimpe à plus de 1300€.

capture_145

 

Conclusion

Je ne suis pas encore fixé sur mon choix final. Pour l’instant, le Montain, le Dell et le Lenovo tiennent la corde.

Avez-vous d’autres pistes ?

Catégories
Open-source Planet-libre

Supervision de son PC bureautique avec Glances

D’abord orienté vers la supervision de machines distantes, Glances permet également de surveiller l’ensemble des paramètres systèmes de ses machines bureautique. De plus, depuis sa version 1.7.2 , Glances offre une interface Curses sur l’ensembles des plateformes: GNU/Linux, BSD, Mac OS et même … MS Windows.

Il est en effet fréquent d’observer un ralentissement, voir un blocage de sa machine locale. Nous allons voir comment configurer puis utiliser Glances pour en trouver les causes et ainsi prendre les actions adéquates.

Configuration de Glances

Après installation de Glances sur son système (le plus simple étant de passer par PyPI), un fichier de configuration par défaut est disponible sous /etc/glances/glances.conf sous GNU/Linux (voir ici pour les emplacements sur les autres systèmes). Je vous conseille de copier ce fichier en local dans votre répertoire de configuration standard (~/.config/glances ou $XDG_CONFIG_HOME/glances).

mkdir -p ~/.config/glances
cp /etc/glances/glances.conf ~/.config/glances/

On peut ensuite éditer son fichier selon ses besoins: ~/.config/glances/glances.conf

Voici le fichier que j’utilise sur mon PC portable:

[cpu]
# Limits values for CPU user in %
# Defaults values if not defined: 50/70/90
user_careful=50
user_warning=70
user_critical=90
# Limits values for CPU system in %
# Defaults values if not defined: 50/70/90
system_careful=50
system_warning=70
system_critical=90
# Limits values for CPU iowait in %
# Defaults values if not defined: 40/60/80
# Not easy to tweek...
# Source: http://blog.scoutapp.com/articles/2011/02/10/understanding-disk-i-o-when-should-you-be-worried
#         http://blog.logicmonitor.com/2011/04/20/troubleshooting-server-performance-and-application-monitoring-a-real-example/
#         http://blog.developpeur-neurasthenique.fr/auto-hebergement-iowait-ma-tuer-1-2-vmstat-mpstat-atop-pidstat.html (FR)
iowait_careful=40
iowait_warning=60
iowait_critical=80

[load]
# Value * Core
# Defaults values if not defined: 0.7/1.0/5.0 per Core
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
#         http://www.linuxjournal.com/article/9001
careful=0.7
warning=1.0
critical=5.0

[memory]
# Defaults limits for free RAM memory in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[swap]
# Defaults limits for free swap memory in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[temperature]
# Temperatures in °C for sensors
# Defaults values if not defined: 60/70/80
careful=60
warning=70
critical=80

[hddtemperature]
# Temperatures in °C for hddtemp
# Defaults values if not defined: 45/52/60
careful=45
warning=52
critical=60

[filesystem]
# Defaults limits for free filesytem space in %
# Defaults values if not defined: 50/70/90
careful=50
warning=70
critical=90

[process]
# Limits values for CPU per process in %
# Defaults values if not defined: 50/70/90
cpu_careful=50
cpu_warning=70
cpu_critical=90
# Limits values for MEM per process in %
# Defaults values if not defined: 50/70/90
mem_careful=50
mem_warning=70
mem_critical=90

[monitor]
# Define the list of processes to monitor
# *** This section is optionnal ***
# The list is composed of item (list_#nb <= 10)
# An item is defined:
# * description: Description of the processes (max 16 chars)
# * regex: regular expression of the processes to monitor
# * command: (optional) full path to shell command/script for extended stat
#            Use with caution. Should return a single line string.
# * countmin: (optional) minimal number of processes
#             A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
#             A warning will be displayed if number of process > count
list_1_description=Chromium browser
list_1_regex=.*chromium-browse.*
list_1_countmax=50
list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_countmin=1
list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

En plus des jeux de limites pour les alertes de CPU, de charge (LOAD) et de mémoire (MEM), je souhaiterai que l’on s’attarde un peu sur la section [monitor] qui permet de mettre en avant une liste de processus jugés importants.

[monitor]
# Define the list of processes to monitor
# *** This section is optionnal ***
# The list is composed of item (list_#nb <= 10)
# An item is defined:
# * description: Description of the processes (max 16 chars)
# * regex: regular expression of the processes to monitor
# * command: (optional) full path to shell command/script for extended stat
#            Use with caution. Should return a single line string.
# * countmin: (optional) minimal number of processes
#             A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
#             A warning will be displayed if number of process > count
list_1_description=Chromium browser
list_1_regex=.*chromium-browse.*
list_1_countmax=50
list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_min=1
list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

Je défini donc 3 groupes de processus qui vont donner l’affichage suivant dans l’interface de Glances:

capture_142

Supervision de Chromium

Le premier groupe (list_1) permet de surveiller les processus relatifs à mon navigateur Web (Chromium).

Pour cela je lui donne un label (list_1_description) qui est une chaîne de caractères complètement arbitraire (mais limité à 15 caractères):

list_1_description=Chromium browser

Ensuite, il faut définir l’expression régulière qui va permettre de regrouper les processus:

list_1_regex=.*chromium-browse.*

Le problème avec Chromium, c’est qu’il peut être très consommateur de ressources (notamment mémoire) si l’on ouvre un grand nombre de pages. Je configure donc une surveillance du nombre maximum de processus. Glances affichera donc la ligne en rouge si ce nombre est dépassé:

list_1_countmax=50

Je ne défini pas de commande (list_1_command) associé à ce groupe. Donc par défaut Glances va calculer la consommation CPU et la mémoire globale des processus de ce groupe.

Supervision d’OpenVPN

J’utilise souvent un service VPN pour surfer (entre autre…) sur le Web. J’ai donc ajouté une supervision du processus OpenVPN:

list_2_description=OpenVPN
list_2_regex=.*openvpn.*
list_2_min=1

Contrairement à Chromium, je pose ici une alerte si le nombre de processus est inférieur à 1 (donc si OpenVPN n’est pas lancé).

Supervision de Dropbox

Avoir ces fichiers disponibles sur toutes ses machines est devenu pour moi complètement indispensable. La supervision du service Dropbox est faite par Glances de la manière suivante:

list_3_description=Dropbox
list_3_regex=.*dropbox.*
list_3_countmin=1
list_3_command=dropbox filestatus ~/Dropbox

Rien de bien nouveau sur les 3 première lignes, la dernière nécessite cependant quelques explications. La commande (shell) passée en paramètre de (list_3_command) sera exécuté à chaque « check » de Glances (donc par défaut toutes les 3 secondes). Cette commande va demander à Dropbox l’état de synchronisation mon répertoire (voir ce billet pour apprendre à  administrer Dropbox en ligne de commande).

Utilisation de Glances

Votre Glances est maintenant prêt à être utilisé. Donc si vous rencontrez un problème sur votre machine, il faudra ouvrir un terminal et saisir la commande:

glances -ey -C ~/.config/glances/glances.conf

Glances va se lancer et afficher les informations sur votre système:

capture_143

 

En plus de la section [monitor] ou l’on retrouve la supervision de nos groupes Chromium, OpenVPN et Dropbox, on a également l’ensemble des informations systèmes.

Dans le bandeau du haut, les informations sur la CPU, la charge et la mémoire. Les codes couleurs sont standards:

GREEN stat counter is "OK"
BLUE stat counter is "CAREFUL"
MAGENTA stat counter is "WARNING"
RED stat counter is "CRITICAL"

Sur le panneau de gauche, on a les informations moins critiques comme: les débits des interfaces réseau, les capteurs de température, les IO disques et l’espace disque.

Au centre, sur la section [monitor], on retrouve la liste des processus avec, par défaut, un tri « intelligent ». Par exemple, en cas de consommation mémoire excessive, le tri sera automatiquement fait sur la consommation RAM des processus.

Enfin en bas de l’écran, un rappel des dernières alertes.

Pour une description précise des fonctions de Glances, je vous conseille la lecture de la documentation officielle (lisible ici).

Conclusion

Nous arrivons à la fin de ce billet. Je n’ai pas parlé du mode client serveur qui permet de lancer Glances en tache de fond et de l’interroger à la demande mais je pense que ce mode d’utilisation est plus utilise pour la supervision de serveurs.

Si vous avez des configurations spécifiques de Glances (et surtout du [monitor]) pour surveiller vos PC, partager cela (configuration et screenshot) avec nous !

Catégories
Open-source Planet-libre

Glances 1.7.2 et son interface pour Windows

glances-white-256

Glances est maintenant disponible dans sa version 1.7.2. Au chapitre des nouveautés, une nouvelle interface cliente pour ceux d’entre vous qui ne peuvent pas se passer, par choix ou par contrainte, du système d’exploitation Microsoft Windows.  Cette interface se base sur la librairie ColorConsole et permet dans une console de commande Windows d’avoir un « look and feel » qui se rapproche de la version GNU/Linux.

Voici le résultat dans une console standard sous Windows 7:

glances-1.7.2-windows-cmd

Je vous conseille cependant de télécharger la console Console2 qui comble en partie les manques de la console par défaut (cmd).

glances-1.7.2-windows-console2

Afin de faciliter l’installation sur Windows, Frédéric Aoustin a eu la bonne idée de créer un installeur qui installe Python, les librairies nécessaires ainsi que Glances. L’installeur est disponible ici:

downloadGlances-1.7.2-win32.msi
(32-bit, MD5: dba4f6cc9f47b6806ffaeb665c093270)

Je pense que la plupart des lecteurs de ce blog ne seront jamais arrivés jusqu’ici mais si c’est le cas, ils seront heureux d’apprendre que cette version apporte également les améliorations suivantes:

  • Mise à jour de la documentation
  • Amélioration du packaging pour BSD et OpenSuse
  • Correction de nombreux bugs

Pour les Linuxiens, une mise à jour à partir de Pip est à faire avec la ligne de commande:

sudo pip install --upgrade Glances

A vos commentaires…

Catégories
Nagios Open-source Planet-libre

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

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

Identification du problème

Vous avez le message suivant quand vous lancer Nagios ?

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

alors ce billet est fait pour vous…

Explication du pourquoi…

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

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

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

sudo apt-get install daemon

Puis on hack le script de démarrage:

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

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

sudo service nagios start

 …Ou utiliser un script qui fait tout pour vous

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

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

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

Catégories
Open-source Planet-libre Reseau Video

Installation d’un serveur proxy HTTP Squid sous Debian

Marre de ne pas pouvoir regarder une vidéo  basse résolution sur YouTube alors que votre FAI adoré (Free pour ne pas le citer) annonce un débit sur votre ligne de plusieurs megabits par seconde ?

Il suffit de disposer d’un simple serveur dédié ou virtuel chez un hébergeur (autre que Free bien sûr), d’y installer un proxy HTTP et à vous les vidéos en HD même en pleine soirée.

Pour illustrer ce billet, j’ai donc installé Squid (le plus connu des proxy Web) sur mon serveur OVH qui dispose d’une liaison directe, illimitée et non bridée vers Internet à 100 Mbps.

squid

Installation du serveur Squid

On commence par mettre à jour son système avec la combo:

sudo apt-get update && sudo apt-get upgrade

Ensuite on installe le logiciel Squid qui à le bon goût d’être dans les dépôts officiels de Debian:

sudo apt-get install squid

Puis on arrête le service Squid (qui doit maintenant tourner en tache de fond) en attendant sa configuration:

sudo service squid stop

On édite la configuration qui se trouve centralisée dans le fichier /etc/squid/squid.conf en éditant notamment:

  1. La gestion de l’accès au service uniquement réservé aux adresses IP clairement identifiées (par exemple remplacer AAA.BBB.CCC.DDD par l’adresse IP publique de votre domicile). Vous pouvez ajouter autant de ligne que d’adresse IP.
    acl nicolargo src AAA.BBB.CCC.DDD/32 # Home sweet home
    http_access allow nicolargo
  2. On masque notre adresse IP dans le header HTTP (X-Forwarded-For: unknown)
    forwarded_for off

Note: la liste des options disponibles est décrite sur le site officiel (la version de Squid disponible sous Wheezy est, au moment de l’écriture de ce billet, la branche 2.7) ou par la commande ‘man squid.conf’.

Une fois la configuration finalisé en fonction de vos besoins, il suffit de relancer le service:

sudo service squid start

Configuration des machines clientes

Il ne rest plus qu’à configurer son/ses clients (PC, Smarthphone ou tablette) pour utiliser le serveur proxy Squid fraîchement installé.

Avec une configuration par défaut, Squid est en écoute sur le port TCP numéro 3128. Il faut donc, pour utiliser le serveur proxy Squid configurer l’adresse IP de votre machine hébergeant Squid et le port 3128.

Si vous utilisez Chromium comme navigateur Web, je vous conseille l’installation du plugin TunnelSwitch (lien vers le store) qui va vous permettre de passer rapidement (en un seul click de souris) entre un lien direct (sans proxy) et indirect (avec proxy).

capture_133

 

capture_134

Catégories
Developpement Open-source Planet-libre

Gérer ces processus/démons Python avec Supervisor

C’est en lisant la document du projet 0Bin, une implémentation libre et auto-hébergé de PasteBin dont je reparlerai bientôt, que je suis tombé sur Supervisor. Supervisor est un système de contrôle de processus (comme launchd ou runinit) simple et orienté utilisateur (voir la documentation et les avantages ici) et donc idéal pour lancer des processus Python en mode démon (par un exemple un serveur Glances, mais ce n’est qu’un exemple…).

Installation de Supervisor

Sur un système Debian/Ubuntu, l’installation de Supervisor se résume à la saisie de la commande suivante dans un terminal:

sudo apt-get install supervisor

Une fois l’installation terminé, nous allons maintenant configurer Supervisor en utilisant le fichier /etc/supervisor/supervisord.conf (sur un système Debian).

Ajout d’un démon dans Supervisor

Nous allons donc prendre l’exemple d’un administrateur système qui souhaite que le serveur Glances soit lancé au démarrage de la machine et que celui ci soit redémarré automatiquement dans le cas ou Glances plante <mauvaisefois>ce qui n’arrive jamais</mauvaisefois>.

Pour lancer Glances en mode serveur, il faut utiliser la ligne de commande suivante:

/usr/local/bin/glances -s -C /etc/glances/glances.conf -P motdepasse

Il suffit donc d’ajouter la section suivante en fin du fichier  /etc/supervisor/supervisord.conf:

; Glances server section
[program:glances]
command=/usr/local/bin/glances -s -C /etc/glances/glances.conf -P motdepasse
user=nicolargo
autostart=true
autorestart=true

On demande a ce que le processus soit exécuté avec les droits d’un utilisateur standard (user=nicolargo dans mon exemple) et que le processus démarre automatiquement au démarrage de Supervisor (autostart=true) et qu’il soit bien redémarré si Supervisor détecte un problème sur le processus Glances.

Prendre en compte la configuration et administrer nos processus

Pour que notre configuration soit prise en compte, il faut relancer Supervisor avec les lignes de commandes:

sudo service supervisor stop
sudo service supervisor start

Normalement, à ce stade, votre processus Glances server doit être lancé. Pour le vérifier vous pouvez utiliser la commande supervisorctl qui permet d’avoir un statu des processus et un moyen simple de les arrêter / démarrer.

Vérification du statu du service Glances server:

$ sudo supervisorctl status
glances                          RUNNING    pid 5844, uptime 0:26:11

Je vous laisse regarder les autres commandes disponibles avec supervisorctl:

$ sudo supervisorctl help

default commands (type help <topic>):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update 
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

 

Catégories
Open-source Planet-libre Systeme

Dropbox et la ligne de commande

Je suis utilisateur du service Dropbox depuis maintenant quelques temps. Il me permet de synchroniser les fichiers entres mes différentes machines (même les serveurs). Depuis ses débuts, Dropbox propose un client pour système GNU/Linux complètement intégré dans l’environnement graphique.

Ce qui est moins connu, c’est l’utilisation de la bonne vieille ligne de commande pour profiter de ce service. C’est ce que nous allons voir ensemble dans ce billet en parcourant quelques fonctions disponibles.

Ré-initialiser du cache

Dans certains cas, il se peut que votre client Dropbox tourne dans le vide (l’icône de notification reste bloqué sur une mise à jour de fichier). Je suis bien placé pour le savoir car cela vient de m’arriver…

Pour repartir d’une configuration propre, il est nécessaire de nettoyer le cache de Dropbox. Il n’y a pas de commande à proprement parler pour faire cela mais un simple:

rm -R ~/Dropbox/.dropbox.cache/*

devrait suffire à remettre votre Dropbox dans le droit chemin de la synchronisation.

Arrêter puis relancer Dropbox en ligne de commande

Si vous avez à écrire un script shell qui va générer des fichiers non désirables (ou bien trop volumineux) dans un des répertoire de votre Dropbox, il peut être utile d’arrêter puis de relancer le service depuis le script. On évitera ainsi de saturer sa ligne internet avec des transferts inutiles.

Pour cela on utilisera les commandes:

dropbox stop
...
<votre script ici>
...
dropbox start

Obtenir des informations sur l’état de Dropbox

Pour obtenir le status du démon Dropbox (processus dropboxd), il est possible d’utiliser:

$ dropbox  status
Idle

Note: la commande ‘dropbox running’ renvoie le code retour 1 si le démon Dropbox est lancé, 0 sinon. 

Si vous souhaitez avoir l’état de synchronisation de votre répertoire ~/Dropbox:

$ dropbox filestatus ~/Dropbox/
/home/nicolargo/Dropbox/: up to date

Il est possible de passer en paramètre de cette dernière fonction un fichier (ou un répertoire):

$ dropbox filestatus ~/Dropbox/Public/ESIL2010-Cloud.pdf 
/home/nicolargo/Dropbox/Public/ESIL2010-Cloud.pdf: up to date

Obtenir l’URL publique des fichiers de votre Dropbox

Last but not least, Dropbox permet de partager vos fichiers en générant une URL publique. Celle-ci peut être obtenue en ligne de commande (ou dans vos scripts) via:

$ dropbox puburl ~/Dropbox/Public/ESIL2010-Cloud.pdf 
https://dl.dropboxusercontent.com/u/1112933/ESIL2010-Cloud.pdf

Pour aller plus loin: l’API Python

Si (comme moi), vous développez en Python, il existe une API permettant de jouer avec le service Dropbox. Je vous conseille la lecture de la page officielle sur le sujet.

Catégories
Hardware Nagios Open-source Planet-libre

Supervision d’un NAS NetApp avec Nagios ou Shinken

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

nas01

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

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

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

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

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

Installation du plugin chek-netapp-ng

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

Pour installer le plugin sur Nagios, il faut saisir:

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

Pour Shinken:

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

Configuration du plugin chek-netapp-ng

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

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

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

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

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

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

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

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

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

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

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

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

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

Déclaration de votre serveur NAS

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

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

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

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

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

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

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

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

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

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

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

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

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

On peut donc superviser les choses suivantes:

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

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

Catégories
Blog Hardware

Test de la nouvelle tablette Nexus 7

La semaine dernière j’ai reçu la dernière tablette Nexus 7 de Google. C’est mon premier matériel sous Android et je vais, dans ce billet, partager mes premières impressions avec vous.

Le hardware

Apple ayant poussé le packaging de ces produits à un niveau très (trop ?) élevé, la concurrence s’est petit à petit mis au diapason et le déballage de la version 2013 de la tablette 7 pouces de Google, en réalité fabrique par Asus, est un vrai bonheur: qualité de fabrication de la boîte, la tablette occupant toute la surface à l’ouverture, le câble mini USB (un peu court) et le chargeur disposés en dessous.

capture_116Une fois dans les mains et le film protecteur retiré, la première chose qui saute aux yeux est la finesse de la Nexus 7, la découpe en biseau accentuant encore plus cette impression. Par contre son poids (290 g) n’est pas négligeable, sans toutefois sortir des normes des autres tablettes du marché. Son format (14.4 * 20 cm) est pour moi idéal car on peut la tenir verticalement dans une seule main et se servir de l’autre pour naviguer.

Seul bémol, quand on prend la tablette, les boutons d’allumage et de réglage du volume, positionnés sur le coté en haut à droite ne tombent pas sous la main et il faut souvent les regarder pour ne par augmenter le son au lieu de le baisser.

L’écran est très lumineux et toujours lisible, même si on utilise la tablette en extérieur. Il est de plus très résistant aux traces de doigt. J’ai en mon fils, le meilleur bêta testeur pour ce dernier test…

Je passe rapidement sur la qualité du capteur photo. C’est pour moi un gadget sur ce genre de format de tablette. Qui, mis à part certains touristes, utilise des tablettes 7 ou 10 pouces pour prendre des photos ? Coté vidéo, il est possible d’enregistrer des séquences en HD 720p même si là encore, la Nexus ne pourra pas remplacer une « vraie » caméra.

Le système

La Nexus 7 opus 2013 est livré avec le système Android 4.3 (alias Jelly Bean). Vu la puissance du processeur de la tablette, la navigation dans les différentes fenêtres d’Android est parfaitement fluide. J’aime beaucoup le nouveau système de switch entre utilisateurs qui permet de partager la tablette entre plusieurs personnes d’une même famille et ainsi d’avoir au choix: un environnement complètement indépendant par personne (pour les parents) ou bien des comptes limités ou l’on choisit les applications/fonctions disponibles (pour les enfants).

Mis à part cela, on retrouve un système Android classique (sans surcouche), auquel j’ai immédiatement ajouté quelques applications « système » comme le très bon SSH Server et l’indispensable MX Player qui permet de lire tous vos fichiers vidéos (ce qui n’est pas le cas de l’application fournie en standard par Google).

Habitué à IOS sur mon smartphone, j’ai été très agréablement surpris par la gestion multitache, le switch entre applications et la fermeture rapide de ces dernières (voir screenshot ci-dessous). C’est vraiment un point ou Android a gagné des points.

Google-Nexus-7-2013-multitache

Les applications

La grande majorité des jeux ne sont pas optimisées pour l’affichage sur l’écran HD de la Nexus 7 (écran full HD de 1900*1200 pixel) et sauf exceptions souvent signalées dans le store Google Play, on se retrouve avec une interpolation qui va doubler les pixels et produire donc un affichage relativement grossier. C’est par exemple le cas sur des applications aussi connues que Candy Cruch ou  Rayman Jungle Run. Pour les jeux HD, on tire alors profit de la puissance de la machine et je ne constate aucun ralentissement sur les jeux gourmands comme Asphalt 8.

Avec les applications d’informations et orientées média sociaux, on profite d’un affichage HD de toute beauté. C’est ainsi, le cas pour Facebook, Pinterest ou Appy Geek pour ne citer qu’elles.

Conclusion

Je suis satisfait de mon achat. La tablette a déjà été adopté par mes enfants et de mon coté je trouve l’expérience utilisateur très agréable. Je reparlerai prochainement de mon nouveau jouet.

Si vous voulez un test technique exhaustif, je vous conseille la lecture des reviews de PC World (en Fr) ou de Paste Mag (en En).tio

Catégories
Developpement Open-source Planet-libre

L’écosystème autour de Glances

Le nombre de projets gravitant autour de Glances étant devenu assez important, j’ai dessiné le schéma suivant (à partir du service en ligne Gliffy pour les plus curieux d’entre vous):

L'écosystème Glances
L’écosystème Glances

Le cœur de Glances (source disponible sur le Github officiel) est représenté en vert.

On trouve ensuite en bleu les projets composant son écosystème:

  • Glances plugin (ou CheckGlances) est un plugin pouvant de récupérer les statistiques d’un serveur Glances à partir de Nagios, Centreon ou de Shinken (ou de tout autre système compatible avec les plugins Nagios). Voir ce billet pour un exemple de mise en oeuvre.
CheckGlances
  • MetaGlances est une interface Web qui permet de centraliser les statistiques de plusieurs serveurs Glances. L’interface est « responsive » et donc compatible avec les écrans des PC, des tablettes et des smartphones (plus d’informations sur ce billet)
MetaGlances

 

  • PHPGlances est une API PHP pour s’interfacer simplement avec un serveur Glances. C’est la brique utilisé par MetaGlances. Pour un exemple de mise en oeuvre, vous pouvez lire ce billet sur le blog RootsLabs
Android Glances