slb健康检查的频率比较高,每秒都有好几个。日积月累就带来了大量web service的日志。一来浪费存储空间,二来消耗磁盘性能。除了官方建议的降低健康检查频率外,或许有一些变通的思维
1、如果对http或者tcp转发协议不挑剔,换成tcp转发并不开启http健康检查就ok了。
优势:方便,控制台操作下就好了。
劣势:只是这样也失去了应用层异常的发现能力。
2、为健康检查单独建立一个没有开启日志的virtualhost,通过不同的端口或者hostname,让健康检查请求不会请求到业务host。
优势:web service级别的异常依然能够被健康检查发现。
劣势:virtualhost级别的异常,slb健康检查就无法发现了。
3、利用nginx等web服务器的规则,为健康检查的文件名(uri)做单独的日志配置,以nginx为例:
如下配置,健康检查配置一个业务上无意义的check.html。针对这个文件做的请求,不记录日志。
1
2
3
4
5
location ~ /check.html
{
access_log off; #关闭日志
#access_log /var/log/nginx/access/health_check.log main;或者健康检查的日志配置到单独的文件
}
优势:健康检查日志可以随意配置,且不会损失健康检查的特性。