Tip
最近遇到一个特别头疼的问题:某个服务出现了一个不怎么好复现的问题,服务一共部署在6台机器上,使用了Nginx做的负载均衡,并且负载均衡的策略为server轮询,因为不知道在哪一次请求中会将问题复现,所以需要同时将6台机器的日志全部打开并实时刷新,得以定位到问题,场面是这样的:
是不是看的眼睛都要花了?可能有人会问了:为什么不直接grep日志文件呢?原因就是不知道到底是出的什么异常,在哪一台机器上出异常,所以也不是很好排查。好在目前只有6台server,如果扩展到20台server,在负载策略不变的情况下,那么该如何去排查呢?想想都要头疼了。
解决办法调研
-
方案一:创建一个共享磁盘,挂载到所有的server上,然后将日志全部输出到共享磁盘上,排查问题的时候轮询查看磁盘内的日志文件
改善:不需要每次都访问所有的server,只需要访问共享磁盘就可以了,省事
缺陷:会产生与server数量相等的日志文件,排查起来仍然困难
-
方案二:使用LogStash采集日志信息,并输出到Elasticsearch中,使用Kibana进行查询显示,也就是我们所说的ELK方案
改善:该方案相较于方案一,