1. 概述
日志分析平台ELK是由Elasticsearch、Logstash和Kibana三个服务组成,Elasticsearch负责日志存储并提供搜索功能,Logstash负责日志收集,Kibana提供Web查询操作界面。本文将使用Docker进行安装以上三个组件。 前提条件 自己先搭建好Docker环境,Windows环境可以安装Docker Desktop,Linux环境Docker搭建可以参考Docker系列之CentOS8安装Docker
2. 搭建ELK
使用docker compose进行安装ELK组件,在github上搜索docker-elk,选择第一个项目  选择最新版本下载源码压缩包  下载后,解压,看到如下文件信息  elasticsearch文件夹是elasticsearch配置文件 kibana文件夹是kibana配置文件 logstash文件夹是logstash配置文件 setup文件用于初始化.env中配置的elasticsearch用户名信息 .env文件为elasticsearch用户名信息 在docker-compose.yml文件目录下执行以下命令
docker-compose build
docker-compose up
执行结果如下图   在浏览器输入地址:http://localhost:5601,输入用户名和密码elastic/changeme 
3. SpringBoot整合ELK
3.1. 引入核心依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>${logstash.version}</version>
</dependency>
3.2. 编写logback.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property name="LOG_HOME" value="/logs"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:5000</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="LOGSTASH"/>
</root>
</configuration>
3.3. 编写application.yml配置文件
server:
port: 8138
spring:
application:
name: springboot-elk
logging:
config: classpath:logback.xml
3.4. 编写服务主启动类
@SpringBootApplication
public class ElkApplication {
private final static Logger logger = LoggerFactory.getLogger(ElkApplication.class);
public static void main(String[] args) {
SpringApplication.run(ElkApplication.class, args);
logger.info("服务启动成功,当前时间为:{}", LocalDateTime.now());
}
}
3.5. 验证
启动服务,查看控制台日志 
4. 配置ELK
登录后,进入ELK首页  点击左上角,打开左侧菜单栏,选择Stack Management  选择Kibana—>Data Views—>create data view  创建data view  再次点击左侧菜单栏,选择Discover  右上侧选择时间,点击Refresh按钮,即可查看到选择时间的日志信息 
|