Springboot+ELK实现日志系统简单搭建
前面简单介绍了ELK三剑客中的其中两个Elasticsearch和Kibana的简单使用,如果对这两个不了解,可以看下下面的
现在来看看这最后一个Logstash
还是这个地方https://elasticsearch.cn/download/ 下载与es,kibana版本对应的Logstash,然后解压。
1.和es一样,如果机器内存小,有想玩这个的,记得把config下面的jvm.options文件中的jvm参数设置小点,我设置的256m:
-Xms256m
-Xmx256m
2.写配置文件logstash.conf,默认有个logstash-sample.conf这个文件,可以直接拿来修改
内容如下:
#暴露9090端口作为输入 input { tcp { #host 192.168.0.69 port => 9090 } } #输出到elasticsearch,此输出创建一个名为myserver的索引 output { elasticsearch { hosts => ["http://192.168.0.67:9200"] index => "myserver" } }
以上就是最简单的配置了
3.使用此配置文件启动logstash:./bin/logstash -f ./config/logstash.conf
4.创建spingboot工程,springboot日志本来就用的logback,但是我们还需要引入相关的logstash依赖
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.2</version> </dependency>
5.在appliction.properties配置文件指定logstash服务的端口位置,就是上面logstash 暴露出来的输入端口,我们上面的是9090端口
logstash.address=192.168.0.69:9090
6.logback日志配置文件:logback-spring.xml(resources下面和工程appliction配置文件同级)
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--logstash地址,从application.properties中获取--> <springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/> <!--输出到logstash的appender--> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <!--可以访问的logstash日志收集端口--> <destination>${LOGSTASH_ADDRESS}</destination> <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>Asia/Shanghai</timeZone> </timestamp> <pattern> <pattern> { "app": "my-server", "level": "%level", "thread": "%thread", "logger": "%logger{50} %M %L ", "message": "%msg" } </pattern> </pattern> <stackTrace> <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter"> <maxDepthPerThrowable>100</maxDepthPerThrowable> <rootCauseFirst>true</rootCauseFirst> <inlineHash>true</inlineHash> </throwableConverter> </stackTrace> </providers> </encoder> </appender> <root level="INFO"> <appender-ref ref="LOGSTASH"/> </root> </configuration>
7.启动springboot服务,这个时候我们会发现控制台不会再输出日志了,因为日志输出到logstash,再由logstash发送到es去了。
调用我们接口查看下服务是否成功启动了
说明服务已经成功启动,现在去看kibana查看日志信息
8.搜索是否有myserver的索引,可以看到tomcat 8080端口启动的日志
我们每次都这样搜索来看是不是很不方便,我们可以把这个索引加到discover中,后续只需要在里面搜索我们想要内容就行了
9.Management --->Index Patterns --->Create index pattern--->搜索匹配的索引然后创建
创建好了就可以在kibana的index列表看见这个索引了
现在就可以discover中使用这个索引了,不用再去dev tools工具中去写查询了
我们着看刚才调用接口打印的日志就可以在discover中看见了
10.discover中信息筛选:默认的筛选时间是15分钟内的,如果时间比较久了就需要重新选择下时间,然后输入要搜索的内容port,我们就可以看到之前服务起动的日志了
ELK简单的集成使用,大概就是这个样子了,当然logstash中还可以去过滤处理数据。像我们现在的日志在kibana里面的格式是很难看的。