Monitoring de sites web et surveillance de la performance et de la qualité de service

La qualité de la diffusion

Au delà du simple monitoring de site, surveiller la qualité et la performance d’une solution de web hosting et son architecture d’hébergement fait partie des fondamentaux du ebusiness.

En effet la qualité du service passe également par la qualité de la diffusion car :

  • Un visiteur parcoure plus de pages si le site est véloce
  • Le taux de rebond est inversement proportionnel à la rapidité du site
  • L’internaute quitte vite un site qui ne répond pas rapidement et est un frein dans son acte d’achat
  • Les moteurs de recherche index plus facilement le contenue d’un site rapide
  • Les moteurs de recherche et google en particulier accord plus de crédit au site rapide et les positionne mieux.

Google vient d’ajouter au webmaster tools un graphique des performances des sites abonnés. On peux raisonnablement conclure que le grand google tiens compte de la performance de la diffusion pour indéxer et positionner les sites. Si vous possédez un compte Google Webmaster tools vous pouvez déjà ausculté la courbe de performance de votre site et savoir en combien de seconde il répond.

Google Webmaster tools performance

Performance en yoyo de Karlesnine.com au grès des tests

Multiplier les contrôles

Vous pouvez vous contenter de l’analyse de performance offert par Google. Mais pour diverses raisons il peut être utile d’avoir sa propre source d’analyse :

  • Pour contrôler le contrôleur, en effet on ne connais si la methode ni la technique de google avec une référence externe est important.
  • Pour avoir une mesure depuis un point précis de l’internet, par exemple le réseau interne de l’entreprise ou celui d’un prestataire ou fournisseur.
  • Pour surveiller la concurrence et l’évalué par rapport à vos propres service

D’autre raisons qui sont autant de cas particuliers sont possible. Bien des services professionnels comme ip-label ou xiti offre de tel service de mesure mais pour plusieurs millier d’euro par an.

Solution système D

Mon besoin est de monitorer la qualité de délivrance de contenue de différent site, jour après jour et sur de longue période. J’ai donc chercher dans les solutions de monitoring classique. Je me suis naturellement orienté vers cacti je que connais depuis longtemps et qui a toujours répond à mes besoins.

Après quelque recherche j’ai trouver un agent de monitoring en php utilisant curl pour cacti. L’utilisation de curl permet un acces distant tel un client et permet des mesures de site sans aucun droit sur le serveur, parfait pour la concurrence. Dans la cas présent l’agent enregistre plusieurs paramètres intéréssants :

  • dns: Le temps de résolution du nom de domaine
  • con: Le temps pour établir la connexion
  • pre: Le temps entre la connexion et l’arrivé du premier octet
  • str: Le temps entre la premier octet et la fin du transfert
  • ttl: Le temps total des étapes précédentes
  • sze: Le volume transféré
  • spd: La vitesse moyenne du transfère.

Attention aux limites

L’agent monitore une ressource correspondant à une url. Ce n’est pas un spider il ne va pas parcourir les liens. Si vous lui donner l’url de la home page (HP) d’un site il appliquera sa mesure à la seul page HTML.

Si vous souhaitez surveillez l’intégralité des éléments d’une page, chaque hit quelque soit le type mime et connaitre le temps d’interprétation et de rendu le site performance web pose les bases d’une automatisation de Yslow qui a attirer mon attention. Je vous invite à consulté cet article.

Installation & configuration

L’installation et la configuration de l’agent est expliqué en trois étapes :

  1. Using Cacti To Monitor Web Page Loading Part 1
  2. Using Cacti To Monitor Web Page Loading Part 2
  3. Using Cacti To Monitor Web Page Loading Part 3

Attention bug

l'agent monitor très bien un site mais si vous configuré le monitoring de plusieurs site il y à un bug qui fait que seul le premier a tout les paramètres de correctement surveiller. Ceci est facilement visible en surveillant les <strong>log de cacti</strong> après avoir<strong> augmenter leur verbosité</strong> et évidement apr!s voir installer l'agent en question. <a href="http://www.askaboutphp.com/tutorials/46/cacti-using-cacti-to-monitor-web-page-loading-part-3.html#comment-14319" hreflang="en">Un solution de contournement est disponible dans les commentaires du site</a>

Dans le fichier pageload-agent.php remplacer les lignes suivantes :

print “dns:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'namelookup_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; print ” con:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'connect_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; print ” pre:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'pretransfer_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; print ” str:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'starttransfer_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; print ” ttl:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'total_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; print ” sze:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'size_download'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; print ” spd:”.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'speed_download'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>

par celle-ci sans négliger les espaces entre les doubles cotes :

<span style="color: #007800;">$outstring</span> = <span style="color: #ff0000;">&quot;ttl:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'total_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.<span style="color: #ff0000;">&quot; str:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'starttransfer_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.<span style="color: #ff0000;">&quot; dns:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'namelookup_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>. <span style="color: #ff0000;">&quot; con:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'connect_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.<span style="color: #ff0000;">&quot; pre:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'pretransfer_time'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.<span style="color: #ff0000;">&quot; sze:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'size_download'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>. <span style="color: #ff0000;">&quot; spd:&quot;</span>.<span style="color: #007800;">$output</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">'speed_download'</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>; &nbsp; print chop<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$outstring</span>,”\n\r”<span style="color: #7a0874; font-weight: bold;">&#41;</span>;

Et les templates ?

Cacti utilise un système de template pour simplifier le travail à chaque ajout d’un monitor. Dans la cas de l’agent présenté ici nul template n’est livré. Il est très facile d’en créé un de vous même si vous souhaitez apprendre à le faire dans la cas contraire voici mes templates pour les graphiques. Attention pas de question sur leur utilisation et aucune garantie quant à leur utilisation.

Résultat

Au final vous avez la possibilité de comparer les qualités de diffusions de différent site web entre eux.

Web Page load graph

Comparatif du temps de chargement de la HP de Voici.fr vs RTL.fr

web page size graph

Comparatif de la taille de laa HP de Voici.fr vs RTL.fr

Laisser un commentaire