2016-05-22 2 views
0

Wir stehen vor einem komplizierten Problem in Apache-Webserver unter Linux, wo Apache 5XX Fehler für einige der URLs und nicht ständig fortlaufend gibt. Es beginnt mit wenigen Anfragen und wächst rechtzeitig. Das Problem wird behoben, sobald der Apache neu gestartet wird.Mustervergleich und mit mehreren Parametern in Shell-Skript

Wir versuchen, das Problem zu beheben, aber wir brauchen eine Arbeit bis zu der Zeit, wo wir ein Skript zur Überwachung des Zugriffsprotokolls des Apache-Servers setzen müssen und jedes Mal, wenn das Problem auftritt, müssen wir den Apache neu starten.

Wir dachten, ein Shell-Skript wie das Protokollieren und grep alle 5xx Fehler in eine separate Datei und ein anderes Shell-Skript, das von Cron ausgelöst wird, wird die Datei überprüfen, wenn der Fehler mehrmals innerhalb einer angegebenen Zeit wiederholt wird.

Mein Problem ist die URLs sind nicht immer gleich und so muss ich die Datei grep, die alle 5XX Fehler hat und sehen müssen, ob URLs und Zeit auch wiederholt werden.

Kann mir jemand eine Logik vorschlagen, wie ich die Fehler wie filtern kann. Ich habe versucht klar zu sein, bin mir aber nicht sicher, ob dies der richtige Weg ist, das Problem zu erklären.

Die Logs werden mit Werten modifiziert, aber das Format ist gleich.

x.x.x.x, y.y.y.y - - [11/May/2016:08:29:05 +0800](0) "HTTPS" "GET /html/js/barebone.jsp?browserId=other&themeId=expressportal_WAR_expressportaltheme&colorSchemeId=01&minifierType=js&minifierBundleId=javascript.barebone.files&languageId=en_US&b=6200&t=1462268846000 HTTP/1.1" 502 319 "https://myportal.test.com/web/guest/home" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" 


x.x.x.x, y.y.y.y - - [11/May/2016:08:29:05 +0800](0) "HTTPS" "GET /combo/?browserId=other&minifierType=&languageId=en_US&b=6200&t=1462268846000&/html/js/aui/event-touch/event-touch-min.js&/html/js/aui/event-move/event-move-min.js HTTP/1.1" 502 319 "https://myportal.test.com/web/guest/home" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" 


x.x.x.x, y.y.y.y - - [11/May/2016:08:29:05 +0800](0) "HTTPS" "GET /html/js/liferay/available_languages.jsp?browserId=other&themeId=expressportal_WAR_expressportaltheme&colorSchemeId=01&minifierType=js&languageId=en_US&b=6200&t=1462268846000 HTTP/1.1" 502 319 "https://myportal.test.com/web/guest/home" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" 


x.x.x.x, y.y.y.y - - [11/May/2016:08:29:05 +0800](0) "HTTPS" "GET /combo/?browserId=other&minifierType=&languageId=en_US&b=6200&t=1462268846000&/html/js/aui/widget-stack/assets/skins/sam/widget-stack.css HTTP/1.1" 502 319 "https://myportal.test.com/web/guest/home" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" 
+2

Können Sie zum Beispiel einige Protokolle geben? – avivb

+0

Hallo Avivb, aufgrund der Begrenzung der Wortzahl im Kommentar hinzugefügt die Protokolle oben. Danke, dass du meine Frage überprüft hast. –

Antwort

1

Sind Sie 100% sicher, dass ein Neustart die 500 Fehler beheben? Wenn ja, sollte diese Zeile in der crontab tun:

tail -n 100 /var/log/apache2/error.logs | awk '{if ($9 >= 500) {nb += 1}} END {if (nb > 10) {exit 1}}' /var/log/apache2/access.log || service apache2 restart 

Es bedeutet, dass, wenn es mehr als 10 Fehler in den letzten 100 Zeilen: Neustart. Sie können die Werte für Ihr spezifisches Problem ändern.

Zuerst denke ich kann denken ist: Aktualisieren Sie Ihren Apache, wenn es nicht auf dem neuesten Stand ist.

+0

Hallo Julien, Danke für die Lösung, aber mein Problem ist anders. Der 500-Fehler bringt den Server nicht zum Absturz, stattdessen gibt er 500 für eine Anfrage und Wiederherstellung zurück, aber einmal in der Woche geht einer der Server (3 Server, die wir haben) unter. Also müssen wir das Muster des Fehlers überprüfen und dann entscheiden, ob wir einen Neustart benötigen. –

+0

Haben Sie diagnostiziert (durch das Lesen von Protokollen? Strace? Was auch immer) wenn 500 von Apache oder einem Backend generiert werden? –

+0

Das Problem ist nicht klar und deshalb versuchen wir, den Webserver mithilfe des Skripts neu zu starten. –

Verwandte Themen