模式匹配和shell脚本中的多个参数

时间:2016-05-22 08:15:08

标签: bash shell

我们在运行n Linux的Apache Web服务器中面临一个复杂的问题,其中间歇性Apache为某些URL提供了5XX错误,而且这种错误也不是连续的。它似乎从很少的请求开始,并及时增长。一旦我们重新启动Apache,问题就解决了。

我们正在努力解决这个问题,但是我们需要一个解决方案,直到我们需要设置脚本来监控Apache服务器的访问日志,并且每当问题发生时我们都必须重新启动Apache。

我们认为一个shell脚本就像拖尾日志并将所有5xx错误grep到一个单独的文件而另一个将由cron触发的shell脚本将检查文件是否在上述时间内重复错误次数。 / p>

我的问题是uRL并不总是相同的,因此我必须grep具有所有5XX错误的文件,并且需要查看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"

1 个答案:

答案 0 :(得分: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不是最新的,请升级它。