Karlesnine.com

Aller au contenu Aller au menu Aller à la recherche

mardi, janvier 26 2010

Installation et configuration d'un serveur Pootle de management de traduction online

Pootle est un outil de management de traduction en ligne souvent utilisé pour internationalisé une application.


Le paquet Pootle

L'installation facile avec apt.

apt-get update
apt-get install pootle

Modifier /etc/default avec

 POOTLE_ENABLE=Yes

Modifier dans le fichier /etc/pootle/pootle.prefs les lignes 63 a 64 sur le modèle suivant :

63     fromaddress = "pootle@domaine.com"
 64     smtpserver = "localhost"
 65     supportaddress = "pootle@domaine.com"

Relancer pootle via la commande :

 /etc/init.d/pootle restart

Vérifier la disponibilité en local via la commande :

 curl -I http://localhost:8080

Installer un service de mail (envois de code d'inscription) si nécessaire via la commande :

 apt-get install postfix


Install Apache2 en proxy de Pootle

Ajouter module proxy via la commande :

 a2enmod proxy proxy_http

Pour éviter les accès interdit (error 403) configurer /etc/apache2/mods-available/proxy.conf avec la directive :

 Allow from all.

Ajouter un vhost apache2 pour pootle

<VirtualHost *:80>
 ServerName pootle.cafe.com
 ProxyPass /images !
 ProxyPass /js !
 ProxyPass /pootle.css !
 ProxyPass /favicon.ico !
 ProxyPass / http://localhost:8080/
 ProxyPassReverse / http://localhost:8080/
 
 <Directory proxy:http://localhost:8080/*>
     Order deny,allow
     Allow from all
 </Directory>
 
 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn
 ErrorLog /var/log/apache2/pootle-error_log
 CustomLog /var/log/apache2/pootle-access_log common
 
 # Fallback for static html content
 DocumentRoot "/usr/share/pootle/html"
 
 <Directory "/usr/share/pootle/html">
   Order deny,allow
   Allow from all
 </Directory>
 
</VirtualHost>

Relancer apache via la commande :

 /etc/init.d/apache2 restart

Tester que le vhost et le ServerName configurer répond via la commande :

 curl -H "Host: pootle.cafe.com" http://localhost/


Ouvrir le compte admin dans Pootle

Lire /usr/share/doc/pootle/README.Debian sur le serveur Pootle

Si le ServerName dans le Vhost Pootle ne correspond pas à une entré DNS modifier votre fichier /etc/hosts en conséquence

Ouvir un compte avec le login admin en vous connectant sur le serveur pootle : http://servername

Valider l'ouverture de compte avec le Registration code reçu pas email

Modifier le fichier /etc/pootle/users.prefs afin d'ajouter les droits d'administration au compte créé. Pour cela ajouter la ligne rights.siteadmin = True comme dans l'exemple suivant en tenant compte de l'indentation. admin:

activated = 1
  activationcode = 'e0e0eaa3840daf3833c16774aec95aa7'
  email = u'karles@domaine.com'
  name = u'Administrator'
  passwdhash = '20b47a2e5debe0df2954b9307a7be7691'
  uilanguage = u'fr'
  rights.siteadmin = True

Relancer pootle via la commande :

 /etc/init.d/pootle restart

lundi, décembre 21 2009

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 log de cacti après avoir augmenter leur verbosité et évidement apr!s voir installer l'agent en question. Un solution de contournement est disponible dans les commentaires du site

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

print “dns:”.$output['namelookup_time'];
print ” con:”.$output['connect_time'];
print ” pre:”.$output['pretransfer_time'];
print ” str:”.$output['starttransfer_time'];
print ” ttl:”.$output['total_time'];
print ” sze:”.$output['size_download'];
print ” spd:”.$output['speed_download']

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

$outstring = "ttl:".$output['total_time']." str:".$output['starttransfer_time']." dns:".$output['namelookup_time'].
" con:".$output['connect_time']." pre:".$output['pretransfer_time']." sze:".$output['size_download'].
" spd:".$output['speed_download'];
 
print chop($outstring,”\n\r”);

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

mardi, octobre 20 2009

Comment purger un élément de vos reverse proxy cache SQUID

L'utilisation d'un étage de cache web dans l'architecture d'une plate-forme d'hébergement est de plus en plus courante. Dans le cas de eZ Publish c'est même nécessaire si vous l'utilisé comme CMS générateur de site web [1].

Mais j'ai eu l'occasion de souligner l'intérêt d'un cache web à la lumière de mon actualité professionnel que cela soit quand Voici.fr dépasse les 650 K pages vue en 24h, quand Voici.fr et Gala.Fr ont survécu au pic d'audience du à la mort de Michael Jackson ou enfin quand l'optimisation d'un site eZ Publish 4 pour l'utilisation des caches web en prenant voici.fr en exemple.

Autorisé la purge dans squid.conf

Avant tout, il est nécessaire de modifier Squid via le fichier de configuration squid.conf afin d'autoriser la purge. Pour j'ai ajoutez les ligne suivantes dans ma configuration afin d'autorisé la purge depuis le squid et surtout depuis le réseau local afin que cela soit possible de toute les machines de l'architecture.

acl purge method PURGE
http_access allow PURGE localnet
http_access allow PURGE localhost

Purger squid avec cURL

Exemple pour purger une page du cache de trois serveurs SQUID avec cURL

~$ curl -I -X PURGE -H "Host: <HOST>" http://squid{1,2,3}/<URI>

Dans cet exemple nous allons supprimé la home page de http://www.femmeactuelle.fr/ (soit l'index) actuellement mise en cache sur nos trois serveurs reverse proxy squid :

~$ curl -I -X PURGE -H "Host: www.femmeactuelle.fr" http://squid{1,2,3}/
HTTP/1.0 200 OK
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:35:26 GMT
Content-Length: 0
 
HTTP/1.0 200 OK
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:35:26 GMT
Content-Length: 0
 
HTTP/1.0 200 OK
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:35:26 GMT
Content-Length: 0

Dans cet exemple nous avons voulu supprimer la page "cachée" de http://365.femmeactuelle.fr/ (soit l'index) Toutefois aucune page n'était présente dans le cache

~$ curl -I -X PURGE -H "Host: www2.femmeactuelle.fr" http://squid{1,2,3}/
HTTP/1.0 404 Not Found
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:35:45 GMT
Content-Length: 0
 
HTTP/1.0 404 Not Found
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:35:45 GMT
Content-Length: 0
 
HTTP/1.0 404 Not Found
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:35:45 GMT
Content-Length: 0

Purger squid avec squidclient

La même chose est possible avec squidclient

# squidclient -m PURGE -p 80 -h prpsquid1 http://www.femmeactuelle.fr/

L'utilisation de "{1,2,3}" n'est pas possible, il faut utiliser une boucle bash :

~$ for I in 1 2 3; do squidclient -m PURGE -p 80 -h squid$I http://www.femmeactuelle.fr/; done
HTTP/1.0 200 OK
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:56:11 GMT
Content-Length: 0
 
HTTP/1.0 200 OK
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:56:11 GMT
Content-Length: 0
 
HTTP/1.0 200 OK
Server: squid/2.6.STABLE5
Date: Fri, 30 Jan 2009 10:56:11 GMT
Content-Length: 0

Notes

[1] eZ n'est forcement utilisé comme générateur de site web. Il est avant tout un CMS; quelque soit la destination du contenu