Plesk mit globalem Apache Logging versehen
In diesem Tutorial richtet man unter Plesk ein globales Apache Webserver Logging ein, was bei Problemfällen, z.B. hohe CPU Last als weiteres Informationsmittel verwendet werden kann.
Das Tutorial ist wie immer mit Verstand umzusetzen. Pfade / Funktionsweisen können bei euch gänzlich anders sein!
0. Einleitung
Ab und an habe ich das Problem das auf dem Server irgendwas komisches abläuft (hohe CPU Last etc pp). Neben den üblichen Informationsquellen (ps, htop, …) schaue ich mir auch gerne logfiles an. Leider ist es bei Plesk so gelöst das es keine globale Logdatei gibt und man die Logfiles der Vhosts alle einzeln durchgehen müsste. Ein reines Eintragen von globalen Logparametern funktionierte nicht, da der Traffic direkt auf die Vhostskonfiguration “umgeleitet” und interpretiert wird.
Ob dies sich mit Plesk9 geändert hat oder zukünftig noch ändern wird, oder ob es einen einfacheren Weg als der hier beschriebene gibt kann ich nicht sagen. Die beschriebene Methode setze ich seit 1-2 Jahren ein und damals habe ich kein besseren Weg gefunden.
Die Methode wurde ursprünglich unter Plesk 8.0 unter Debian 4 umgesetzt und funktioniert genauso unter Plesk 9.0 und Debian 5. – Bei anderen Distributionen sind vermutlich die Pfade anders.
1. Apache Konfiguration bearbeiten
Wir definieren ein neues Logformat. Dieses kann nach belieben angepasst werden.
/etc/apache2/vhost.conf bearbeiten:
Nach LogFormat suchen und folgende Zeile einfügen:
2. Neue Apache Konfiguration anlegen
Wir legen eine neue Konfigurationsdatei an, welche von den Vhosts verwendet wird. Da diese Datei global ist, kann jederzeit eine Änderung vorgenommen werden, ohne immer wieder die Vhost Config Templates neuschreiben zu müssen. Zudem wird diese nicht von Updates (Apache/Plesk) überschrieben. Nach zukünftiger Änderung an der Datei muss der Apache neu gestartet werden
In das apache Verzeichnis wechseln und neue Datei /etc/apache2/vhosts_customers.conf anlegen:
vi vhosts_customers.conf
Inhalt der /etc/apache2/vhosts_customers.conf:
CustomLog /var/log/apache2/global_access.log combined_global
3. Script/Template in /opt/vhostconf/* anlegen
Diese Scripte dienen Dazu das alle Vhosts die oben erstelle /etc/apache2/vhosts_customers.conf mittels des /var/www/vhosts/DOMAIN.tld/conf/vhost.conf Templates erhalten. Das Script sollte regelmässig ausgeführt werden. Domains die bereits eine vhost.conf enthalten werden ignoriert, sprich die Datei wird nicht überschrieben. Bereits bestehende vhost.conf Dateien müssen eventuell manuell – mit dem Inhalt der unten erwähnten vhost.conf.default – angepasst werde.
Die /opt/vhostconf/vhost.conf.default dient als Template für die vhost.conf die mittels des Scripts den Domains/Vhosts zugeordnet wird. Diese kann auch noch weitere globale Parameter (wie z.B. für mod_deflate) beinhalten
Verzeichnis anlegen:
cd /opt/vhostconf
vi vhostconf
Inhalt der /opt/vhostconf/vhostconf:
ROOTPATH='/var/www/vhosts/'
for i in `ls -1 $ROOTPATH`;
do
ROOTPATH_DOMAIN=$ROOTPATH$i
DOMAINNAME=`echo $ROOTPATH_DOMAIN | awk -F \/ '{print $5}'`
VHOSTFILE=$ROOTPATH_DOMAIN'/conf/vhost.conf'
if [ ! -e $VHOSTFILE ] && [ $DOMAINNAME != 'chroot' ] && [ $DOMAINNAME != 'default' ]
then
echo 'No vhosts.conf in '$DOMAINNAME
cp vhost.conf.default $VHOSTFILE
fi;
done;
/opt/vhostconf/vhost.conf.default anlegen:
Inhalt der /opt/vhostconf/vhost.conf.default:
4. Crontab anlegen
Das oben erstellte Script /opt/vhostconf/vhostconf sollte in häufigen Intervallen aufgerufen werden, so dass alle neu erstellten Domains auch in die globale Logdatei mit einfliessen
Neuen Inhalt einfügen:
5. Logrotate
Ein Logrotate muss unter Debian nicht angelegt werden da /etc/logrotate.de/apache2 alle Logdateien unter /var/log/apache2/*.log abarbeitet
6. PSA Websrvmng ausführen / Apache neustarten
Nachdem der Cronjob durchgearbeitet wurde müssen noch folgende Zeilen ausgeführt werden, da sonst die geänderten Vhost Templates nicht übernommen werden
/usr/local/psa/admin/bin/websrvmng -r
/etc/init.d/apache2 restart
7. Script manuell ausführen
Das Script /opt/vhostconf/vhostconf sollte einmal ausgeführt werden, um alle Domains mit den Konfigurationsdateien zu versehen und das Schreiben in die globale Logdatei zu ermöglichen.
/usr/local/psa/admin/bin/websrvmng -a
/usr/local/psa/admin/bin/websrvmng -r
/etc/init.d/apache2 restart
8. Logdatei testen
Nachdem alles korrekt ausgeführt wurde sollte man – nach einem Apache Neustart schauen ob auch Inhalte in die /var/log/apache2/global_*.log Dateien geschrieben werden
tail -f /var/log/apache2/global_error.log
Andere / Alternative Methoden (Quickies)
Folgende Einzeler sind alternative Methoden um alle Logfiles unter Plesk auszulesen, allerdings bereiten diese die Informationen leicht anders auf als eine einzige Logdatei. – Dank an Metty für die Informationen, daran habe ich überhaupt nicht gedacht.
Hi,
gefaellt mir sehr gut =)
kleine Anmerkung, /opt/vhostconf sollte noch mit chmod u+x ausführbar gemacht werden.
Laeuft super mit Plesk10 bei mir.
Die Kurzversion noch schnell für Debian
tail -f /var/www/vhosts/*/statistics/logs/access_log
(geht auch mit fail2ban so)
gruß,
Manuel
Hey Manuel,
danke für Deine Ergänzungen.