Another Home Page Blog - Awstatshttps://blog.anotherhomepage.org/2017-12-04T09:30:00+01:00logrotate : exemple vite fait2017-12-04T09:30:00+01:002017-12-04T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2017-12-04:/post/2017/12/04/logrotate-exemple-vite-fait/<p><img alt=""Logs made of wood"" src="https://blog.anotherhomepage.org/public/logs.jpg">Aujourd'hui, un peu de configuration pour la rotation de ses logs, en utilisant <a href="https://github.com/logrotate/logrotate" title=""Logrotate">Logrotate</a>.</p>
<p>Sur un système Unix, bon nombre de programmes génèrent des fichiers de log. La rotation de ceux permet de séparer régulièrement les fichiers afin de les empêcher de devenir trop gros (et difficile à exploiter), et …</p><p><img alt=""Logs made of wood"" src="https://blog.anotherhomepage.org/public/logs.jpg">Aujourd'hui, un peu de configuration pour la rotation de ses logs, en utilisant <a href="https://github.com/logrotate/logrotate" title=""Logrotate">Logrotate</a>.</p>
<p>Sur un système Unix, bon nombre de programmes génèrent des fichiers de log. La rotation de ceux permet de séparer régulièrement les fichiers afin de les empêcher de devenir trop gros (et difficile à exploiter), et à effacer ceux qui sont trop vieux pour empêcher qu'ils ne saturent l'espace disque. La rotation des logs peut aussi être intéressante d'un point de vue légal, si on doit conserver un minimum ou maximum de temps les logs d'accès d'un serveur web, par exemple.</p>
<p>Continuons d'ailleurs sur l'exemple du serveur web. Je vais me baser sur une configuration proche de celle que j'utilise pour le serveur web qui rend ce blog accessible :</p>
<div class="highlight"><pre><span></span><code>/srv/www/*/*/log/*.log {
compress
compresscmd /usr/bin/xz
compressext .xz
uncompresscmd /usr/bin/unxz
delaycompress
daily
rotate 9999
create 644 root wheel
sharedscripts
missingok
prerotate
/usr/pkg/bin/perl /usr/pkg/awstats/bin/awstats_updateall.pl now -awstatsprog=/usr/pkg/awstats/cgi-bin/awstats.pl -configdir=/usr/pkg/etc/awstats/ > /dev/null
endscript
postrotate
/usr/pkg/sbin/apachectl restart > /dev/null 2>/dev/null || true
endscript
}
</code></pre></div>
<p>Dans cet exemple, on peut remarquer que les logs sont compressés (directive <em>compress</em>), mais pas immédiatement lors de la rotation (directive <em>delaycompress</em>). Il s'agit d'un compromis entre la facilité de recherche dans les logs, et l'espace occupé. Autre information intéressante, l'utilisation de xz, déjà abordé dans un <a href="/post/xz-pour-une-meilleure-compression-de-ses-fichiers">billet précédent</a>, au lieu de Gzip (paramétrage par défaut). La plupart des options sont faciles à comprendre.</p>
<p>Attardons-nous cependant sur les dernières lignes de configuration, en particulier sur les directives <em>prerotate</em> et <em>postrotate</em>. Comme leur nom l'indique, elles permettent d'agir juste avant la rotation et juste après. Ainsi, j'ai choisi dans cette configuration de lancer Awstats pour gérer les statistiques de visites de tous les sites hébergés. Concernant l'action après rotation, la relance du serveur web est obligatoire, car sinon ce dernier continue à écrire dans l'ancien fichier (car l'inode ne bouge pas, lui).</p>
<p>Vous avez aimé cet article ? Alors partagez-le sur les réseaux sociaux ! Si en plus vous avez des remarques, ou des propositions d'améliorations, n'hésitez pas : les commentaires sont là pour ça !</p>
<p><em>Crédit photo : <a href="https://www.flickr.com/photos/107640324@N05/26883118626/in/photolist-GXz1zh-GXz3Fm-H1vKwt-G69hJP-GXz4x1-H1vNFz-GXyUrf-G699sD-Gnxw8N-RQJjMv-GewNiy-GydJQu-FZgSSN-GmQcJv-GnxKap-GfYdkb-Ga6V5A-NoPvcs-F2FP1m-FKdHag-FvJFku-EAf6xR-F6mJGJ-EXhUth-F2RwRV-DSczhs-EMBnrj-DHmwz9-EwRJDM-ECLpsQ-EjnCfH-DLD1De-DYxtqj-HEQkrq-P33LAp-DBoPkn-DBoPuF-DBoPLx-CZ1f7B-Np5aiP-DpJTyK-CYvrCF-zh6Fbt-A73Wej-AoEeU8-A79QtZ-A79ZgD-AoEhRa-zrLzVB-zrLyrp" title="logs">Intermountain Region USFS - logs ET5A3073</a>.</em></p>Ajouter des robots dans Awstats2011-11-21T09:30:00+01:002011-11-21T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2011-11-21:/post/2011/11/21/Ajouter-des-robots-dans-Awstats/<p>Aujourd'hui un nouvel épisode de mon outil de statistiques web du moment, Awstats. Souvenez-vous, nous avons déjà rencontré ce logiciel à trois reprises :</p>
<ul>
<li><a href="/post/2011/01/31/awstats">lors d'un premier billet</a> d'introduction et de configuration ;</li>
<li><a href="/post/2011/02/14/utilisation-des-plugins-awstats">pour activer des plugins</a> afin d'améliorer les statistiques ;</li>
<li><a href="/post/2011/02/28/ajouter-ses-sections-personnalisees-dans-awstats">mais aussi lors de l'ajout de sections personnalisées</a> spécifiques à votre …</li></ul><p>Aujourd'hui un nouvel épisode de mon outil de statistiques web du moment, Awstats. Souvenez-vous, nous avons déjà rencontré ce logiciel à trois reprises :</p>
<ul>
<li><a href="/post/2011/01/31/awstats">lors d'un premier billet</a> d'introduction et de configuration ;</li>
<li><a href="/post/2011/02/14/utilisation-des-plugins-awstats">pour activer des plugins</a> afin d'améliorer les statistiques ;</li>
<li><a href="/post/2011/02/28/ajouter-ses-sections-personnalisees-dans-awstats">mais aussi lors de l'ajout de sections personnalisées</a> spécifiques à votre site internet.</li>
</ul>
<p>Aujourd’hui attardons-nous sur une autre possibilité d'Awstats : la détection des robots et moteurs de recherches. Si vous avez déjà des statistiques en place, vous aurez noté que vous disposez d'une rubrique “Visiteurs Robots/Spiders” dans votre page. Awstats ne peut pas connaître tous les robots sur le marché, de nouveaux sont créés tandis que d'autres disparaissent. Certains sont dédiés à des moteurs de recherche, d'autres sont des logiciels téléchargeables, pour effectuer des recherches ou créer un aggrégateur de flux RSS. Lorsqu'Awstats repère un robot qu'il ne connait pas, il peut l'afficher de deux manières : “Unknown robot (identified by 'bot*')” ou bien “Unknown robot (identified by '*bot')”. Vous comprenez donc qu'il cherche juste le mot “bot” dans le <a href="https://fr.wikipedia.org/wiki/User-agent" title="User-agent">User-agent</a> laissé par votre visiteur dans les logs de votre serveur web.</p>
<p>Si vous regardez souvent les logs de votre serveur web (activité qui peut semble à première vue excentrique, mais Ô combien intéressante en réalité), vous trouverez sans doute un robot qui n'est pas connu d'Awstats. Ce billet prend l'exemple avec <a href="http://git.etoilebsd.net/cplanet/" title="cplanet">cplanet</a>, un aggrégateur RSS utilisé en particulier par un certain <a href="http://planet.etoilebsd.net/">planet BSD francophone</a>.</p>
<p>Awstats stocke les noms des robots qu'il connaît dans un fichier nommé “robots.pm”. Ce fichier, dans le cas d'une installation via pkgsrc sous NetBSD se trouve à l'endroit suivant : <em>/usr/pkg/awstats/cgi-bin/lib/robots.pm</em>. Effectuons-donc une copie de sauvegarde de ce fichier :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">lib</span><span class="err">#</span><span class="w"> </span><span class="n">cp</span><span class="w"> </span><span class="o">-</span><span class="n">vp</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"></span>
</code></pre></div>
<p>Profitons-en pour copier la sauvegarde dans un autre fichier, que nous allons modifier :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">lib</span><span class="err">#</span><span class="w"> </span><span class="n">cp</span><span class="w"> </span><span class="o">-</span><span class="n">vp</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">bak</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"></span>
</code></pre></div>
<p>Avant de modifier le fichier, jetons un oeil aux logs (Apache dans mon cas) :</p>
<div class="highlight"><pre><span></span><code><span class="mf">1.2.3.4</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="err">[</span><span class="mf">04</span><span class="o">/</span><span class="n">May</span><span class="o">/</span><span class="mf">2011</span><span class="p">:</span><span class="mf">16</span><span class="p">:</span><span class="mf">30</span><span class="p">:</span><span class="mf">48</span><span class="w"> </span><span class="o">+</span><span class="mf">0200</span><span class="err">]</span><span class="w"> </span><span class="s">"GET /feed/atom HTTP/1.1"</span><span class="w"> </span><span class="mf">200</span><span class="w"> </span><span class="mf">105441</span><span class="w"> </span><span class="s">"-"</span><span class="w"> </span><span class="s">"cplanet/0.6"</span><span class="w"></span>
</code></pre></div>
<p>Le User-agent de cplanet est donc : "cplanet/0.6". Maintenant éditons notre <em>robots.pm.custom</em>. En lisant les commentaires on se rend compte que le fichier est organisé en plusieurs listes. Il faut donc ajouter notre nouveau robot dans deux d'entres elles, <em>RobotsSearchIDOrder_list\<X></em> (où \<X> désigne un chiffre) et <em>RobotsHashIDLib</em>. J'ai choisi d'ajouter mon robot dans <em>RobotsSearchIDOrder_list2</em>, qui contient des robots peu connus. Je suis allé à la fin de cette liste mais je n'ai pas ajouté mon robot en toute fin de liste mais juste après un robot nommé “zeus”. Pourquoi ? Il s'avère que certains noms de robots sont des expressions régulières, et doivent être en fin ou en début de liste. Donc je ne souhaite pas les perturber.</p>
<p>Voici les lignes contenant “zeus” et cplanet (aux alentours de la ligne 965) :</p>
<div class="highlight"><pre><span></span><code>'zeus',
'cplanet',
</code></pre></div>
<p>Passons à la deuxième liste, qui commence aux alentours de la ligne 1000. Vers la ligne 1320, on peut lire le commentaire suivant : “Other robots reported by users”. Je suis donc à nouveau descendu jusqu'à retrouver “zeus” et j'ai ajouté de cette manière cplanet, juste en-dessous :</p>
<div class="highlight"><pre><span></span><code>'cplanet','<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://git.etoilebsd.net/cplanet/"</span> <span class="na">title=</span><span class="s">"A rss feed agregator that generate static html pages"</span> <span class="na">target=</span><span class="s">"_blank"</span><span class="nt">></span>CPlanet RSS agregator<span class="nt"></a></span>',
</code></pre></div>
<p>J'ai donc créé un identifiant pour mon robot, qui est en fait une chaîne de caractères basée sur le User-agent, et ai ajouté un lien vers l'URL du robot pour savoir d'où il vient, ainsi qu'un texte descriptif, en anglais. Notez bien le format de séparation, et que la virgule à la fin est <strong>obligatoire</strong>.</p>
<p>Maintenant que notre fichier personnalisé est prêt, reste à le mettre en production :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">lib</span><span class="err">#</span><span class="w"> </span><span class="n">rm</span><span class="w"> </span><span class="o">-</span><span class="n">vf</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="k">ln</span><span class="w"> </span><span class="o">-</span><span class="n">sv</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"></span>
<span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">robots</span><span class="p">.</span><span class="n">pm</span><span class="p">.</span><span class="n">custom</span><span class="w"></span>
</code></pre></div>
<p>Si jamais Awstats doit être mis à jour, celui-ci écrasera le lien symbolique. Il faudra donc vérifier (avec la commande diff par exemple) si le projet Awstats a mis à jour de son côté le fichier, et reporter nos modifications dans une copie du nouveau. Pensez d'ailleurs à proposer vos nouveaux robots sur le <a href="http://sourceforge.net/tracker/?group_id=13764&atid=363764">bug tracker d'Awstats sur Sourceforge</a></p>Ajouter ses sections personnalisées dans Awstats2011-02-28T09:30:00+01:002011-02-28T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2011-02-28:/post/2011/02/28/ajouter-ses-sections-personnalisees-dans-awstats/<p>Après la configuration de base et l'activation de plugins, amusons-nous maintenant à personnaliser nos statistiques avec les "Extra Sections". Avant toute chose, il convient de rappeler que comme certains plugins, ces ajouts ralentissent la vitesse d'exécution d'Awstats : sur des sites internet très visités, il peut s'avérer très utile d'avoir une …</p><p>Après la configuration de base et l'activation de plugins, amusons-nous maintenant à personnaliser nos statistiques avec les "Extra Sections". Avant toute chose, il convient de rappeler que comme certains plugins, ces ajouts ralentissent la vitesse d'exécution d'Awstats : sur des sites internet très visités, il peut s'avérer très utile d'avoir une centralisation des logs et de ne pas utiliser Awstats directement sur les serveurs web de production.</p>
<p>Il est possible, grâce à ces sections, d'ajouter des filtres. Pour un site marchand par exemple on peut trier les produits et lister les meilleures ventes selon les catégories. Il est aussi possible, pour un blog, de voir les hits sur les flux RSS et même de voir quel client RSS est utilisé. C'est ce que je vous propose dans la suite.</p>
<p>Chaque "Extra Section" s'ajoute dans Awstats à la fin du fichier de configuration. Si vous souhaitez utiliser les mêmes sections pour plusieurs fichiers de configuration, il est possible de faire de l'inclusion de fichiers. On peut par exemple créer un fichier /usr/pkg/etc/awstats/extra_sections.conf et écrire dans le fichier de configuration de notre site internet la directive :</p>
<div class="highlight"><pre><span></span><code><span class="k">Include</span> <span class="s2">"</span><span class="s">extra_sections.conf</span><span class="s2">"</span>
</code></pre></div>
<p>Cela peut s'avérer très pratique car les sections sont numérotées. La première section voit ses variables suffixées par le chiffre 1, la deuxième par le chiffre 2, ainsi de suite... Le copier-coller est donc à manier avec précaution, je n'ai jamais tenté d'avoir deux sections 1.</p>
<p>Détaillons à présent un premier exemple : je cherche à lister les visites sur mes flux RSS.</p>
<div class="highlight"><pre><span></span><code>ExtraSectionName1="Flux RSS / Atom"
ExtraSectionCodeFilter1="200 304"
ExtraSectionCondition1="URL,^\\/feed\\/.*"
ExtraSectionFirstColumnTitle1="Nom du flux"
ExtraSectionFirstColumnValues1="URL,^\\/feed\\/([\\w]+)\\/"
ExtraSectionStatTypes1=PHK
MaxNbOfExtra1=1000
MinHitExtra1=1
</code></pre></div>
<p>Cette section filtre donc les codes HTTP <a href="https://secure.wikimedia.org/wikipedia/fr/wiki/Liste_des_codes_HTTP#Succ.C3.A8s">200</a> et <a href="https://secure.wikimedia.org/wikipedia/fr/wiki/Liste_des_codes_HTTP#Redirection">304</a> ayant lieu dans le répertoires /feed/. J'affiche les URLs commençant par /feed/ pour les lister et enfin, j'indique le nombre de pages et le nombre de hits (qui dans ce cas de flux RSS ont la même valeur). Je décide de limiter le nombre d'entrée à 1000 et estime le nombre minimum de hits pour apparaître dans les stats à 1. Il est possible d'adapter simplement cet exemple à d'autres URLs.</p>
<p>Passons au deuxième exemple :</p>
<div class="highlight"><pre><span></span><code>ExtraSectionName2="Lecteurs de RSS"
ExtraSectionCodeFilter2="200 304"
ExtraSectionCondition2="URL,^\\/feed\\/.*"
ExtraSectionFirstColumnTitle2="logiciel"
ExtraSectionFirstColumnValues2="UA,^([^\\/]*)"
ExtraSectionStatTypes2=PHBL
MaxNbOfExtra2=1000
MinHitExtra2=1
</code></pre></div>
<p>Cette fois-ci je ne liste pas l'URL mais le "User Agent" qui a fait la requête sur /feed/, ce qui me permet de lister les clients RSS utilisés. Enfin, je ne me contente pas seulement de lister les hits (H) et les pages (P), mais aussi la bande passante (B) et les dernières visites (L). On peut filtrer sur de nombreux critères, les voici :</p>
<ul>
<li>URL</li>
<li>URLWITHQUERY</li>
<li>QUERY_STRING</li>
<li>REFERER</li>
<li>UA</li>
<li>HOSTINLOG</li>
<li>HOST</li>
<li>VHOST</li>
</ul>
<p>La documentation d'Awstats possède une <a href="http://awstats.sourceforge.net/docs/awstats_extra.html">page consacrée aux Extra Sections</a> dont je vous recommande la lecture. De même, un site nommé <a href="http://www.internetofficer.com/awstats/">Internet Officer</a> possède de nombreux exemples en rapport avec Google. Il est bien pratique, pour débuter avec les Extra Sections, de partir d'exemples fonctionnels proches (plus ou moins) du résultat qu'on souhaite obtenir. Enfin, le fichier de configuration d'Awstats reste en soi une excellente documentation grâce à la qualité des commentaires déjà présents.</p>Utilisation des plugins Awstats2011-02-14T09:30:00+01:002011-02-14T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2011-02-14:/post/2011/02/14/utilisation-des-plugins-awstats/<p>Nous avons vu dans un précédent billet comment mettre en oeuvre la génération de statistiques de visites avec <a href="http://awstats.sourceforge.net/">Awstats</a>. Nous allons maintenant enrichir et améliorer ces statistiques, avec dans un premier temps l'utilisation de plugins. Le prérequis pour ce billet est bien entendu d'avoir configuré Awstats et de posséder les …</p><p>Nous avons vu dans un précédent billet comment mettre en oeuvre la génération de statistiques de visites avec <a href="http://awstats.sourceforge.net/">Awstats</a>. Nous allons maintenant enrichir et améliorer ces statistiques, avec dans un premier temps l'utilisation de plugins. Le prérequis pour ce billet est bien entendu d'avoir configuré Awstats et de posséder les modules Perl suivants : URI::Escape, Storable et Geo::IP.</p>
<h2>Décoder correctement les phrases clés et les mots clés</h2>
<p>Awstats permet de voir quels mots clés et quelles phrases clés ont été utilisés dans un moteur de recherche pour arriver sur votre site. Mais avec les jeux de caractères, Awstats peut avoir du mal à décoder les chaînes de caractères. Pour remédier à cela, il suffit d'activer le plugin decodeutfkeys dans notre fichier de configuration :</p>
<div class="highlight"><pre><span></span><code>LoadPlugin="decodeutfkeys"
</code></pre></div>
<h2>Accélération des recherches DNS</h2>
<p>Dans notre configuration précédente, Awstats est paramétré pour faire une recherche DNS inverse des IP des visiteurs, ce qui peut prendre du temps. Il est donc possible de créer un fichier de cache pour accélérer ces recherches et éviter de faire 36 fois la même requête DNS. Pour cela, on active le plugin hashfiles :</p>
<div class="highlight"><pre><span></span><code>LoadPlugin="hashfiles"
</code></pre></div>
<h2>Géolocalisation des visiteurs</h2>
<p>Il peut s'avérer très intéressant de savoir d'où viennent vos visiteurs selon le thème ou la langue du site : par exemple, un site rédigé en Français a dans le top 10 de ses visiteurs une adresse IP russe, une brésilienne et une chinoise (pays choisis au hasard). Si on regarde dans les logs, on se rend compte que 90% de leurs requêtes terminent en 404 ;) On va donc activer le plugin GeoIP :</p>
<div class="highlight"><pre><span></span><code><span class="n">LoadPlugin</span><span class="o">=</span><span class="s2">"geoip GEOIP_STANDARD /var/www/awstats/GeoIP.dat</span>
<span class="n">LoadPlugin</span><span class="o">=</span><span class="s2">"geoip_city_maxmind GEOIP_STANDARD /var/www/awstats/GeoLiteCity.dat"</span><span class="w"></span>
</code></pre></div>
<p>On remarque que dans le cas de GeoIP, il est nécessaire de disposer d'une base de données associant des plages d'adresses IP à un pays d'appartenance. Le fournisseur le plus connu pour ce type de bases de données est <a href="http://www.maxmind.com/app/ip-locate">Maxmind</a>, qui propose des solutions gratuites et payantes. Deux bases sont disponibles gratuitement, <a href="http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz">celle des pays</a> et <a href="http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz">celle des villes</a>. Ensuite, il reste à placer ces fichiers (décompressés) dans un répertoire accessible à Awstats; personnellement je le met au même endroit que les données de statistiques, donc /var/www/awstats ou /var/lib/awstats selon qu'on est sous NetBSD ou Linux. Les bases de données sont mises à jour chaque mois, pensez donc à régulièrement télécharger les nouvelles versions.</p>
<p>[Attention]{.underline} : ce type de traitement entraîne un ralentissement de la vitesse d'exécution d'Awstats, sur des gros sites cela peut très vite devenir gênant pour la carge CPU et mémoire de votre serveur.</p>
<h2>Autres infos sur les IP des visiteurs</h2>
<p>Plutôt que de copier-coller les IP de vos visiteurs dans un service de <a href="https://secure.wikimedia.org/wikipedia/fr/wiki/Whois">whois</a>, il est possible d'utiliser le client whois d'Awstats via le plugin hostinfo :</p>
<div class="highlight"><pre><span></span><code>LoadPlugin="hostinfo"
</code></pre></div>
<h2>Au prochain épisode...</h2>
<p>Nous avons maintenant quelques détails de plus sur nos visiteurs grâce aux plugins, il nous reste maintenant à mieux comprendre les visites via les directives "ExtraSection", qui fera l'objet d'un prochain billet... :)</p>Awstats2011-01-31T09:30:00+01:002011-01-31T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2011-01-31:/post/2011/01/31/awstats/<h2>Qu'est-ce qu'Awstats ? A quoi sert-il ?</h2>
<p><a href="http://awstats.sourceforge.net/">Awstats</a> est un outil web de statistiques pour un serveur web, FTP ou mail. Il permet donc de voir, pour un site internet par exemple, s'il y a beaucoup de visites, quelles sont les pages les plus visitées, quelle quantité de données est transférée, et …</p><h2>Qu'est-ce qu'Awstats ? A quoi sert-il ?</h2>
<p><a href="http://awstats.sourceforge.net/">Awstats</a> est un outil web de statistiques pour un serveur web, FTP ou mail. Il permet donc de voir, pour un site internet par exemple, s'il y a beaucoup de visites, quelles sont les pages les plus visitées, quelle quantité de données est transférée, et "qui" vient le plus souvent visiter son site. Awstats est un logiciel libre, sous licence GNU GPL. Il peut être appelé dynamiquement, générer des pages HTML de statistiques, ou, grâce à des contributions externes de créer des fichiers PDF. Autre détail qui a son importance : Awstats se base sur les fichiers de log de votre serveur, il n'est donc pas à ma connaissance compatible avec les hébergements mutualisés.</p>
<h2>De quoi ai-je besoin pour le faire fonctionner ?</h2>
<p>Awstats a avant tout besoin de <a href="http://www.perl.org/">Perl</a> ! Ensuite, selon votre besoin ou vos désirs, il faut que votre serveur web puisse exécuter des scripts CGI. Dans le cas d'Apache donc, pas besoin de <a href="http://perl.apache.org/">mod_perl</a> pour afficher vos statistiques Awstats, mais il faudra activer <a href="http://httpd.apache.org/docs/2.2/mod/mod_cgi.html">mod_cgi</a> si vous souhaitez afficher dynamiquement les statistiques.</p>
<p>De plus, selon les fonctionnalités que vous souhaiterez activer, il est nécessaire d'avoir quelques modules Perl. Si vous souhaitez suivre ces billets, il peut être de bon ton d'installer les modules Perl suivants : URI::Escape, Storable, Geo::IP (et non Geo::IPfree) et Net::XWhois . Concernant NetBSD, j'ai installé les paquets suivants :</p>
<ul>
<li>p5-Business-ISBN</li>
<li>p5-Business-ISBN</li>
<li>p5-Geo-IP</li>
<li>p5-MIME-Base64</li>
<li>p5-Net-XWhois</li>
<li>p5-Test-Simple</li>
<li>p5-URI</li>
</ul>
<h2>Installation</h2>
<p>Awstats est généralement fourni dans les paquets de votre distribution Linux ou BSD favorite. Si ce n'est pas dans les dépôts officiels, il est fort probable que des dépôts alternatifs soient disponibles. Ainsi, pour RHEL et ses clones tels que CentOS, vous pouvez utiliser le dépôt <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a>. Si vous ne connaissez aucun dépôt ou que ceux-ci fournissent une version trop ancienne, vous pouvez utiliser <a href="http://awstats.sourceforge.net/#DOWNLOAD">l'archive disponible sur le site d'Awstats</a>. Point non négligeable : comme il s'agit d'un programme Perl, nul besoin de le compiler, ce qui est fort appréciable !</p>
<p>Pour la suite : tous les exemples et codes proviennent d'une machine NetBSD 5, et Awstats est installé grâce au paquet disponible sur pkgsrc.</p>
<h2>Première configuration</h2>
<p>Nous avons donc installé Awstats. Avant de configurer Awstats</p>
<p>La configuration se situe dans <em>/usr/pkg/etc/awstats/' et on y trouve déjà un fichier :</em> awstats.model.conf''. Copions ce modèle et éditons-le :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">awstats</span><span class="err">#</span><span class="w"> </span><span class="n">cp</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">awstats</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">conf</span><span class="w"> </span><span class="n">awstats</span><span class="p">.</span><span class="n">blog</span><span class="p">.</span><span class="n">anotherhomepage</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">conf</span><span class="w"></span>
<span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">awstats</span><span class="err">#</span><span class="w"> </span><span class="n">vi</span><span class="w"> </span><span class="n">awstats</span><span class="p">.</span><span class="n">blog</span><span class="p">.</span><span class="n">anotherhomepage</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">conf</span><span class="w"></span>
</code></pre></div>
<p>Examinons maintenant la configuration, nous allons renseigner :</p>
<ul>
<li>l'emplacement du fichier de logs</li>
<li>le nom (dns) du site web, ainsi que ses alias</li>
<li>renseigner les pages d'index</li>
<li>exclure Awstats des statistiques</li>
<li>exclure notre adresse IP des statistiques</li>
<li>et bien d'autres trucs encore !</li>
</ul>
<p>Attention :</p>
<ul>
<li>je n'affiche par la suite que les options que j'ai modifiées par rapport au modèle</li>
<li>ma configuration date un peu : mon fichier a été créé à l'époque d'Awstats 6.6, et de nouvelles options ont fait leur apparition</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="c1"># Emplacement du fichier de log</span><span class="w"></span>
<span class="n">LogFile</span><span class="o">=</span><span class="s2">"/var/log/httpd/blog-access.log"</span><span class="w"></span>
<span class="c1"># Nom DNS de notre site internet</span><span class="w"></span>
<span class="n">SiteDomain</span><span class="o">=</span><span class="s2">"blog.anotherhomepage.org"</span><span class="w"></span>
<span class="c1"># Autres noms DNS possibles, ou adresse IP directement</span><span class="w"></span>
<span class="n">HostAliases</span><span class="o">=</span><span class="s2">"localhost 127.0.0.1 www.blog.anotherhomepage.org 188.40.96.170"</span><span class="w"></span>
<span class="c1"># Faire une recherche inverse DNS sur les IP des visiteurs, cela permet d'avoir une meilleure visibilité en voyant</span><span class="w"></span>
<span class="c1"># les DNS inversedes FAI, mais attention : sur un gros site, cela peut énormément ralentir Awstats !</span><span class="w"></span>
<span class="c1"># Si vous avez un doute, mettez cette valeur à 0</span><span class="w"></span>
<span class="n">DNSLookup</span><span class="o">=</span><span class="mi">1</span><span class="w"></span>
<span class="c1"># Localisation des bases de données des statistiques, ici le chemin NetBSD !</span><span class="w"></span>
<span class="c1"># Sous GNU/Linux, le chemin est généralement /var/lib/awstats</span><span class="w"></span>
<span class="n">DirData</span><span class="o">=</span><span class="s2">"/var/www/awstats"</span><span class="w"></span>
<span class="c1"># Localisation du GCI appelé par notre page de statistiques (awstats.pl)</span><span class="w"></span>
<span class="n">DirCgi</span><span class="o">=</span><span class="s2">"/awstats"</span><span class="w"></span>
<span class="c1"># ...</span><span class="w"></span>
<span class="n">DirIcons</span><span class="o">=</span><span class="s2">"/awstats/icon"</span><span class="w"></span>
<span class="c1"># Awstats peut proposer de mettre à jour en direct les statistiques via un bouton.</span><span class="w"></span>
<span class="c1"># C'est risqué, donc on désactive</span><span class="w"></span>
<span class="n">EnableLockForUpdate</span><span class="o">=</span><span class="mi">1</span><span class="w"></span>
<span class="c1"># Je préfère générer la page web en XHTML plutôt qu'en HTML</span><span class="w"></span>
<span class="n">BuildReportFormat</span><span class="o">=</span><span class="n">xhtml</span><span class="w"></span>
<span class="c1"># C'est toujours bien les sauvegardes :)</span><span class="w"></span>
<span class="n">KeepBackupOfHistoricFiles</span><span class="o">=</span><span class="mi">1</span><span class="w"></span>
<span class="c1"># Page d'index par défaut</span><span class="w"></span>
<span class="n">DefaultFile</span><span class="o">=</span><span class="s2">"index.html index.php"</span><span class="w"></span>
<span class="c1"># On peut s'exclure des visites : si on est en IP fixe, mieux vaut exclure son IP</span><span class="w"></span>
<span class="c1"># ainsi que celle du serveur et la boucle locale</span><span class="w"></span>
<span class="n">SkipHosts</span><span class="o">=</span><span class="s2">"127.0.0.1 188.40.96.170"</span><span class="w"></span>
<span class="c1"># Ici j'exclue des statistiques le panneau d'admin de Dotclear, le répertoire des thèmes et quelques fichiers</span><span class="w"></span>
<span class="c1"># en rapport avec un plugin</span><span class="w"></span>
<span class="n">SkipFiles</span><span class="o">=</span><span class="s2">"REGEX[^</span><span class="se">\\</span><span class="s2">/admin] REGEX[^</span><span class="se">\\</span><span class="s2">/awstats] REGEX[^</span><span class="se">\\</span><span class="s2">/themes] /?pf=partager2/img/delicious.png /?pf=partager2/img/digg.png /?pf=partager2/img/yahoomyweb.png /?pf=partager2/img/wikio.gif /?pf=partager2/img/sprite_partager2.png"</span><span class="w"></span>
<span class="c1"># Si vous avez des URL de type http://monsite.com/kikoo.php?variable=valeur</span><span class="w"></span>
<span class="c1"># vous pouvez différencier les requêtes selon ce que vaut "valeur"</span><span class="w"></span>
<span class="c1"># Mieux vaut faire de même pour votre referrer ;)</span><span class="w"></span>
<span class="n">URLWithQuery</span><span class="o">=</span><span class="mi">1</span><span class="w"></span>
<span class="n">URLWithQueryWithoutFollowingParameters</span><span class="o">=</span><span class="s2">"PHPSESSID jsessionid"</span><span class="w"></span>
<span class="n">URLReferrerWithQuery</span><span class="o">=</span><span class="mi">1</span><span class="w"></span>
<span class="c1"># Je suis un peu parano sur les bord, je cherche à voir si des vers tentent d'accéder à mon site</span><span class="w"></span>
<span class="n">LevelForWormsDetection</span><span class="o">=</span><span class="mi">2</span><span class="w"></span>
<span class="c1"># Awstats affiche le top 10, sauf si on va dans le détail, où il affiche le top 1000 par défaut</span><span class="w"></span>
<span class="c1"># Moi j'en veux encore plus ! (mais la page est plus longue à charger)</span><span class="w"></span>
<span class="n">MaxRowsInHTMLOutput</span><span class="o">=</span><span class="mi">2000</span><span class="w"></span>
<span class="c1"># Je force la langue en Français, mais vous n'êtes pas obligé d'en faire autant</span><span class="w"></span>
<span class="n">Lang</span><span class="o">=</span><span class="s2">"fr"</span><span class="w"></span>
<span class="c1"># J'affiche les stats sur les vilains vers qui polluent le Net</span><span class="w"></span>
<span class="n">ShowWormsStats</span><span class="o">=</span><span class="n">HBL</span><span class="w"></span>
</code></pre></div>
<h2>Génération des statistiques de visites</h2>
<p>Pour lancer la génération des statistiques, la commande est la suivante :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">perl</span><span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">awstats</span><span class="p">.</span><span class="n">pl</span><span class="w"> </span><span class="c1">--config=blog.anotherhomepage.org --update</span>
</code></pre></div>
<h2>Affichage des statistiques de visites**Par défaut, la configuration suivante existe pour Apache :</h2>
<div class="highlight"><pre><span></span><code>root@vhost:~# cat /usr/pkg/etc/httpd/conf.d/awstats.conf
Alias /awstats/icon/ /usr/pkg/awstats/icon/
Alias /awstats/css/ /usr/pkg/awstats/css/
Alias /awstats/js/ /usr/pkg/awstats/js/
Alias /awstats/ /usr/pkg/awstats/cgi-bin/
<span class="nt"><Location</span> <span class="err">/awstats</span><span class="nt">/></span>
DirectoryIndex awstats.pl
Options ExecCGI FollowSymLinks
AddHandler cgi-script .pl
AddHandler cgi-script .cgi
order allow,deny
allow from all
<span class="nt"></Location></span>
</code></pre></div>
<p>Sous NetBSD, les fichiers .conf présents dans <em>/usr/pkg/etc/httpd/conf.d/</em> sont automatiquement inclus dans votre configuration, ce qui ajoute un certain confort. A noter que de cette manière, vos statistiques sont accessibles au monde entier ! Vous pouvez utiliser un fichier htaccess ou les directives Allow avec votre IP si vous êtes en IP fixe pour restreindre l'accès aux statistiques.</p>
<h2>Automatisation, multiplication et gestion de la rotation des logs</h2>
<p>Tout ça c'est bien, mais une fois qu'on a 2-3 sites internet qui tournent, on ne va pas se connecter chaque jour sur notre serveur pour lancer une mise à jour par site. Il est possible de remédier à cela grâce à un utilitaire fourni avec Awstats : awstats_updateall.pl permet de mettre à jour tous les sites configurés en une seule commande ! En utilisation dans une crontab, tout est automatisé :) Exemple :</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@vhost</span><span class="err">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">crontab</span><span class="w"> </span><span class="o">-</span><span class="n">l</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">awstats</span><span class="w"></span>
<span class="err">#</span><span class="w"> </span><span class="n">Awstats</span><span class="w"> </span><span class="err">:</span><span class="w"></span>
<span class="mi">10</span><span class="w"> </span><span class="mi">0</span><span class="o">-</span><span class="mi">23</span><span class="o">/</span><span class="mi">4</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">perl</span><span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">awstats_updateall</span><span class="p">.</span><span class="n">pl</span><span class="w"> </span><span class="n">now</span><span class="w"> </span><span class="o">-</span><span class="n">awstatsprog</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="n">bin</span><span class="o">/</span><span class="n">awstats</span><span class="p">.</span><span class="n">pl</span><span class="w"> </span><span class="o">-</span><span class="n">configdir</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="k">null</span><span class="w"></span>
</code></pre></div>
<p>Et voici nos statistiques mises à jour toutes les quatre heures, à la dixième minute (00h10, 4h10, 8h10...)</p>
<p>Si vous effectuez une rotation de vos logs avec <a href="https://fedorahosted.org/logrotate/">logrotate</a>, le plus intelligent est encore d'ajouter votre mise à jour de statistiques dans la configuration de logrotate, comme le détaille <a href="http://awstats.sourceforge.net/docs/awstats_faq.html#ROTATE">la FAQ d'Awstats</a>.</p>
<h2>Au prochain épisode...</h2>
<p>Cette configuration basique et fonctionnelle permet d'avoir des statistiques intéressantes, mais nous pouvons aller plus loin, comme par exemple avec la géolocalisation d'adresses IP et l'utilisation d'autres plugins, et même aller jusqu'à créer nos propres filtres pour avoir des statistiques sur certaines parties du site par exemple.</p>
<h2>Commentaires</h2>
<h3>Le 16/02/2011 11:49 par <a href="http://www.evazone.fr">M@T D.</a></h3>
<p>"Autre détail qui a son importance : Awstats se base sur les fichiers de log de votre serveur, il n'est donc pas à ma connaissance compatible avec les hébergements mutualisés" > Oui et non... Mutualisé au sens strict, avec un prestataire qui te fourni l'espace web (et donc pas d'accès sur admin sur la machine), je suis d'accord.</p>
<p>Mais si c'est un serveur que tu administres, rien ne t'empêche de splitter les fichiers de logs Apache (access et error) pour chaque VirtualHost, de créer plusieurs fichiers de conf awstat, et d'ordonnancer plusieurs tâches Cron pour obtenir des stats propres à chaque site.</p>
<p>;-)</p>
<h3>Le 16/02/2011 19:48 par Nils</h3>
<p>Je n'ai jamais vu de prestataire fournir un hébergement mutualisé où tu peux administrer ton serveur. En général quand tu as un accès administrateur à l'OS, tu es sois sur du VPS (Virtual Private Server), soit sur du RPS (Real Private Server, qui a juste de l'espace disque sur un SAN), soit un véritable serveur dédié. Et pour moi il s'agit d'une question de bon sens de séparer l'access_log de l'error_log et bien entendu d'avoir un couple de log par virtual host.</p>
<p>Pourquoi ordonnancer plusieurs tâches cron quand on a awstats_updateall.pl comme je l'ai indiqué ?</p>
<h3>Le 22/02/2011 13:50 par <a href="http://www.evazone.fr">M@T D.</a></h3>
<p>Si je te dis que je considère que je fais de l'hébergement mutualisé chez moi... Tu comprends mieux mon point de vu ?
Au sens, strict du terme, je suis tout à fait d'accord avec toi ;-)</p>
<p>Sinon, j'avais pas vu la partie sur awstats_updateall.pl... Effectivement, très pratique.</p>Pourquoi faire simple quand on peut faire compliqué?2008-11-26T19:35:00+01:002008-11-26T19:35:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2008-11-26:/post/2008/11/26/Pourquoi-faire-simple-quand-on-peut-faire-compliqué/<p>Dans pas mal de tutoriaux <a href="http://awstats.sourceforge.net/">Awstats</a>, on parle de la possibilité de d'exécuter la commande de mise à jour dans une crontab.On a par exemple :</p>
<div class="highlight"><pre><span></span><code><span class="mf">0</span><span class="w"> </span><span class="mf">0</span><span class="o">-</span><span class="mf">23</span><span class="o">/</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">perl</span><span class="w"> </span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">awstats</span><span class="mf">.</span><span class="n">pl</span><span class="w"> </span><span class="o">-</span><span class="n">config</span><span class="o">=</span><span class="n">blog</span><span class="mf">.</span><span class="n">anotherhomepage</span><span class="mf">.</span><span class="ow">or</span><span class="n">g</span><span class="w"> </span><span class="o">-</span><span class="n">update</span><span class="w"></span>
</code></pre></div>
<p>Cet exemple met à jour la base awstats …</p><p>Dans pas mal de tutoriaux <a href="http://awstats.sourceforge.net/">Awstats</a>, on parle de la possibilité de d'exécuter la commande de mise à jour dans une crontab.On a par exemple :</p>
<div class="highlight"><pre><span></span><code><span class="mf">0</span><span class="w"> </span><span class="mf">0</span><span class="o">-</span><span class="mf">23</span><span class="o">/</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">perl</span><span class="w"> </span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">awstats</span><span class="mf">.</span><span class="n">pl</span><span class="w"> </span><span class="o">-</span><span class="n">config</span><span class="o">=</span><span class="n">blog</span><span class="mf">.</span><span class="n">anotherhomepage</span><span class="mf">.</span><span class="ow">or</span><span class="n">g</span><span class="w"> </span><span class="o">-</span><span class="n">update</span><span class="w"></span>
</code></pre></div>
<p>Cet exemple met à jour la base awstats de blog.anotherhomepage.org toutes les deux heures. Quand on a un seul hôte sur son serveur, c'est amplement suffisant. Oui, mais je n'ai pas que le blog. J'ai aussi la section téléchargements, le webmail, le blog de Vlad, de Dinou, et d'autres trucs. Pour le moment, c'est 9 fichiers de configuration Awstats (excepté le modèle) qui doivent être mis à jour régulièrement. Et à chaque nouveau site, c'est une configuration à écrire, et à ajouter dans la crontab.</p>
<p>Alors certes un coup de sed et un copier-coller dans la crontab, c'est pas la mort, mais pourquoi faire les deux quand on peut économiser des lignes dans la crontab? Tout simplement en utilisant awstats_updateall.pl :</p>
<div class="highlight"><pre><span></span><code><span class="o">-----</span><span class="w"> </span><span class="n">awstats_updateall</span><span class="w"> </span><span class="mf">1.0</span><span class="w"> </span><span class="p">(</span><span class="n">build</span><span class="w"> </span><span class="mf">1.15</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="n">Laurent</span><span class="w"> </span><span class="n">Destailleur</span><span class="w"> </span><span class="o">-----</span><span class="w"></span>
<span class="n">awstats_updateall</span><span class="w"> </span><span class="n">launches</span><span class="w"> </span><span class="k">update</span><span class="w"> </span><span class="n">process</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="ow">all</span><span class="w"> </span><span class="n">AWStats</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="n">files</span><span class="w"> </span><span class="p">(</span><span class="ow">except</span><span class="w"></span>
<span class="n">awstats</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">conf</span><span class="p">)</span><span class="w"> </span><span class="k">found</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">particular</span><span class="w"> </span><span class="n">directory</span><span class="p">,</span><span class="w"> </span><span class="n">so</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">can</span><span class="w"> </span><span class="n">easily</span><span class="w"> </span><span class="n">setup</span><span class="w"> </span><span class="n">a</span><span class="w"></span>
<span class="n">cron</span><span class="o">/</span><span class="n">scheduler</span><span class="w"> </span><span class="n">job</span><span class="p">.</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">scanned</span><span class="w"> </span><span class="n">directory</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">awstats</span><span class="p">.</span><span class="w"></span>
<span class="k">Usage</span><span class="err">:</span><span class="w"> </span><span class="n">awstats_updateall</span><span class="p">.</span><span class="n">pl</span><span class="w"> </span><span class="n">now</span><span class="w"> </span><span class="o">[</span><span class="n">options</span><span class="o">]</span><span class="w"></span>
<span class="k">Where</span><span class="w"> </span><span class="n">options</span><span class="w"> </span><span class="k">are</span><span class="err">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="n">awstatsprog</span><span class="o">=</span><span class="n">pathtoawstatspl</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="n">configdir</span><span class="o">=</span><span class="n">directorytoscan</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="n">excludeconf</span><span class="o">=</span><span class="n">conftoexclude</span><span class="o">[</span><span class="n">,conftoexclude2,...</span><span class="o">]</span><span class="w"> </span><span class="p">(</span><span class="nl">Note</span><span class="p">:</span><span class="w"> </span><span class="n">awstats</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">conf</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">always</span><span class="w"> </span><span class="n">excluded</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<p>Donc, pour transformer 9 lignes de crontab en une, j'ai inséré dans la crontab :</p>
<div class="highlight"><pre><span></span><code><span class="mf">15</span><span class="w"> </span><span class="mf">0</span><span class="o">-</span><span class="mf">23</span><span class="o">/</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">perl</span><span class="w"> </span><span class="o">/</span><span class="nb">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">awstats_updateall</span><span class="mf">.</span><span class="n">pl</span><span class="w"> </span><span class="n">now</span><span class="w"> </span><span class="o">-</span><span class="n">awstatsprog</span><span class="o">=/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="n">awstats</span><span class="mf">.</span><span class="n">pl</span><span class="w"> </span><span class="o">-</span><span class="n">configdir</span><span class="o">=/</span><span class="n">etc</span><span class="o">/</span><span class="n">awstats</span><span class="o">/</span><span class="w"></span>
</code></pre></div>
<p>On pensera à remplacer "/usr/bin/awstats_updateall.pl" par la localisation du script, et on fera de même pour "/var/www/awstats/awstats.pl".</p>
<p>Comment ai-je pu faire avant? ;-)</p>
<h2>Commentaires</h2>
<h3>Le 01/12/2008 17:00 par <a href="http://www.evazone.fr">M@T D.</a></h3>
<p>Effectivement... Ca peut-être interessant...</p>
<p>Et sinon, tu n'aurrais pas une commande shell en stock qui permettrai de mettre à jour un vieux AWSTAT d'un coup les yeux fermés ?</p>