一、前言
ELK现在来说是做日志管理分析最好的一种方式了,当然像logback或者一般项目启动追加本地txt文件,再或者docker命令查看,这些也是可以的,但是这些在出现大数据量日志的时候,查找相关信息是非常麻烦的,所以如果说中大型项目并且注重于日志的分析管理,推荐使用ELK。
本次演示ELK的版本都是最新的,7.12.0
二、ELK安装,切记ELK的版本必须对应
关于ELK的安装前面有文章已经写过,不过是针对Windows系统的,现在的项目差不多都是Linux部署了,无关紧要,配置是一样配置的。所以安装的方式请移步:
三、配置启动
ELK启动的顺序一定要是ES先起服务,不然其它两个会报错,配置文件中是依赖ES的。
1.conf/elasticsearch.yml 默认情况下es的配置文件不需要做什么修改,除非你想修改端口号、添加用户名密码啥的,自行把握。
2.kibana.yml 这里的用户名密码是需要插件的,在ES安装的时候配置的,这里添加用户名密码最终只是在登录kibana的时候需要登录。
elasticsearch.hosts: ["http://localhost:9200"]
server.host: "0.0.0.0"
server.port: 5601
kibana.index: ".kibana"
i18n.locale: "zh-CN"
#elasticsearch.username: "kibana"
#elasticsearch.password: "123456"
3.conf/logstach.conf
input {
tcp {
host => "localhost"
port => 9601
mode => "server"
tags => ["tags"]
##格式json
codec => json_lines
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "%{[appname]}-%{+YYYY.MM.dd}"
}
}
配置完毕、启动~
四、整合SpringBoot
pom.xml 添加
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>
src/resource新建logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration>
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 端口是在logstach.conf中配置的-->
<destination>localhost:9601</destination>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8"
class="net.logstash.logback.encoder.LogstashEncoder">
<!-- "appname":"spring-boot-lee" 的作用是指定创建索引的名字时用,并且在生成的文档中会多了这个字段,切记小写 -->
<customFields>{"appname":"spring-boot-lee"}</customFields>
</encoder>
</appender>
<!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
</layout>
</appender>
<!--
logger主要用于存放日志对象,也可以定义日志类型、级别
name:表示匹配的logger类型前缀,也就是包的前半部分
level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
false:表示只用当前logger的appender-ref,true:
表示当前logger的appender-ref和rootLogger的appender-ref都有效
-->
<!-- hibernate logger -->
<logger name="com.example" level="debug"/>
<!-- Spring framework logger -->
<logger name="org.springframework" level="debug" additivity="false"></logger>
<root level="INFO">
<appender-ref ref="stdout"/>
<appender-ref ref="LOGSTASH"/>
</root>
</configuration>
配置完毕,写个测试接口添加打印的日志,启动项目,登录Kibana,http://localhost:9200
这里就是全部的日志信息
ES默认数据是存放内存的,建议设置为内存+磁盘,完毕~