我们通过Beanstalk在AWS上部署了我们的Java Web应用程序。 负载均衡器设置为将EC2上的https(443)转发到端口80,并将http(80)转发到EC2上的端口80。 EC2实例运行的Apache具有重写规则,将httpstream量redirect到https,如下所示:
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{REQUEST_URI} !^/healthcheck$ RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
这一切都很好。 现在我想设置一些监视来定期validation这个规则是否还在。 (过去这个规则被误删了,我们只是偶然注意到这个)。 做这个的最好方式是什么?
编辑:我们没有设置任何外部系统监视器,我们只是使用云监视。 理想情况下,我想留在AWS内部进行设置,例如使用CloudWatch。
您可以在监控Apache访问日志的Apache实例上设置CloudWatch日志监控 。
然后在cloudwatch中创build一个度量filter ,如下所示:
[host, logName, user, timestamp, request, statusCode=301, size, referer, useragent, ...]
随后,您将在301redirect的CloudWatch中获得一张漂亮的图表,并且您可以创buildCloudWatch警报,以便在每分钟或每小时的请求数低于某个阈值时通知。
另一个解决scheme可能是将您的301错误文档设置为较短的主体,然后创build一个路由53健康状况检查来监视您的redirectURL并search错误文档的正文。 默认情况下,Apache 301错误文档应该包含“301永久移动”,因此您可以创build一个Route53运行状况检查,查找该string。
无论您使用的监控软件已经可以支持。 Nagios,例如,从check_http:
HTTP OK: HTTP/1.1 302 Redirect - 377 bytes in 0.073 second response time
你可能可以得到它专门检查302redirect。 ( -f follow开关跟着redirect,但可能不一定是你想要的。)或者写一个自定义的脚本,如EEAA在评论中build议的。