Comme chaque année, voici ma playlist Spotify avec une sélection des mes chansons coups de cœur de l’année 2013.
Bonne écoute et partagez avec nous vos playlists !
Comme chaque année, voici ma playlist Spotify avec une sélection des mes chansons coups de cœur de l’année 2013.
Bonne écoute et partagez avec nous vos playlists !
CTags est un outil pour les développeurs permettant de construire un index des fonctions et classes utilisées. Cela permet donc à un éditeur de texte compatible avec CTags de ce déplacer rapidement et sans « parsing » inutile dans l’arborescence de votre projet. On peut ainsi, à l’aide d’une simple combinaison de touches, aller directement à la définition d’une fonction.
Nous allons dans ce billet voir comment installer et configurer CTags avec l’éditeur de texte Sublime Text 3 dans un environnement Debian/Ubuntu.
Note: la procédure est grosso modo la même pour d’autres éditeurs comme Vim , Emacs ou GEdit.
CTags est disponible dans les dépôts de toutes les distributions. Sous Ubuntu, une simple ligne de commande:
sudo apt-get install ctags
devrait suffire pour installer une version stable de CTags.
Note: Pour installer CTags à partir des sources, toutes les informations se trouvent sur le site officiel.
Il existe de nombreuses manières pour construire les fichiers index CTags. La plus simple est de se rendre dans le répertoire de votre projet (par exemple ~/dev/monprojet) puis de saisir la commande suivante:
cd ~/dev/monprojet ctags -R -f .tags
On demande donc au logiciel ctags de générer le fichier index nommé .tags (option -f .tags) à effectuant un parsing récursif (option -R) de l’arborescence de votre projet.
Ce fichier doit être régénéré à chaque ajout de fonction ou de classe. Cela se fait par une combinaison de touche dans SublimeText mais peut aussi être automatisé par un hook après un commit Git.
Je pars sur le principe ou votre Sublime Text est installé avec le plugin Package Manager (si ce n’est pas le cas, suivre cette procédure).
Une fois Sublime Text lancé, on commence par appuyer sur la combinaison de touche SHIFT+CTRL+P puis de saisir le mot clé Install Package. La liste des plugins disponibles va se charger, on cherche ensuite le plugin CTags et on l’installe.
Au démarrage de Sublime Text dans le répertorie de votre projet (~/dev/monprojet) , le fichier index de Ctags (.tags) va automatiquement être chargé. Il ne vous reste plus qu’à utiliser les combinaisons de touches suivantes pour naviguer dans les classes et fonctions de votre code source:
| Commande | Key Binding |
|---|---|
| Générer / Re-générer le fichier index Ctags | CTRL+t, CTRL+r |
| Aller à la définition de la fonction/classe | CTRL+t, CTRL+t |
| Revenir en arrière | CRTL+t, CTRL+b |
| Affiche la liste des fonctions/classes (fichier en cours) | ALT+s |
| Affiche la liste des fonctions/classes (tous les fichiers du projet) | ALT+SHIFT+s |
L’utilisation des CTags apporte un gain de productivité non négligeable lors du développement logiciel. Le fait d’avoir une base commune et ouverte (le fichier .tags étant à plat et au format texte) permet de passer d’un éditeur à un autre sans perte de fonctionnalité.
Utilisez-vous les Ctags ? Si oui comment.
Partagez cela avec nous !
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):
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.
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.
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.
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€.
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 ?
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.
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:
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.
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é).
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).
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:
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:
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).
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 !
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:
Je vous conseille cependant de télécharger la console Console2 qui comble en partie les manques de la console par défaut (cmd).
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:
Glances-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:
Pour les Linuxiens, une mise à jour à partir de Pip est à faire avec la ligne de commande:
sudo pip install --upgrade Glances
A vos commentaires…
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.
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…
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.
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
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.
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.
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:
acl nicolargo src AAA.BBB.CCC.DDD/32 # Home sweet home http_access allow nicolargo
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
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).
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…).
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).
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.
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
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.
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.
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
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
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
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.
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.
Note: ce billet doit également être valable pour l’ensemble des produits NetApp.
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
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
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
}
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:
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.