Globales VHOST-Logging

Apache, Lighttpd, nginx, Cherokee
jabba
Posts: 33
Joined: 2006-08-31 01:55

Globales VHOST-Logging

Post by jabba » 2008-03-26 15:02

Apache2, Debian Sarge

Problem:
Apache2 läßt sich nicht mehr starten, weil "to many files open". Es sind einfach zu viele Logfiles offen.
Je VHOST wird ein Log dieser Art erzeigt:
CustomLog /var/log/apache2/domain.de-combined.log combined


Obwohl nur ca. 150 VHOST auf der Maschine existieren, gibt es tausende offener Files. Das hängt scheinbar auch mit der Apachekonfiguration zusammen (MinSpareServers etc.).

Jetzt möchte ich versuchen ein globales Vhost-Logfile zu nutzen.

in apache2.conf definiert:
LogFormat "%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" vhost

Das ist die normale "combined"-Definition, vorne ergänzt um %v
Später möchte ich mit dem Apache-Script "split-logfile" das globale Log auf einzelne Files verteilen, so das je VHOST ein Log entsteht, welches z.B. dann mit awstats verarbeitet werden kann.

Für die Vhosts gibt es bislang eine eigene Datei, die includet wird. Dort steht bislang:
<VirtualHost xxx.xxx.xxx.xxx:80>

#
SuexecUserGroup vu2001 vu2001
#
ServerAdmin root@domain.de
DocumentRoot /var/www/virtual/domain.de/htdocs

ServerName domain.de
ServerAlias http://www.domain.de domain.de

CustomLog /var/log/apache2/domain.de-combined.log combined
....
</VirtualHost>


Das dortige Log soll entfernt werden und einmal global soll es heissen:
CustomLog /var/log/apache2/access-combined.log vhost


WO muss dieser Eintrag stehen?
Wenn ich es außerhalb eines VHOST-Containers versuche, wird nichts geloggt!

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Globales VHOST-Logging

Post by oxygen » 2008-03-26 15:12

Erhöhe besser die Anzahl der erlaubten Filehandles. Sonst wirst du später aus anderen Gründen an diese Grenze stoßen.

Deine Konfigurationsoptionen sehen richtig aus. Steht deine Logformat direktive auch außerhalb von Containern?
Ansonten kannst auch mal
CustomLog /var/log/apache2/access-combined.log "%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""
probieren.

jabba
Posts: 33
Joined: 2006-08-31 01:55

Re: Globales VHOST-Logging

Post by jabba » 2008-03-26 15:31

Code: Select all

  CustomLog /var/log/apache2/access-combined.log vhost
steht innerhalb:

Code: Select all

<VirtualHost *>
   ServerAdmin webmaster@localhost
   
   DocumentRoot /var/www/
   <Directory />
      Options FollowSymLinks
      AllowOverride None
   </Directory>
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
      # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
      RedirectMatch ^/$ /apache2-default/
   </Directory>

   ErrorLog /var/log/apache2/error.log

   # Possible values include: debug, info, notice, warn, error, crit,
   # alert, emerg.
    #LogLevel warn
       [b]CustomLog /var/log/apache2/access-combined.log vhost[/b]

#   CustomLog /var/log/apache2/access.log combined
   ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


Das dortige globale error-Log funktioniert, aber nicht das CustomLog!

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: Globales VHOST-Logging

Post by freddy36 » 2008-03-26 15:35

In nem <VirtualHost> Container ist es auch nicht global... Das das error log funktioniert liegt vermutlich daran das das Standard ist ;)

jabba
Posts: 33
Joined: 2006-08-31 01:55

Re: Globales VHOST-Logging

Post by jabba » 2008-03-26 15:43

Bin jetzt ein Schritt weiter!
Wenn ich das Logging direkt in die apache2.con eintragen, dann loggt er alle Web mit dem Default USer www-data.
Die Vhosts haben aber eigene Systemuser ud diese Webs werden nicht geloggt.

Vielleicht liegt es auch daran, das die Vhosts IP-based sind?
<VirtualHost xxx.xxx.xxx.xxx:80> ??

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Globales VHOST-Logging

Post by oxygen » 2008-03-26 16:30

Wenn du die Logfiles für die einzelnen Webs nicht deaktiviert hast, werden sie nicht im globalen geloggt. Dieses Logfile enthält alle Einträge die woanders nicht geloggt werden.

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: Globales VHOST-Logging

Post by freddy36 » 2008-03-26 16:50

Jabba wrote:Vielleicht liegt es auch daran, das die Vhosts IP-based sind?
<VirtualHost xxx.xxx.xxx.xxx:80> ??


Nein, die log Einträge in den VirtualHost Containern müssen raus...

jabba
Posts: 33
Joined: 2006-08-31 01:55

Re: Globales VHOST-Logging

Post by jabba » 2008-03-26 17:18

Ja so ist es. Konnte ich verifizieren.
Sobald auch nur eine Loganweisung in einem Vhost steht, gibt es kein globales Log mehr.
Gut, damit habe ich nun eine Basis, um das eigentliche Problem der zu vielen offenen Filehandles angehen zu können!

djcrackman
Posts: 207
Joined: 2005-06-02 11:58

Re: Globales VHOST-Logging

Post by djcrackman » 2008-03-28 13:08

Wenn du genügend Ressourcen übrig hast, würde sich auch ein Logging in einer *SQL-Datenbank anbieten - beachte aber dabei, dass der Apache dann von der DB abhängig ist und nicht mehr startet, wenn der *SQLd tot ist.

jabba
Posts: 33
Joined: 2006-08-31 01:55

Re: Globales VHOST-Logging

Post by jabba » 2008-03-28 13:18

Loggen in MySQL? Nein besser nicht, die DB ist schon arg genug strapaziert und außerdem brauchen wir die Logfiles als Datei für die Weiterverarbeitung.

Wir haben mittlerweile alle Probleme lösen können.
Es wird ein globales Log erzeugt und stündlich mit dem split-lofile des Apachen die Logfiles generiert, die dann letztlich weiterverarbeitet und rotiert werden. Das globale Log wird nach dem Splitten entfernt und neu angelegt.
Soweit ich das bislang beurteilen kann läuft das gut und schnell genug und es sind schlagartig mehrere zehntausend offene Files weniger!

Warum der Apache derartig viele offene Files verwaltet bleibt ein Rätzel.