ELK是三个开源软件的缩写,分别表示:elasticsearch、logstash、kibanaElasticsearch、Logstash、Kibana作用:
Elasticsearch: 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等 ,用于存储日志信息
Logstash: 日志收集,springboot利用Logstash把日志发送个Logstash,然后Logstash将日志传递给Elasticsearch。
Kibana:通过web端对日志进行可视化操作
logback产生日志->logstash->elasticsearch->kibana
优点:
此架构搭建简单,容易上手
缺点:
1、每个节点部署logstash,运行时占用CPU,内存大,会对节点性能造成一定的影响
2、没有将日志数据进行缓存,存在丢失的风险
windows 安装 ELK(Elasticsearch,Logstash,kibana)
下载相应软件包:
Elasticsearch 下载:https://www.elastic.co/downloads/elasticsearch
Logstash 下载:https://www.elastic.co/downloads/logstash
kibana 下载:https://www.elastic.co/downloads/kibana
重点讲一下logstash的安装
首先在 logstash的bin目录下 新建一个 logstash.conf 文件
input {
# stdin { }
tcp {
# host:port就是上面appender中的destination,
# 这里其实把Logstash作为服务,开启9250端口接收logback发出的消息
#这个需要配置成本机IP,不然logstash无法启动
host => "127.0.0.1"
#端口号
port => 9250
mode => "server" tags => ["tags"]
#将日志以json格式输入
codec => json_lines
}
}
filter {
grok {
match => [
"message","%{NOTSPACE:tag}[T ]%{NOTSPACE:method}[T ]%{NOTSPACE:api}[T ]%{NOTSPACE:params}",
"message","%{NOTSPACE:tag}[T ]%{NOTSPACE:author}[T ]%{NOTSPACE:msg}"
]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-test-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
然后在新建一个文件 logstashrunservice.bat
输入logstash.bat -f logstash.conf 并保存
logstash.bat -f logstash.conf
至此logstash安装完成,elasticsearch和kibana的安装比较简单,此处不多加赘述。
下载NSSM: http://www.nssm.cc/download
下载后解压到文件夹
此处还是以logstash为例进行安装服务,elasticsearch和kibana的安装一样。
将cmd 当前所在目录设置到 nssm.exe 的目录下运行 nssm install
nssm install
单击 install service 就可以了。
服务安装成功之后,在浏览器中输入对应的地址即刻查看安装是否成功
在浏览器中输入 http://127.0.0.1:9200 访问elasticsearch
在浏览器中输入 http://127.0.0.1:9600 访问logstash
在浏览器中输入 http://127.0.0.1:5601 访问kibana
net.logstash.logback
logstash-logback-encoder
6.6
让logback的日志输出到logstash
%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\)- %m%n
UTF-8
log/ant-back.log
log/ant-back.%d.%i.log
120
100MB
%d %p (%file:%line\)- %m%n
UTF-8
127.0.0.1:9250
UTC
{
"thread": "%thread",
"logLevel": "%level",
"message": "%message",
"class": "%logger{40}",
"serviceName": "${springAppName:-}",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "${PID:-}"
}
重启自己本地的项目,去浏览器的ELk中建立索引,查看刚才从系统中导入logstash的日志
需要将starter和stater-web中引入的log包排除,再引入log4j2依赖包
org.springframework.boot
spring-boot-starter
2.1.5.RELEASE
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-web
2.1.5.RELEASE
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
2.1.5.RELEASE
log4j2.xml配置文件中内容