Hej,
Har nu några olika access/error-loggfiler från apache (olika domäner) som jag sedan låter webalizer leka lite med vilket fungerar fint. Har lagt till att webalizer ska uppdatera statistiken varje timme med crontab.
/etc/crontab:
1 * * * * root /etc/cron.custom/cron.webalizer
/etc/cron.custom/cron.webalizer:
echo `date +%d-%m-%Y' '%H:%M` ":Webalizer run" >> /var/log/httpd/webalizer.log
/usr/local/bin/webalizer -c /usr/local/etc/webalizer/nicci.local.conf >> /var/log/httpd/webalizer.log
/usr/local/bin/webalizer -c /usr/local/etc/webalizer/richard.local.conf >> /var/log/httpd/webalizer.log
/usr/local/bin/webalizer -c /usr/local/etc/webalizer/zedd.local.conf >> /var/log/httpd/webalizer.log
Med det scriptet körs de domäner jag har samt lite information om körningen sparas i en egen logg. Config-filen för de olika domänerna ser ut såhär:
/usr/local/etc/webalizer/nicci.local.conf
LogFile /var/log/httpd/nicci.local-access.log
OutputDir /home/qimen/nicci.local/www/webalizer
HostName Nici.local
DNSCache /var/log/httpd/dns_cache.db
DNSChildren 5
Såhär lång fungerar allt som det ska, nu till själva problemet. Jag vill rotera alla loggfilerna varje dag och spara gårdagens log packad på ett ställe jag väljer. Eftersom jag kör freebsd installerade jag logrotate med ports och läste lite om det via google. Tydligen brukar det finnas ett exempel av hur man kan rotera apacheloggar men den finns inte med i min logrotate.d-mapp. :(
I vilket fall som helst så har jag kommit fram till att jag måste sätta Incremental och IncrementalName i config-filen för varje domän så att webalizer tar med all statistik och inte bara den nuvarande.
Incremental yes
IncrementalName /var/log/httpd/nicci.local.current
Men sedan tar det stopp, jag vet inte alls hur jag ska konfiguera logrotate. :l
Jag vill ha med all statistik som förts sedan domänen skapades. Sedan vet jag inte om jag ska rotera loggarna dagligen eller veckovis (om det är mycket trafik så behövs dagligen antar jag?).
/usr/local/etc/logrotate.conf
# Rotera varje vecka
weekly
# Spara loggarna 4 veckor tillbaka (men kommer all statistik med då?)
rotate 4
# Skapa nya tomma loggfiler när de gamla roteras.
create
# Komprimera loggfilerna, men hur/var?
compress
# Skicka fel till root
errors root
# Inkludera egna roteringscript
include /usr/local/etc/logrotate.d
# Loggfil för senaste rotering(?)
/var/log/lastlog {
monthly
rotate 1
}
Sedan vår fil som ska ta hand om apache-loggar:
/usr/local/etc/logrotate.d/apache
# Rotera loggfilerna för samtliga domäner.
/var/log/httpd/*-access.log {
# Spara logg-filerna i 4 veckor.
rotate 4
# Rotera varje dag.
daily
# Skapa nya loggar när gamla har roterats.
create
# Är det denna bit som sparar mina komprimerade loggfiler på ett
# visst ställe? Hur gör jag i så fall så att loggfilerna sparas i
# varje enskild domäns loggmapp? (/home/användare/domän/logs/).
# Kanske måste det göras med ett eget script?
ifempty
olddir /var/log/httpd/old
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/httpd/*-error.log {
rotate 4
daily
create
ifempty
olddir /var/log/httpd/old
postrotate
/usr/bin/killall -HUP httpd
endscript
}
Anledningen till att jag vill spara loggfilerna i användaren/domänen är för att jag vill att användaren ska kunna ladda ned loggfilerna en månad tillbaka via ftp.
Det var mer eller mindre så långt jag kommit på egen hand. Vet inte riktigt hur jag ska gå vidare nu. :)