Etikettarkiv: Amazon S3

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.

Optimera Amazon S3 och CloudFront

CC Flickr @ladydragonflyherworld

Jag är en optimeringsnörd, det måste jag erkänna. Jag kan sitta i timmar och optimera små kodsnuttar eller webbsidor tills det att det inte går att göra så mycket mer. Därför brukar jag som bekant använda mig av molntjänster såsom Amazon S3 samt CloudFront för att lagra statisikt innehåll.

För att optimera webbsidor så använder jag bl.a. verktyget Google PageSpeed för att hitta  flaskhalsar och en uppenbar sak som PageSpeed klagade på var att Expire/Cache-headers samt komprimering. Standard så stödjer ej Amazon S3/CloudFront ej komprimering men med hjälp av s3cmd och några extra flaggor så går detta att lösa:

1. Komprimera dina stylesheets och javascript:


$ gzip -9 style.css

2. Ladda upp komprimerade filerna och sätt headers:


$ s3cmd put style.css.gz s3://cloudfront.domän.se/ --mime-type "text/css"  --add-header "Content-Encoding: gzip" --acl-public --add-header "Expires: Sun, 17 Jan 2038, 19:14:07 GMT" --add-header "Cache-Control: max-age=315360000"

Verktyget s3cmd hittas här: http://s3tools.org/s3cmd

Uppdatering: Typo fixad. Tack Emil Stenström.