本文将介绍:
1:使用docker一次性部署 Elasticsearch,Kibana,Logstash 三大件
2:springboot使用slf4j记录日志,并将日志推送到Elasticsearch,使用Kibana进行查看日志
本文只简单介绍搭建步骤,更多内容可以参考:elk-docker官网:https://elk-docker.readthedocs.io/
步骤开始:
1.Elasticsearch至少需要2G的容量,要不然会失败。
sysctl -w vm.max_map_count=262144
2.使用docker 拉取 elk镜像 我这里使用的是7.8.0版本,你也可以用命令:docker pull sebp/elk 拉取最新版本的镜像
docker pull sebp/elk:780
3.启动elk
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd --name elk sebp/elk:780
4.配置logstatsh(这一步是最重要的,很多部署失败都是这一步没有操作对)
使用命令进入docker容器
docker exec -it elk bin/bash
进入logstash配置目录
cd /etc/logstash/conf.d
列出启动elk时,默认安装的conf文件
ls
创建自定义的logstash.conf文件
vim logstash.conf
将以下内容复制到 logstash.conf 保存退出。退出elk容器(键盘组合键ctrl+p+q)
input {
tcp {
port => 5044
codec => "json"
}
}
output {
elasticsearch {
action => "index"
hosts => ["localhost"]
index => "%{[appname]}-%{+YYYY.MM}"
}
}
删除默认安装的conf文件
rm 02-beats-input.conf 10-syslog.conf 11-nginx.conf 30-output.conf
5:重启elk
docker restart elk
至此elk-docker部署完毕。
下面开始讲解与springboot进行整合
1.pom添加maven依赖
<!--日志-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
2.controller编写测试代码记录日志(Logger一定要选择slf4j包下的)

3.添加logback.xml文件。
logback.xml存放路径:

logback.xml内容(192.168.0.1替换成你部署elk的服务器ip):
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger[:%line] - %msg%n</pattern>
</encoder>
</appender>
<contextName>logback</contextName>
<property name="log.pattern"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID} --- [%15.15t] %-40.40logger{39} : %m%n"/>
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<destination>192.168.0.1:5044</destination>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"flight-status"}</customFields>
</encoder>
<connectionStrategy>
<roundRobin>
<connectionTTL>5 minutes</connectionTTL>
</roundRobin>
</connectionStrategy>
</appender>
<!--<logger name="com.jsj.member" additivity="true">-->
<!--<appender-ref ref="LOGSTASH"/>-->
<!--</logger>-->
<root level="info">
<appender-ref ref="LOGSTASH"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
4.启动springboot 浏览器输入:localhost:8080/test 执行写好的测试代码。
5.打开Kibana查看日志,浏览器输入192.168.0.1:5601,点击红圈中的Connect to your Elasticsearch index

6.点击 红圈按钮

7.创建索引

8.下一步

9.使用discover查看日志

可以看到刚才使用springboot写的日志已经展示出来了
