Webbserverloggar är något som jag älskar att hata. De ligger och fyller hårddisken men kan vara otroligt bra att använda för felsökning eller uppföljning. Därför har jag klurat ett tag nu hur jag kan arkivera stora mängder loggar utan att det tar allt för mycket resurser.
Den lösning som jag tycker är mest smakfull är att använda det inbyggda Linux-kommandot logrotate tillsammans med s3cmd för att skicka loggarna till Amazon S3. Efter detta så sätter jag en regel som skickar vidare loggarna till Amazon Glacier som är snorbilligt men tar 3-5h för att återställa filer.
Denna guide förutsätter att du har ett konto hos Amazon och har satt upp en bucket i S3 (i detta fall med namnet triopab-logfiles).
Steg 1 – Installera och konfigurera s3cmd
Under ubuntu/Debian etc installerar du enbart paketet med apt:
$ sudo apt-get install s3cmd
$ s3cmd --configure
Steg 2 – Konfigurera logrotate
Logrotate följer med de flesta Linux-dialekter och det vi gör är att vi skapar en egen konfigurationsfil som logrotate ska använda sig av.
Konfigurationsfilen kallar jag utvbloggen.conf och den ser ut enligt följande:
compress compresscmd /bin/bzip2 compressoptions -9 compressext .bz2 dateext dateformat -%Y-%m-%d-%s rotate 3 nomail missingok daily size 5k create 640 ubuntu ubuntu /var/www/utvbloggen.se/logs/*.log { sharedscripts postrotate service nginx reload /usr/bin/s3cmd sync /var/www/utvbloggen.se/logs/*.bz2 s3://triopab-logfiles/utvbloggen/ endscript }
Sen är det bara att lägga in ett cron-jobb som kör logrotate med ovan conf varje natt:
0 0 * * * /usr/sbin/logrotate --state /home/ubuntu/log_rotate.state /home/ubuntu/utvbloggen.conf
Steg 3 – Från S3 till Glacier
Detta steg är tämligen trivialt då denna funktion finns inbyggd i S3. Det enda du behöver göra är att gå in på Properties för din bucket och sedan under fliken Lifecycle kan du välja ”Move to glacier” så här:
Du kan även ange hur många dagar det ska gå innan loggarna flyttas under rubriken ”Time Period”:
Vill du göra mer fräsiga saker med loggarna? Kolla då på logstash eller fluentd.
Uppdatering: Kan vara bra att påpeka att det är gratis att skicka data mellan Amazon EC2 och S3 inom samma region.
En reaktion på ”Arkivera webbserver-loggar”