Comme expliqué précédemment Tsung est un outil permettant de réaliser des tests de performances multi-protocole
Je vais essayé de fournir une méthode pour installer Tsung sur une Debian (testing) plus précisemment LMDE (Linux Mint Debian) et ensuite je vais vous montrer comment réaliser des tests de performances.
Installation :
Tout d’abord, il faut installer les pré-requis :
aptitude install erlang-asn1 erlang-base erlang-corba erlang-crypto erlang-dev erlang-docbuilder erlang-edoc erlang-erl-docgen erlang-eunit erlang-ic erlang-inets erlang-inviso erlang-mnesia erlang-nox erlang-odbc erlang-os-mon erlang-parsetools erlang-percept erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssh erlang-ssl erlang-syntax-tools erlang-tools erlang-webtool erlang-xmerl libsctp1 lksctp-tools
Une fois que tout est installé, il suffit de récupérer l’archive de Tsung et de la compiler.
Il existe une version paquet en .deb de Tsung pour Ubuntu mais de mon côté ça n’a pas fonctionné, la version de Erlang présent sur les dépôts différait de la version utilisée pour générer le paquet .deb
./configure
make
make install
Une fois le paquet installé, vous aurez 2 nouveaux binaires :
tsung-recorder & tsung
- tsung-recorder va vous permettre de créer vos scénarios de test de performances.
- tsung est l’outil qui lance le test
Comment réaliser des tests de performances :
Nous allons lancer tsung-recorder :
tsung-recorder start
Tsung-recorder va écouter sur le port 8090.
Il vous suffit ensuite de paramétrer le proxy de votre navigateur http://localhost:8090 puis de naviguer sur votre site internet.
Tsung-recorder va enregistrer toutes vos actions qui deviendront votre scénario.
Penser à lancer un stop une fois le scénario réalisé :
tsung-recorder stop
Vous retrouverez dans votre répertoire utilisateur un fichier xml qui aura un nom de ce genre :
tsung_recorder20110615-22:44.xml
Note :
Il faut penser à fermer tous les autres onglets, afin d’éviter de voir apparaître des requêtes qui seraient celle de rafraichissement automatique de page, j’ai eu le tour avec cacti par exemple.
Vous pouvez aussi désactiver les extensions générant des requêtes, j’ai pour ma part rencontré des problèmes avec l’extension LastPass
Une fois le scénario de navigation créé il faut créer le fichier de configuraiton utilisé par tsung :
Vous trouverez des exemples de fichiers de configuration dans ce dossier :
/usr/share/doc/tsung/examples/
Voici une explication basique du fichier de configuration, qui doit se trouver dans votre répertoire utilisateur, pour moi :
/root/.tsung/tsung.xml
<xml version= »1.0″?>
<!DOCTYPE tsung SYSTEM « /usr/share/tsung/tsung-1.0.dtd »>
<tsung loglevel= »notice » version= »1.0″>
<!– Configuration du client –>
<clients>
<client host= »localhost » use_controller_vm= »true »/>
</clients>
<!– Configuration du serveur cible –>
<servers>
<server host= »blog.admin-linux.org » port= »80″ type= »tcp »></server>
</servers>
<load>
<!– plusieurs phases d’arrivée de connexions peuvent être paramétrés :
Pour chaque phase, vous devez paramétrer l’interval entre chaque
nouvelle connection durant la phase.
Dans mon exemple, la phase dure 7 minutes, et durant ces 7 minutes
il y aura une connection toutes les 2 secondes –>
<arrivalphase phase= »1″ duration= »7″ unit= »minute »>
<users interarrival= »2″ unit= »second »></users>
</arrivalphase>
</load>
<!– Ici on va paramétrer les différents user_agent avec lesquels on
souhaite réaliser ce test.
La somme des probabilité doit toujours être de 100 –>
<options>
<option type= »ts_http » name= »user_agent »>
<user_agent probability= »40″>Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1</user_agent>
<user_agent probability= »40″>Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1</user_agent>
<user_agent probability= »20″>Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6</user_agent>
</option>
</options>
<!– start a session for a http user. the probability is the
frequency of this type os session. The sum of all session’s
probabilities must be 100 –>
<sessions>
<!– Ici on place les instructions du fichier xml généré avec tsung-recorder
ici tsung_recorder20110615-22:44.xml –>
</sessions>
</tsung>
Une fois votre fichier paramétré, il vous suffit de lancer tsung :
pydlaptop ~ # tsung start
Starting Tsung
"Log directory is: /root/.tsung/log/20110616-12:19"
Vous avez effectué à ce moment là votre premier test de performance, reste à connaître les résultats de ce tests.
Analyser ses performances :
Suite au test de performances, il est nécessaire d’avoir une vision du résultat.
Pour cela Tsung fournit un outils qui permet de générer une page donnant accès aux données, mais fournit aussi des graphiques
Il existe l’outil tsung_stats.pl pour ça.
Tout d’abord, il faut installer les pré-requis :
aptitude install gnuplot gnuplot-nox gnuplot-x11 groff libgd2-noxpm libnetpbm10 netpbm psutils ttf-liberation libappconfig-perl libtemplate-perl
Voici comment voir les paramètres de la commande :
/usr/lib/tsung/bin/tsung_stats.pl -help
Voici la commande que j’ai lancé pour traiter les données de mon test :
pydlaptop ~ # /usr/lib/tsung/bin/tsung_stats.pl --stats .tsung/log/20110615-23:53/tsung.log
warn, last interval (4) not equal to the first, use the first one (10)
No data for Match
No data for Event
No data for Async
No data for Errors
Vous optiendrez l’arborescence ci-dessous :
pydlaptop ~ # ls -l /home/pydubreucq/prog/tsung/.
total 808
drwxr-xr-x 2 pydubreucq pydubreucq 4096 16 juin 10:27 data
-rw-r--r-- 1 pydubreucq pydubreucq 9155 16 juin 10:35 gnuplot.log
drwxr-xr-x 2 pydubreucq pydubreucq 4096 16 juin 10:27 gnuplot_scripts
-rw-r--r-- 1 pydubreucq pydubreucq 5272 16 juin 10:35 graph.html
drwxr-xr-x 2 pydubreucq pydubreucq 4096 16 juin 10:32 images
-rw-r--r-- 1 pydubreucq pydubreucq 6895 16 juin 10:35 report.html
Il vous suffit ensuite d’ouvrir le fichier report.html dans un navigateur pour avoir ceux-ci :
Il est également possible de réaliser des graphes comparatifs via l’outils tsplot que je ne présenterai pas ici, mais qui est très intéressant.
Pour aller encore plus loin, il est possible de générer des bases de données RRDs :
Vous pouvez générer des rrds grâce au script réalisé par Rodolphe Quiédeville
Pour cela, il faut également installer les pré-requis :
aptitude install libdbi0 librrd4 rrdtool librrds-perl
Voici le script en question :
/usr/lib/tsung/bin/tsung-rrd.pl
Dire où trouver le fichier de log de tsung dans la variable ci-dessous :
$log_file = "tsung.log";
Ou alors, vous modifiez un peu le script pour que la valeur de log_file soit un argument passé à la commande comme ci-dessous :
$log_file = "$ARGV[0]";
De ce fait pour créer les rrd il faut lancer la commande comme ci-dessous :
/usr/lib/tsung/bin/tsung-rrd.pl /root/.tsung/log/20110615-23:53/tsung.log
Ceci génére plusieurs fichiers RRD que vous pouvez exploiter par la suite.
Libre à vous ensuite d’exploiter vos fichiers RRD ce n’est pas le but de cet article.
Liens utiles :
A noter que le logo utilisé pour illustrer cet article n’est pas le logo officiel, je l’avait fait il y a quelque temps et l’avait proposé à la communauté, mais ça n’avait jamais donné suite. J’en ai donc profité pour l’utilisé ici en l’agrémentant quelque peu…
17 juin 2011
Squeeze n’est plus en testing depuis belle lurette, non ? Maintenant, c’est Wheezy (http://www.debian.org/releases/testing/).
Bonne continuation.
17 juin 2011
Bien le bonjour,
En effet c’est une erreur de ma part… 🙂 J’ai commencé à écrire cet article un peu tard.
J’ai mis à jour, en fait, j’ai utilisé pour le test LMDE, qui est basé sur une Debian testing 😉
Merci beaucoup pour ton retour
27 juillet 2011
Ne pas oublier le paquet erlang-src si on compile les sources de tsung !
5 septembre 2011
Merci beaucoup pour votre tuto, tres clair et precis.
4 novembre 2011
Voila de quoi offrir un véritable outil de test de performance (avec scénario donc).
Je connaissais Jmeter mais pas Tsung.
A tester donc.
29 mars 2013
slu
lorsque je rempli le fichier de config et je demarre tsung on me di « config error, aborting! error missing element declaration in DTD,xml
line1, colone 2. merci davance pour votre repone
7 avril 2013
@yuyu pouvez-vous nous montrer le fichier en question dans un pastie ? C’est très probablement une erreur de syntaxe ou de lilbrairie manquante.