Arkivera webbserver-loggar

loggfilerWebbserverloggar ä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
Sen är det bara att konfigurera upp s3cmd så med Access key + Secret key:
$ 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 Glacieramazon 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:

move to glacierDu kan även ange hur många dagar det ska gå innan loggarna flyttas under rubriken ”Time Period”:

lifecycle ruleVill 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

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *