springboot集成ELK日志分析平台(windows版)
1.elk是什么?
在安装ELK之前,建议大家先了解一下elk。
ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。
ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
Logstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES。
Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格、图形。
2.搭建elk平台的环境配置
2.1开发环境:
win11,idea,jdk1.8
2.2ELK版本:
elasticsearch-7.11.1-windows-x86_64,logstash-7.6.1,kibana-7.11.1-windows-x86_64
值得一提的是elasticsearch的版本一定要和kibana的版本对应(很重要)不然会出现因为版本不兼容而引发的各种错误。开发人员一般使用jdk8,这就要求elasticsearch的版本在7.13以下。
我这里的elasticsearch和kibana版本都选择了7.11.1。
3.下载和安装
3.1下载:
我这里给出了下载路径,直接下载对应的版本即可
elasticsearch:https://www.elastic.co/cn/downloads/past-releases/
logstash:https://www.elastic.co/cn/downloads/past-releases/#logstash
kibana:https://www.elastic.co/cn/downloads/past-releases/#kibana
3.2安装:
elasticsearch:直接解压即可
logstash:解压压缩包,进入bin目录新建logstash.conf文件,文件内容如下
input {
tcp {
#模式选择为server
mode => "server"
#ip和端口根据自己情况填写,端口默认4560,对应下文logback.xml里appender中的destination
host => "127.0.0.1"
port => 4560
#格式json
codec => json_lines
}
}
filter {
#过滤器,根据需要填写
}
output {
elasticsearch {
action => "index"
#这里是es的地址,多个es要写成数组的形式
hosts => "127.0.0.1:9200"
#用于kibana过滤,可以填项目名称
index => "logstash_test"
}
}
kibana:解压文件即可
4.启动ELK
4.1ELK工作流程:
在启动ELK之前我们要先了解一下ELK的工作流程,这样才能更好的理解ELK的启动顺序。
ELK工作流程:一般都是需要在收集日志的服务上部署logstash,作为logstash shipper用于监控,过滤日志,将过滤后的日志发送给broker,然后logstash indexer将存放在broker中的数据再写入elasticsearch,elasticsearch对这些数据创建索引,然后kibana对其进行各种分析并以图表的形式展示。
有些时候,如果日志的收集量比较大,为了保证日志收集的性能和数据的完整性,logstash shipper和logstash indexer之间的缓冲器(broker)也经常用kafka来实现。
4.2ELK启动
通过ELK的工作流程我们不难得知,ELK的启动顺序为logstash>=elasticsearch>kibana,如果先启动logstash,logstash会轮询请求配置文件的elasticsearch,会报警告,所以我们更改启动顺序为elasticsearch>logstah>kibana。
4.2.1启动elasticsearch:
双击bin文件夹中的elasticsearch.bat即可
启动成功如下图所示
浏览器输入URL:http://localhost:9200/ 会输出json字符串
{
"name" : "DESKTOP-4N5REV4",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ashqHfBHTbCyWrS-xa05Tg",
"version" : {
"number" : "7.11.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
"build_date" : "2021-02-15T13:44:09.394032Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
4.2.2启动logstash:
切换到logstash中的bin目录下,终端输入
logstash -f logstash.conf
通过conf启动完成,启动成功如下如图所示
浏览器输入URL:http://localhost:9600/ 会输出json字符串:
{"host":"DESKTOP-4N5REV4","version":"7.6.1","http_address":"127.0.0.1:9600","id":"85acfd96-129b-4a71-8e26-e5837e4ae228","name":"DESKTOP-4N5REV4","ephemeral_id":"19dcb65c-f4da-4dcf-8b53-13422cd1bc78","status":"green","snapshot":false,"pipeline":{"workers":8,"batch_size":125,"batch_delay":50},"build_date":"2020-02-29T01:53:17+00:00","build_sha":"0a75e90f49c005bffea8525d1b06728d17dbdf58","build_snapshot":false}
4.2.3启动kibana:
进入到kibana的bin目录,终端输入kibana.bat,启动成功如下图所示
浏览器输入URL:http://localhost:5601/ 截图
5.springboot集成ELK
5.1引入pom依赖
<!-- 集成logback -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
</dependencies>
5.2修改配置文件
如果配置文件是application.properties形式,则在配置文件下写入
logging.config=classpath:logback.xml
如果配置文件是application.yml形式,则在配置文件加写入
logging:
config: classpath:logback.xml
5.3编写logback.xml
我这里给出以下xml文件,直接复制到你的项目下即可,如果有修改需求,直接在logback.xml文件下修改即可。
<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration>
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 端口是在logstach.conf中配置的-->
<destination>localhost:4560</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>
6.kibana图形化界面使用使用
全部配置完成后浏览器访问http://localhost:5601/进入到kibana图形化界面
点击左侧discover
点击创建索引
接下来就可以看到你配置的索引了
输入索引名称
第二步选择@timestamp
点击创建就能创建成功了,截图如下
随后再次点击discover页面就可以看到自己的日志内容了。文章来源:https://www.toymoban.com/news/detail-514492.html
7.拓展
kibana中文模式设置
修改kibana安装文件下的config的kibana.yml文件,在文件最后一行加入文章来源地址https://www.toymoban.com/news/detail-514492.html
i18n.locale: "zh-CN"
到了这里,关于springboot集成ELK日志分析平台(windows版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!