Apache2 Logging

Apache, Lighttpd, nginx, Cherokee
sllnd
Posts: 177
Joined: 2002-10-14 22:33

Apache2 Logging

Post by sllnd » 2007-05-30 11:39

Hallo zusammen,

ich habe den Apache 2.2.3 von Debian Etch im Einsatz und habe gestern dem Apache die access_log im laufenden Betrieb weggenommen - ich musste Änderungen an logrotate testen. Nun kann ich den Indianer neustarten, aber es wird keine access_log erstellt.

Dann habe ich eine genau identische Datei erstellt mit den Rechten der error_log -rw-r----- 1 root adm. Der Apache rührt diese Datei aber gar nicht erst an.

Lösche ich die error_log und starte den Apache neu wird diese sauber wieder angelegt. Lasse ich Logrotate laufen wird die Datei zwar angelegt, aber Apache loggt rein gar nichts in diese Datei.

Kennt jemand dieses Problem?

dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin

Re: Apache2 Logging

Post by dtdesign » 2007-05-30 16:46

Weil die Datei root:adm gehört. Der Indianer unter Debian ist aber www-data:www-data ;)

Edit: Dies muss nicht die Ursache sein, allerdings hat root:adm teilweise nicht zum Erfolg geführt und www-data:www-data machte den Apache glücklich. Probieren kann man es ja, kann eh nichts kaputt gehen, was nicht bereits kaputt ist :P

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-05-30 22:52

Die Datei error_log gehört aber auch root:adm und diese wird vom Apache beschrieben - was das merkwürdige ist. Debian hat automatisch die Dateirrechte so gesetzt. Mit den Rechten www-data:www-data ist keine schlechte Idee - muss ich morgen mal ausprobieren.

Aber es muss doch irgendwie auch so wieder funktionieren - es kann ja nicht sein, dass das Standard Logging von Apache nicht mehr funktioniert, wenn man einmal dem Apache die Log-Datei beim Laufenden Betrieb wegzieht.

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

Re: Apache2 Logging

Post by oxygen » 2007-05-30 23:28

SllnD wrote: Aber es muss doch irgendwie auch so wieder funktionieren - es kann ja nicht sein, dass das Standard Logging von Apache nicht mehr funktioniert, wenn man einmal dem Apache die Log-Datei beim Laufenden Betrieb wegzieht.
Doch genau das tut es. Jedoch weiterhin in die umbenannte Datei. Der Apache öffnet nicht bei jedem Schreibvorgang die Datei neu, das würde eine unnötige Masse an Syscalls nach sich ziehen. Stattdessen lässt er er den filehandle geöffnet.
Nach dem rotieren muss der Apache einmal graceful restarted werden, dann öffnet er die logfiles neu. Das sollte auch so in der Standard logrotate Konfiguration drin stehen.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-05-30 23:32

Das ist auch richtig. Logrotate bennent die vorhandene access_log um und erstellt eine neue. Anschließend wird (standardmäßig voreingestellt) ein restart auf den Apache abgesetzt. Soweit IO - jedoch schreibt der Apache nicht in diese Datei - nicht einen einzigen Eintrag.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-05-31 00:30

was sagt denn lsof dazu?

Ich kenne das so, daß der Apache sich zur Not seine Logs auch selber anlegt, d.h. apache beenden, Log löschen, apache starten sollte dann auch wieder ein Logfile ergeben.

Hängt evtl. ein Indianer?

flo.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-01 23:10

Bei beendetem Apache sagt lsof keinen einzigen Eintrag vom Apache Benutzer.

Noch jemand eine Idee?

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-01 23:34

SllnD wrote:Bei beendetem Apache sagt lsof keinen einzigen Eintrag vom Apache Benutzer.
Vorsicht, das kann auch root sein ...

Code: Select all

(/home/samba/apache-logs) # ls -lisa error.log 
24842283 48 -rw-r--r-- 1 root root 47673 2007-06-01 11:54 error.log
(/home/samba/apache-logs) # /etc/init.d/apache2 stop
Stopping web server (apache2)....
(/home/samba/apache-logs) # rm error.log 
(/home/samba/apache-logs) # /etc/init.d/apache2 start
Starting web server (apache2)....
(/home/samba/apache-logs) # ls -lisa error.log 
24842283 0 -rw-r--r-- 1 root root 0 2007-06-01 23:34 error.log
Da ist also definitiv etwas im Argen ...

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-01 23:41

@flo

Moment, du versteht da anscheinend etwas falsch. Wenn ich die error_log lösche und dann Apache neustarte, dann wird eine neue erstellt - das ist auch nicht das Problem.

Das problem ist die access_log, welche nicht erstellt bzw. von Apache nicht beschrieben wird, obwohl die Rechte richtig sind. Wenn ich Logrotate nutze wird zwar eine access_log erstellt - jedoch rührt der Apache diese Datei nicht an.

Habe nun die Ausgabe von lsof bei beendetem Apache in eine Textedatei ausgeben lassen und habe nach "apache" und "http" gesucht - jedoch keinen Eintrag gefunden.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-01 23:47

SllnD wrote:Moment, du versteht da anscheinend etwas falsch. Wenn ich die error_log lösche und dann Apache neustarte, dann wird eine neue erstellt - das ist auch nicht das Problem.

Code: Select all

[root@debian][23:40:47][0.00 0.00][tmp:exec](/home/samba/apache-logs) # /etc/init.d/apache2 stop
Stopping web server (apache2)....
[root@debian][23:42:42][0.00 0.00][tmp:exec](/home/samba/apache-logs) # mv access.log access.log.old
[root@debian][23:42:48][0.00 0.00][tmp:exec](/home/samba/apache-logs) # /etc/init.d/apache2 start
Starting web server (apache2)....
[root@debian][23:42:58][0.24 0.02][tmp:exec](/home/samba/apache-logs) # ls -lrth
insgesamt 32K
-rw-r--r-- 1 root root  24K 2007-06-01 11:55 access.log.old
-rw-r--r-- 1 root root  103 2007-06-01 23:44 error.log
-rw-r--r-- 1 root root 1,2K 2007-06-01 23:44 access.log
Same shit in green ... da hängt irgendein Prozess bei Dir ...

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-02 00:02

Wäre eine Ausgabe der Prozesstabelkle oder von lsof sinnvoll um herauszufinden, um welchen Prozess es sich handelt - wäre sinnvoll dies für die Zukunft zu wissen, da in meinen Augen zur Zeit nur ein Reboot des ganzen Servers eine Lösung wäre - die ich nicht als die beste bevorzuge.

Obwohl bei dir wird auch keine access_log angelegt.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-02 00:08

SllnD wrote:Obwohl bei dir wird auch keine access_log angelegt.
Soll ich das Logfile SlinD nennen, damit Du glaubst, daß die Krücke das von selber anlegt? Die access.log heißt bei mir halt so! ;-)

Ist übrigens ein Etch auf PowerPC, Apache ist auch der 2.2.3

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-02 00:10

Ach verdammt total übersehen, ja wie auch immer access_log oder access.log - du hast eine - ich nicht :(

Was glaubst du ist die zur Zeit beste Lösung - Reboot?

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-02 00:13

SllnD wrote:Was glaubst du ist die zur Zeit beste Lösung - Reboot?
Entweder das oder Spurensuche in den Prozessen - bei Updates an Modulen oder z.B. PHP hakt "reload" oder "graceful" definitiv - wenn Du booten kannst und willst, mach das - geht wohl am schnellsten.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-02 00:23

Ich habe soeben den Server rebootet - es wurde keine access angelegt.

Zur Sicherheit habe ich mal nun händisch folgende Dateien 2 access-Log Dateien angelegt:
-rw-r----- 1 root adm 0 Jun 2 00:18 access.log
-rw-r----- 1 root adm 0 Jun 2 00:18 access_log
-rw-r----- 1 root adm 16479840 Jun 2 00:22 error.log
Anschließend den Apache gestartet. Leider wird immernoch nichts geloggt.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-02 00:33

Lass mal die error-log anzeigen und mal doch mal

Code: Select all

grep -r access /etc/apache2/*
Stimmen die Pfade?

Das Error-Log ist übrigens stattlich:

Code: Select all

-rw-r----- 1 root adm 16479840 Jun 2 00:22 error.log
Last edited by flo on 2007-06-02 00:38, edited 1 time in total.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Apache2 Logging

Post by Joe User » 2007-06-02 00:35

Studiere mal den Inhalt des error_log :roll:
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-02 00:40

Bis auf normale Einträge wie File not Found permanent folgenden Eintrag:
[Sat Jun 02 00:36:43 2007] [error] [client 127.0.0.1] File does not exist: /htdocs
Es gibt aber kein VHost der in irgendeiner Weise auf dieses Verzeichnis zugreifen könnte - auf diesem System wird von niemandem den Ordnernamen htdocs verwendet.

Auch in den Apache Einstellungen ist nichts zu finden:
web:/etc/apache2# grep -R "htdocs" *
web:/etc/apache2#

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-02 00:46

Bitte mal

Code: Select all

grep -r Log /etc/apache2 | grep -v "^#"

sllnd
Posts: 177
Joined: 2002-10-14 22:33

Re: Apache2 Logging

Post by sllnd » 2007-06-02 11:47

Hier der Auszug:
web:/home/www# grep -r Log /etc/apache2 | grep -v "^#"
/etc/apache2/apache2.conf:# HostnameLookups: Log the names of clients or just their IP addresses
/etc/apache2/apache2.conf:# ErrorLog: The location of the error log file.
/etc/apache2/apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost>
/etc/apache2/apache2.conf:ErrorLog /var/log/apache2/error.log
/etc/apache2/apache2.conf:# LogLevel: Control the number of messages logged to the error_log.
/etc/apache2/apache2.conf:LogLevel warn
/etc/apache2/apache2.conf:# a CustomLog directive (see below).
/etc/apache2/apache2.conf:LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
/etc/apache2/apache2.conf:LogFormat "%h %l %u %t "%r" %>s %b" common
/etc/apache2/apache2.conf:LogFormat "%{Referer}i -> %U" referer
/etc/apache2/apache2.conf:LogFormat "%{User-agent}i" agent
/etc/apache2/apache2.conf:CustomLog /home/www/logs/access_log common
/etc/apache2/sites-enabled/000-default: ErrorLog /var/log/apache2/error.log
/etc/apache2/sites-enabled/000-default: LogLevel warn
/etc/apache2/sites-enabled/000-default: CustomLog /var/log/apache2/access.log combined
/etc/apache2/sites-available/default: ErrorLog /var/log/apache2/error.log
/etc/apache2/sites-available/default: LogLevel warn
/etc/apache2/sites-available/default: CustomLog /var/log/apache2/access.log combined
Ich muss dazu sagen - damit ich zur Zeit überhaupt eine Log Datei habe, habe ich dem VirtualHost eine CustomLog zugewiesen, die einwandfrei beschrieben wird.

Das Includieren des Ordners "sites-avaible" habe ich von Anfang an auskommentiert, da ich diese nicht mag, schreibe lieber alles in die apache2.conf. So hat dies auch bis zum Experimentieren mit Logrotate auch geklappt.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Apache2 Logging

Post by flo » 2007-06-02 14:28

Code: Select all

/etc/apache2/apache2.conf:CustomLog /home/www/logs/access_log common
Das ist die einzige aktive Logdatei und sie wird geschrieben, wie Du sagst ...