2016-05-22 4 views
0

私は、Linuxが動作しているApache Webサーバーに複雑な問題がありました。間欠的に、ApacheはURLの一部に5XXエラーを与えます。そのようなものは、ほんの少しの要求から始まり、適時に成長します。この問題は、Apacheを再起動すると解決されます。シェルスクリプト内のパターンマッチングと複数のパラメータ

私たちはこの問題を解決しようとしていますが、Apacheサーバーのアクセスログを監視するスクリプトを置く必要があるときまで、問題が発生するたびにApacheを再起動する必要があります。

シェルスクリプトはログを尾行し、すべての5xxエラーを別のファイルにgrepし、cronによってトリガーされる別のシェルスクリプトがエラーが指定された時間内に何回も繰り返されるとファイルをチェックします。

私の問題は、uRLが常に同じではないため、すべての5XXエラーを持つファイルをgrepする必要があり、URLが繰り返されているかどうかを確認する必要があるということです。

誰も私がどのようにエラーをフィルタリングすることができるいくつかの論理を提案することができます。私は明確にしようとしましたが、これが問題を説明する正しい方法であるかどうかはわかりません。

ログは値でビットが変更されますが、形式は同じです。

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

たとえば、いくつかのログを提供できますか? – avivb

+0

こんにちはAvivb、コメントの単語数の制限のために上記のログを追加しました。私の質問をチェックしてくれてありがとう。 –

答えて

1

あなたは100%再起動して500エラーを修正してもよろしいですか?その場合は、crontabファイルにこの行を実行する必要があります。再起動:

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 

をそれは最後の100行で10個の以上のエラーがあるかどうということを意味します。特定の問題の値を変更することができます。

まず、私が考えることができると思うのは、最新のものでなければあなたのApacheをアップグレードすることです。

+0

こんにちはジュリアン、ソリューションを与えてくれてありがとうが、私の問題は異なっています。 500エラーはサーバーを停止させるのではなく、何らかの要求で500を返して回復しますが、1週間に1回、サーバー(サーバー3台)がダウンします。そのため、エラーのパターンを確認し、再起動が必要かどうかを判断する必要があります。 –

+0

Apacheまたはバックエンドによって500が生成された場合、診断しましたか? –

+0

問題は明らかではないので、スクリプトを使用してWebサーバーを再起動するための回避策を試しています。 –

関連する問題