Did you ever try to (a) archive Apache logs while (b) trying to sync their rotation with external log analyzers like Webalizer or Awstats? If you did, you for sure found out that there’s only one description for the task: a bloody mess – especially if you don’t want to or simply can’t take down apache while rotating the logs.
Not only that Apache has no built in facility to rotate it’s logs at a given interval. Also, the supplied utility, rotatelogs, works in a way that renders it completely useless. Instead of, say, rotating the logs every day it will happily use the log specified for the next 24 hours – no matter if it’s already a new day or not. Same is true for hourly rotation as well as weekly.
The only solution I was able to find so far is Cronolog. Developed in 2002 it’s already a bit dated but does it’s job quite nicely. It rotates the log files spooled to it at the boundary of every interval without a glitch. The only problem I was able to find is that it’ll eat up somewhat more cpu cycles than rotatelogs. Now, this wasn’t a big deal on the servers where I installed Cronolog. More important for me: I have another satisfied customer who wanted to run both, Webalizer and Awstats every hour (yes, there are statistics freaks out there ;-)).
Search
Mobile Tag for this page
Tag Cloud
addon Bigmouth Computers Error Loading Operating System Hard Drive Hardware Helden der Lyrik Helden der Technik Home Entertainment ideas internet generation iphone iscsi itunes Lebensweisheiten Linux Mac Microsoft mobile monitoring Multimedia MySQL NAS network networking network management new toy PHP Quote of the Day ReadyNAS security Silent Upgrade snmp Software Solaris Sonos Suse Technology the ugly truth tuning ubuntu vmware weisheiten windows xmasRecent Search Terms
-
Recent Posts
Recent Comments
- Error/BUG on Loggin & Report - Web Security - Astaro User Bulletin Board on Astaro PostgreSQL Fix
- William Batchelor IV on About
- Fargo73 on Contact
- Fargo73 on Contact
- Stefan Rubner on Contact
Random
Blogroll
Other Sites

Prozessdenken…
1: Apache Logs umbenennen (z.B. Richtung Mitternacht)
2: Apache graceful restart
3: t Minuten warten (z.B. t=30)
4: umbenanntes File auswerten (z.B. mit webalizer)
Wo ist jetzt das Problem?
Das Ganze funktioniert netterweise, ohne die Anzahl laufender Prozesse zu erhöhen, welches die Komplexität der Produktivumgebung nicht ins uferlose steigen lässt.
Gruß,
/k
Mehrere Probleme: Es fängt damit an, dass es sich nicht um einen Server mit einer Domain handelt, sondern um einen Cluster mit derzeit zirka 30 gehosteten Domains mit jeweils eigenen Logs. Ergo müsste ich da schonmal sicherstellen, dass alle Server den graceful restart gemacht haben, damit nicht doch noch der eine oder andere über sein nach wie vor existentes Handle in die umbenannte Datei schreibt.
Nächstes Problem ist, dass ich zu keinem gegebenen Zeitpunkt X eine Userzahl Y auf dem Cluster habe, die nahe genug an Null ist, um einfach mal so einen Restart mit (zugegeben, sporadischem aber dennoch auftretendem) Session-Verlust zu machen. Dazu kommt, dass der Loadbalancer recht empfindlich ist und nicht antwortende Server *sofort* wegklemmt. Es dauert zwar nur 60 Sekunden bis er sie wieder freigibt, aber das reicht für ein doch nicht unerhebliches Beschwerdeaufkommen. Ergo müsste ich da auch noch eine Zeitverzögerung einbauen, damit die Kisten bitteschön nacheinander einen graceful restart hinlegen und stets mindestens ein Ausweichserver für den Loadbalancer zur Verfügung steht.
Die Auswertungen selbst macht wieder ein anderer Server, den ich dann auch noch per Semaphore davon informieren müsste, dass er jetzt loslegen darf.
Sicher, man *kann* das so machen. Aber eigentlich ist es mir lieber, dass die Server *automatisch* beispielsweise um Mitternacht ein neues Logfile verwenden – und zwar alle, ohne dass ich da umbenennen, restarten oder sonstwas muss. Fünf Minuten später legt dann die Auswertung los. Die dabei notwendige Zeitsynchronisation kriege ich dann grade noch per ntp hin ;-)
Zudem: Es geht in diesem speziellen Fall – auch wenn ich das im Posting simplifiziert habe – nicht um tägliche sondern um stündliche Auswertungen, zumindest für ein paar der Domains.
Kurz: Warum soll ich mir einen mit Shell-Scripts abbrechen, wenn ich das anders viel eleganter und mit weniger Aufwand lösen kann und das Gesamtsystem sogar noch (in meinen Augen) stabiler (im Sinn von gesichert reibungsloser) läuft?
Sync mit NNTP, das musst Du mir mal erklären. (Duck&Wech)
Zu kleines Keyboard, zu große Pratzen. Fixed. Thanks.
Jo, nu ward es plausibel ;-)
Da solltest Du Dir mal ein zentrales Logging ausdenken und den Rotier-Apparat dann dort hinter klemmen. IIRC, da gab es mal ein multicast log module…
Gruss,
/k
Die Indianer tanzen doch schon um ein gemeinsames Protokoll. Schließlich musste ich ja auch dafür sorgen, dass der Content aus einer gemeinsamen Quelle kommt. Ansonsten müsste ich ja auch bei jeder Änderung am System diese auf mehreren Rechnern abgleichen. Sprich: wenn ich schon ein gemeinsames Netzlaufwerk verwende, dann kann ich da auch gleich die Logs drauf führen.