1.ELK的经典应用
-
Logstash:部署至服务主机,对各个服务的日志进行采集、过滤、推送
-
Elasticsearch:存储Logstash传送的结构化数据,提供给Kibana
-
Kibana:提供用户UIweb页面进行,数据展示和分析形成图表等
2.引入Beats
为什么要引入Beats
Logstash的缺陷
Logstash为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上。因此,非常消耗 CPU 和内存资源,容易造成服务器性能下降,甚至可能导致无法正常工作。
Beats的优点
Beats是一个轻量级日志采集框架,相比Logstash,占用系统的CPU和内存非常小
-
Beats:Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch存储,并由 Kibana 呈现给用户
-
Filebeat:进行文件和目录采集,主要用于收集日志数据
3.引入消息队列
为什么需要消息队列
由于logstash消耗性能,所以高并发场景容易遇到流量上的瓶颈,就算使用logstash集群也是这样,因此需要添加中间件进行日志缓存处理
- Kafka: 数据缓冲队列。解耦处理过程,削峰填谷,控制Logstash接受的数据量,保证其不会因为突发的超负荷的请求崩溃