Archive for Tools

Focus sur les outils graphiques du 2.2

Comme promis lors de l’enregistrement du 2.2 et tant réclamé depuis, voici mes notes concernant les deux outils RRDTool & GnuPlot :

Dans ce premier exemple je vais me baser sur le résultat de la commande vmstat qui sort des statistiques chiffrées sur l’utilisation mémoire virtuelle et cpu. Tout est intégré dans un script qui permet :

  1. de générer la base de données RRD (rrdtool create)
  2. de collecter des données avec vmstat et des les insérer dans cette base (vmstat)
  3. de générer les graphiques grâce aux données collectées (rrdtool graph)

Référence : Article d’un blog IBM avec ce même script créé à l’origine en ksh pour AIX, modifié pour Linux en bash (RRDtool identique mais pas vmstat qui est natif OS!)

Il vous suffit de copier-coller ce script dans un rrdtest.ksh et de l’éxécuter avec un nombre de seconde correspondant à l’échantillon désiré : ./rrdtest.ksh 200

https://www.ibm.com/developerworks/mydeveloperworks/blogs/aixpert/entry/using_rrdtool_to_graph_vmstat_output_a_worked_example?lang=en

#!/bin/bash
if [[ $# -eq 1 ]] && [[ $1 -le 86400 ]]
then
echo This script captures for $1 seconds
echo Remove the previouss vmstat.rrd database in this directory
rm vmstat.rrd
echo Create vmstat.rrd for max 86400 seconds = max 24 hours at 1 second captures
rrdtool create vmstat.rrd --step 1 \
DS:r:GAUGE:5:U:U \
DS:b:GAUGE:5:U:U \
DS:swpd:GAUGE:5:U:U \
DS:fre:GAUGE:5:U:U \
DS:buff:GAUGE:5:U:U \
DS:cache:GAUGE:5:U:U \
DS:si:GAUGE:5:U:U \
DS:so:GAUGE:5:U:U \
DS:bi:GAUGE:5:U:U \
DS:bo:GAUGE:5:U:U \
DS:in:GAUGE:5:U:U \
DS:cs:GAUGE:5:U:U \
DS:us:GAUGE:5:U:U \
DS:sy:GAUGE:5:U:U \
DS:id:GAUGE:5:U:U \
DS:wa:GAUGE:5:U:U \
RRA:AVERAGE:0.5:1:86400
TIME=`date +%s`
echo startseconds $TIME
echo Capturing for $1 seconds
vmstat 1 $1 | awk -v time=$TIME '/^.[0-9]/{ n++; print "rrdtool update vmstat.rrd "time+n":" $1 ":" $2 ":" $3 ":" $4 ":" $5 ":" $6 ":" $7 ":" $8 ":" $9 ":" $10 ":" $11 ":" $12 ":" $13 ":" $14 ":" $15 ":" $16 }' >vmstat.output
ENDTIME=`date +%s`
echo endseconds $ENDTIME
echo Load the vmstat data into the vmstat.rrd database
echo The file has `wc -l vmstat.output` lines
bash <./vmstat.output
echo Graph the data
rrdtool graph plot/cpu_utilisation.png \
--rigid --lower-limit 0 --upper-limit 100 \
--title "CPU Utilisation" \
--vertical-label "Percent Stacked" \
--start $TIME \
--end $ENDTIME \
--height 600 \
--width 1000 \
DEF:us=vmstat.rrd:us:AVERAGE AREA:us#00FF00:"User" \
DEF:sy=vmstat.rrd:sy:AVERAGE STACK:sy#0000FF:"System" \
DEF:wa=vmstat.rrd:wa:AVERAGE STACK:wa#FF0000:"Wait" \
DEF:id=vmstat.rrd:id:AVERAGE STACK:id#FFFFFF:"Idle"
rrdtool graph plot/run_queue.png \
--title "Process Run Queue" \
--vertical-label "Processes" \
--height 600 \
--width 1000 \
--start $TIME \
--end $ENDTIME \
DEF:r=vmstat.rrd:r:AVERAGE LINE2:r#00FF00:"Run Queue"
rrdtool graph plot/block_io.png \
--title "IO blocks" \
--vertical-label "Nb Blocks" \
--height 600 \
--width 1000 \
--start $TIME \
--end $ENDTIME \
DEF:bi=vmstat.rrd:bi:AVERAGE LINE1:bi#00FF00:"IN" \
DEF:bo=vmstat.rrd:bo:AVERAGE LINE2:bo#0000FF:"OUT"
rrdtool graph plot/system.png \
--title "System" \
--vertical-label "Nb/sec" \
--height 600 \
--width 1000 \
--start $TIME \
--end $ENDTIME \
DEF:in=vmstat.rrd:in:AVERAGE LINE1:in#00FF00:"Interrupt" \
DEF:cs=vmstat.rrd:cs:AVERAGE LINE2:cs#0000FF:"Context Switch"
exit 0
else
echo "Invalid number of arguments or out of range..."
echo "USAGE : $0 [nb_seconds]"
echo "Use max 86400 seconds (24h) ; 3600 = 1h"
fi

Et voila : nos données vmstat sont dans une base rrdtool et les 4 commandes rrdtool graph m’ont sorti les 4 graphiques suivants qu’il ne vous reste plus qu’à injecter dans vos pages web ou envoyer par mail…

Dans l’ordre ci-dessous : CPU%, proc.run.queue, block IO & system interrupt, pour une collecte de 200 secondes. Pour savoir ce que ces données représentent, man vmstat !

 

 

Installation : sudo apt-get install rrdtool

Et comme vous le savez, “la taille du paquet” est importante pour moi : ces deux soft tiennent sur une disquette. Taille du package rrdtool installé : moins d’un MegaByte !

 

Trouver une série de chiffre pertinent pour une représentation graphique. Un fichier plat fait l’affaire mais une base de donnée peut également être attaquée par requête SQL. C’est ce que j’ai utilisé dans l’exemple ci-dessous :

Tapper gnuplot en ligne de commande pour vous retrouver dans le logiciel et encoder les lignes d’exemple suivantes, ou plus simplement pré-encoder un fichier .gnu contenant les lignes ci-dessous, et entrer ce fichier en argument : gnuplut bubulle.gnu

#GNUPLOT SCRIPT by bubulle @2012
# Setting terminal and variables
set terminal png
set output "/home/bubulle/plot/statest.png"
max=`sqlite3 DB1 'select max(EpisodeNr) from stat'`
# Setting Plot Parameters
set datafile separator "|"
set title "Downloaded Tux Podcast"
set style data linespoints #points lines steps fs dots
set yrange [0:*]
set xtics 259200 rotate by -60
set xdata time
set format x "%d/%m"
set timefmt "%Y-%m-%d"
# Generating Plot
plot for [i=1:max] "<sqlite3 DB1 'select d_date,EpisodeNr,Downloaded from stat where EpisodeNr=".i." order by d_date'" using 1:(stringcolumn(2) == i ? $3 : 1/0) title "EP".i

OK je vous concède que cette dernière commande qui injecte le résultat d’un SQL dans la commande de plotting n’a pas réussi du premier coup… mais après 2 ou 3 (50 en fait) essais, voici à quoi je voulais arriver : superposition de plusieurs séries dans la même échelle de temps :

Installation : sudo apt-get install gnuplot
Taille du package gnuplot installé : 45 kiloByte !

Voila pour ce mois-ci! On se retrouve avec plaisir autour du 20 mars pour le podcast 2.3.

Nettoyer son disque sous GNU/Linux avec agedu

Si vous êtes comme moi, vous aimez de temps en temps faire le nettoyage de printemps sur votre disque, il existe un petit outil extrêment sympathique découvert ce matin qui sert à visualiser votre utilisation disque.

Alors vous allez me dire que la commande “du” est parfaite pour ça. Oui, c’est vrai… la commande “du” fait déjà ça. Mais le petit soft “agedu” fait un peu plus:

  • Il vous permet des rapports web qui vous permettent de “naviguer” dans votre utilisation disque
  • Il tient compte de la date du dernier accès du fichier

Grâce à ce second point, ça met tout de suite en évidence les fichiers qui sont là depuis longtemps et qui, sans doute, peuvent être effacés.

Comment ça marche ?

Facile, ça s’installe avec un

apt-get install agedu

Ou bien un

yum install agedu

Bon, je ne vous les fait pas toutes, vous savez installer un package sur votre GNU/Linux

Après, on lance l’analyse sur les partitions qui vous sont familières, genre

agedu -s /home/CaptainPosix

ou encore carrément

agedu -s /

Ca va vous scanner votre répertoire et ses sous-répertoires, indexer le tout, et puis après, on publie sur une url du pc.

Si vous êtes seul sur votre machine, on fait simplement un

agedu -w --address 127.0.0.1:9000

En supposant que votre url est accessible par quelqu’un d’autre, on peut lui demander un “one time password”:

[root@MyPC~]# agedu -w --address 192.168.1.25:9000 --auth basic
Username: agedu
Password: p8u6mpbc9s4dy9gd
URL: http://192.168.1.25:9000/

Puis il suffit de se rendre sur l’URL en question à l’aide de votre plus beau browser et là, on voit un truc dans le style

Le répertoire racine

N’est-ce pas magnifique ???

Maintenant on navigue et par exemple, si on clique le répertoire usr:

le répertoire usr

Ce qui est long est gros en terme de volume disque, ce qui est rouge est vieux en terme de dernier accès à la resource…

Un autre truc sympa, si vous avez des tas de films AVI qui sont partout, on peut spécifier la recherche sur l’extension en faisant un

agedu -s . --exclude '*' --include '*.avi'

Voilà, en espérant que ça vous serve un jour…

Comment savoir si ma distro contient des paquets propriétaires ?

Dans la plupart des épisodes, nous discutons du statut libre ou pas
des paquets sur les divers dépots… Voici un utilitaire sympa pour savoir si votre distribution est dépouillé de logiciels propriétaires! Même si ce paquet contient son nom, il n’est pas développé par (Virtual) Richard M. Stallman.
Ce script Perl (sous licence GPL) inspecte simplement le fichier /var/lib/dpkg/status des distributions Debian et dérivés, à la recherche des paquets non-free ;-)

#apt-get install vrms
#vrms

… si vous êtes ‘RMS-compliant’, vous aurez droit à un petit gnu en ASCII vous félicitant de la part de Richard… Succulent !
Mais comme vous ne le serez probablement pas (?), allez donc quand même voir ce graphisme spéctaculaire sur le lien ci-dessous :
http://upload.wikimedia.org/wikipedia/commons/6/6b/Cowsay_vrms.png
(image sous licence GPL également… ouf!)
Nous attendons avec impatience vos résultats.

 

Bubulle