Another Home Page Blog - lzmahttps://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>xz pour une meilleure compression de ses fichiers2017-12-02T10:00:00+01:002017-12-02T10:00:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2017-12-02:/post/2017/12/02/xz-pour-une-meilleure-compression-de-ses-fichiers/<p><img alt=""Bell system technical journal"" src="https://blog.anotherhomepage.org/public/bell_system_technical_journal.jpg">Aujourd'hui, causons un peu compression. Habituellement, dans le monde Unix, on a tendance à utiliser <a href="https://fr.wikipedia.org/wiki/Gzip" title=""Gzip">Gzip</a>. Ce format de compression a le mérite, aujourd'hui, d'être assez rapide, mais il est loin d'être le plus efficace. Une alternative a vu le jour, il s'agit de <a href="https://fr.wikipedia.org/wiki/Bzip2" title=""bzip2">bzip2</a>. Si ce dernier est bien …</p><p><img alt=""Bell system technical journal"" src="https://blog.anotherhomepage.org/public/bell_system_technical_journal.jpg">Aujourd'hui, causons un peu compression. Habituellement, dans le monde Unix, on a tendance à utiliser <a href="https://fr.wikipedia.org/wiki/Gzip" title=""Gzip">Gzip</a>. Ce format de compression a le mérite, aujourd'hui, d'être assez rapide, mais il est loin d'être le plus efficace. Une alternative a vu le jour, il s'agit de <a href="https://fr.wikipedia.org/wiki/Bzip2" title=""bzip2">bzip2</a>. Si ce dernier est bien plus efficace, il est hélas beaucoup plus lent. Comme on cherche toujours à avoir le beurre et l'argent du beurre, d'autres formats de compression ont vu le jour plus récemment, comme <a href="https://fr.wikipedia.org/wiki/XZ_(format_de_fichier)" title=""XZ">XZ</a>, utilisant actuellement l'algorithme <a href="https://fr.wikipedia.org/wiki/LZMA" title=""LZMA">LZMA</a> 2.</p>
<p>Pour utiliser le format de compression xz, il suffit d'utiliser les outils xz et unxz. Ils sont généralement disponibles sur toutes les distributions Linux, voire même par défaut depuis longtemps. Les systèmes BSD ne sont pas en reste, puisque NetBSD 7 dispose de xz dans le système de base (une version plus récente est disponible dans pkgsrc). Enfin, seul macOS ne semble pas en disposer nativement, mais cela peut être corrigé grâce à pkgsrc, macports ou Homebrew. Selon les systèmes, en plus des outils de compression et décompression, xz vient avec des outils fichiers "classique" qui décompressent à la volée, comme xzcat, xzgrep, xzless ou xzdiff.</p>
<p>Quelques exemples d'utilisation, à commencer par la compression d'un fichier, ici en mode verbeux et avec un taux de compression maximum :</p>
<div class="highlight"><pre><span></span><code>nils@shell2:~/irclogs/freenode$ xz -v -9 <span class="se">\\</span><span class="c1">#gcu.2017-11-30.log</span>
<span class="c1">#gcu.2017-11-30.log (1/1)</span>
<span class="m">100</span> % <span class="m">8</span>?020 B / <span class="m">23</span>,2 <span class="nv">KiB</span> <span class="o">=</span> <span class="m">0</span>,338
</code></pre></div>
<p>Soyons fous, recherchons une chaîne de caractères :</p>
<div class="highlight"><pre><span></span><code>nils@shell2:~/irclogs/freenode$ xzgrep -i -m <span class="m">1</span> pinpin <span class="se">\\</span><span class="c1">#gcu.2017-11-30.log.xz </span>
<span class="m">01</span>:26 < pinpin> olivier__ runne irssi v1.0.5 - running on FreeBSD amd64
</code></pre></div>
<p>Et bien entendu, la décompression :</p>
<div class="highlight"><pre><span></span><code>nils@shell2:~/irclogs/freenode$ unxz -v <span class="se">\\</span><span class="c1">#gcu.2017-11-30.log.xz </span>
<span class="c1">#gcu.2017-11-30.log.xz (1/1)</span>
<span class="m">100</span> % <span class="m">8</span>?020 B / <span class="m">23</span>,2 <span class="nv">KiB</span> <span class="o">=</span> <span class="m">0</span>,338
</code></pre></div>
<p><em>Crédit photo : <a href="https://www.flickr.com/photos/internetarchivebookimages/14733726886/in/photolist-orYcFU-odZb28-ouALWf-oubHW5-owcadT-ox4T7K-ouCPjA-owyEXc-oeTAqs-odEZPn-odbtUr-oufaDH-ouqpfs-ocVsFg-owcn5w-owkuw8-ocUUBX-ocT2R9-odCbPL-odzUfe-od9WZH-odjbkp-owVry6-owVvWp-osxGbd-owpVSv-odj5YS-odjpx5-ocUaAM-ow8ZvA-ocFgzz-osCeLu-ow7naS-ouoJY9-octZyk-oxcW7M-ocHuhY-ouK3Z9-ocUDjv-ocS7LS-owLJXx-osCfpy-ocSti5-owbhG5-owoJ3n-vNf6mA-wkkWhE-osmV5G-ouNKz4-ocUAsZ" title=""The">Internet Archive Book Images - Image from page 1351 of "The Bell System technical journal" (1922)</a>.</em></p>