1.ELK介绍
1.1.什么是ELK?
ELK是Elasticsearch、Logstash、Kibana的简称(也称为 ELK Stack),是elastic公司提供的一套完整的日志收集以及展示的解决方案,能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。
-
Elasticsearch:是开源的分布式全文检索服务器。
-
Logstash:是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、过滤、解析,并将数据发送给ES。
-
Kibana:数据分析与可视化平台,对Elasticsearch存储的数据进行可视化分析,通过表格的形式展现出来。
1.2.为什么要用 ELK?
一般大型系统都采用分布式架构,不同的模块部署在不同的服务器上,大规模分布式项目的日志面临的问题如下:
- 文本搜索太慢怎么办?
- 分布式环境下的日志如何查询?
- 如何多维度查询?
2.安装logstash
2.1.下载
下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz
2.2.安装
解压即安装:
tar -zxvf logstash-6.2.3.tar.gz -C /usr/local/logstash
2.3.修改配置
在 logstash 的主目录下:
vim config/log_to_es.conf
内容如下:
# For detail structure of this file
# Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
input {
# For detail config for log4j as input,
# See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
tcp {
mode => "server"
host => "0.0.0.0"
port => 9250
}
}
filter {
##过滤、格式化数据.
}
output {
# For detail config for elasticsearch as output,
# See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
elasticsearch {
action => "index" #The operation on ES
hosts => "192.168.204.131:9200" #ElasticSearch host, can be array.
index => "applog" #The index to write data to.
}
}
2.4.启动
启动命令:
./bin/logstash -f config/log_to_es.conf
#或后台运行守护进程
./bin/logstash -f config/log_to_es.conf &
启动成功:
3.Spring Cloud集成ELK
3.1.power_shop_item
3.1.1.pom.xml
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>
3.1.2.logback.xml
<!-- 为logstash输出的JSON格式的Appender -->
<appender name="logstash"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.233.136:9250</destination>
<!-- 日志输出编码 -->
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽
度,logger是class的全名,%msg:日志消息-->
<pattern>{"message":"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg" }</pattern>
</pattern>
</providers>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="DEBUG">
<appender-ref ref="Stdout" />
<appender-ref ref="RollingFile" />
<appender-ref ref="logstash" />
</root>
3.2.测试
head插件:
kibana分析日志: