Apache2 Logging
Apache2 Logging
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?
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?
Re: Apache2 Logging
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
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
Re: Apache2 Logging
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.
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.
Re: Apache2 Logging
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.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.
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.
Re: Apache2 Logging
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.
Re: Apache2 Logging
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.
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.
Re: Apache2 Logging
Bei beendetem Apache sagt lsof keinen einzigen Eintrag vom Apache Benutzer.
Noch jemand eine Idee?
Noch jemand eine Idee?
Re: Apache2 Logging
Vorsicht, das kann auch root sein ...SllnD wrote:Bei beendetem Apache sagt lsof keinen einzigen Eintrag vom Apache Benutzer.
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.logRe: Apache2 Logging
@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.
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.
Re: Apache2 Logging
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.logRe: Apache2 Logging
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.
Obwohl bei dir wird auch keine access_log angelegt.
Re: Apache2 Logging
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! ;-)SllnD wrote:Obwohl bei dir wird auch keine access_log angelegt.
Ist übrigens ein Etch auf PowerPC, Apache ist auch der 2.2.3
Re: Apache2 Logging
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?
Was glaubst du ist die zur Zeit beste Lösung - Reboot?
Re: Apache2 Logging
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 wrote:Was glaubst du ist die zur Zeit beste Lösung - Reboot?
Re: Apache2 Logging
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:
Zur Sicherheit habe ich mal nun händisch folgende Dateien 2 access-Log Dateien angelegt:
Anschließend den Apache gestartet. Leider wird immernoch nichts geloggt.-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
Re: Apache2 Logging
Lass mal die error-log anzeigen und mal doch mal
Stimmen die Pfade?
Das Error-Log ist übrigens stattlich:
Code: Select all
grep -r access /etc/apache2/*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.
Re: Apache2 Logging
Studiere mal den Inhalt des error_log :roll:
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings 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.
Wings for Life ● Wings 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.
Re: Apache2 Logging
Bis auf normale Einträge wie File not Found permanent folgenden Eintrag:
Auch in den Apache Einstellungen ist nichts zu finden:
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.[Sat Jun 02 00:36:43 2007] [error] [client 127.0.0.1] File does not exist: /htdocs
Auch in den Apache Einstellungen ist nichts zu finden:
web:/etc/apache2# grep -R "htdocs" *
web:/etc/apache2#
Re: Apache2 Logging
Bitte mal
Code: Select all
grep -r Log /etc/apache2 | grep -v "^#"Re: Apache2 Logging
Hier der Auszug:
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.
Ich muss dazu sagen - damit ich zur Zeit überhaupt eine Log Datei habe, habe ich dem VirtualHost eine CustomLog zugewiesen, die einwandfrei beschrieben wird.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
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.
Re: Apache2 Logging
Code: Select all
/etc/apache2/apache2.conf:CustomLog /home/www/logs/access_log common