良好的监控测量是系统的关键 - 排查ELK系统瓶颈

前言

随着分布式以及微服务架构的兴起,整个系统的架构复杂度大幅上升。为了保证系统的稳定运行以及排查出现的问题,一个精确完善的监控测量系统越来越重要。

最近在拜读《高性能MySQL》,读完了第三章“服务器性能剖析”。书中反复强调了精确测量在问题排查、分析系统中的重要性,联想到工作上的一些经历,不能同意更多了。没有精确的测量,排查分析问题就像盲人摸象,只能看到系统的某一个片面。通过这个片面来分析,往往会得出错误的结论。

另外比较重要的一点是排查分析问题一定要有逻辑性,至上而下还是至下而上都是可以的,但是不能东打一枪西打一枪。一定要明确知道我目前收集的数据是为了验证什么猜想的。

下面我以工作中的实际例子讲一下上述结论的重要性。


问题

ELK(ElasticSearch + Logstash + Kibana) 是非常常见的日志处理分析技术栈,在我们日常业务中发挥了巨大的作用。但是17年下半年我们遇到了问题,因为业务飞速发展,接入的日志量大量增加,ELK系统出现了比较严重的日志延迟的情况,日志一般要等待几个小时才能在ELK里面查询到。如果生产环境出现问题,我们是需要查询实时日志来排查问题,ELK如此巨大的延迟我们是不能接受的。

当时因为之前负责ELK的同事离开了,我就自告奋勇地来解决这个问题。


排查整个链路

先讲一下我们ELK具体的架构。

Filebeats =>  Kafka  =>  Logstash1 => Kafka => Logstash2 => ElasticSearch

业务机上的Filebeats收集日志,传给Kafka的队列。第一组Logstash作为消费者订阅Kafka的topic,清洗日志的脏数据,同时给日志打上一些标签,再传给Kafka。第二组Logstash负责将清洗后的日志上报给ElasticSearch。这套架构,Kafka是在日志量激增的时候做一个缓冲,用来削峰平谷的。

刚接手的时候,观察了一下整个流程各集群的机器负载,发现只有第一组清洗数据Logstash集群的CPU负载很高,于是怀疑这里是整个系统的瓶颈。但是当我给这个Logstash集群加了机器后,发现延迟没有改善,直接说明猜想错误。为了明确到底是哪里出现问题,我第一次加了测量工具,Kafka OffsetMonitor,来监控Kafka的消费延迟。有了具体的延迟数据,我们判断出来延迟发生在第二个Logstash集群处,也就是单纯上报的集群。

这下有两种造成延迟的可能性:

1. Logstash2集群消费速度慢   

2. ElasticSearch处理日志的速度慢,因为Logstash是同步阻塞地上报日志,导致Logstash看起来也慢

对于第一种可能性,我们尝试给Logstash2集群增加机器,发现延迟也没有改善,那么可以排除了。所以也就只剩下ElasticSearch慢这一个可能性了。


排查ElasticSearch

当判断出ElasticSearch是性能瓶颈时,我查看了一下ElasticSearch集群的机器负载,发现cpu、内存、io、网络都不高。机器性能没用完,性能就已经到达了瓶颈,一时间找不到原因。

这段时间我就在网上各种搜索ElasticSearch的性能的优化方法,尝试关闭了swap,尝试去掉了副本,也尝试增加了refresh_interval,提升了10%左右的性能,但是还是很不理想。这里我想说的就是,在没有找到根本原因之前病急乱投医的策略,既耗费时间,效果也不好。

后来和师父们讨论了一下,决定先加上ElasticSearch第三方开发的性能监控和分析工具,看看能不能从细粒度的指标中找到深层次的原因。我使用的是ElasticHQ,能够监控集群的各项指标,甚至还能根据指标数据给出一些改进建议。使用ElasticHQ之后,我们鸟枪换炮了,通过它的分析,我们定位到io是瓶颈。不过奇怪的是,磁盘读写量并不是特别高。不过明确了是io问题之后,我们使用iostat,终于发现其中有磁盘的util max达到了100%。

最后经实验确认,问题的原因是我们使用了9块磁盘,但是磁盘没有做raid,所以读写压力都集中在一块磁盘上。我们服务器的io监控上的读写量是针对整个机器的,整个机器的读写压力不高,但是全部集中在一块磁盘上就扛不住了。了解了原因之后解决方法也明确了,把磁盘做raid,raid之后,整个ElasticSearch的性能提升了一倍,延迟问题完全解决。


总结

为了查到问题真正的原因,我们为ELK系统添加了多个监控: Kafka OffsetMonitor, ElasticHQ,io监控等。因为有这些数据,帮助我们排除错误的猜想,一步一步逼近真正的原因。所以对于一个复杂的系统,为了能够自我检查,自我反馈,一定需要精确完善的测量监控。




阅读更多
换一批

没有更多推荐了,返回首页