ELK是Elasticsearch、Logstash、Kibana的简称(在狭义上:日志链路分析架构技术总栈)。
Elasticsearch:是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。也可理解为实时全文搜索和分析引擎。提供搜集、分析、存储数据三大功能。
Logstash:是ELK的中央数据流引擎,用来搜集、分析、过滤日志的工具。用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。
Kibana:是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。ELK技术栈搭建日志管理平台架构图:
- 简单粗暴版本:
这种架构对数据源服务器性能影响较大,因为Logsash是需要安装和运行在需要收集日志的数据源服务器上,之后将收集到的数据进行实时进行过滤处理,过滤环节是相当耗服务器时间和资源的,过滤完成后才会传输到ES中,整个过程对服务器的性能已经我们所要求的高时效性构成了挑战。
2.复杂但是高性能版本:
Nginx :是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
Tengine:是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。它的目的是打造一个高效、安全的Web平台。
nginx和tengine的区别是:
1、tengine是在nginx上面开发的,包含了nginx的性能。
2、tengine更适合大访问量网站的需求,相比nginx更加的稳定,性能更加的强劲。
Kafka:是由Apache软件基金会开发的一个开源流处理平台。是由Apache软件基金会开发的一个开源流处理平台。
Kafka严格保证了消息队列的顺序,就是一个topic下面的一个分区内只能给一个消费者消费,对于一个分区来说,kafka是不支持并发,但是可以通过扩大分区实现并发。
ELK的安装,威哥不做注解,有需要的,自行百度操作步骤。
这里威哥说明下Java对接的配置修改:
pom.xml增加依赖:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.1</version>
</dependency>
logback.xml调整:
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--
destination 是 logstash 服务的 host:port,
相当于和 logstash 建立了管道,将日志数据定向传输到 logstash
-->
<destination>192.168.91.149:9250</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
<!-- appender referenced after it is defined -->
<appender-ref ref="STDOUT"/>
<appender-ref ref="LOGSTASH" />
</root>