Docker安装ELK结合Springboot应用
环境搭建
版本介绍
组件 | 版本号 |
---|---|
logstash | 7.6.2 |
elasticsearch | 7.6.2 |
kibana | 7.6.2 |
Docker安装ELK
安装Elasticsearch
1、 启动elasticsearch
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch
-e "discovery.type=single-node"
-e "cluster.name=elasticsearch"
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data
-d elasticsearch:7.6.2
2、 安装中文分词器IKAnalyzer
# 进入容器
docker exec -it elasticsearch /bin/bash
1. 安装分词器
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
1. 退出容器
exit
1. 重启
docker restart elasticsearch
安装Logstash
1、 下载logstash
docker pull logstash:7.6.2
2、 创建配置文件
mkdir /mydata/logstash
cd /mydata/logstash
vi logstash.conf
logstash.conf配置文件如下:
input {
1. 读取网络数据采用tcp,生产环境不建议使用,因为tcp只能在sizeQueue中缓存20个事件(日志记录)
tcp {
mode => "server"
host => "0.0.0.0"
1. 定义的端口
port => 4560
1. codec表示使用的插件,json_lines就是之前安装的插件
codec => json_lines
1. type可以自定义名称
type => "debug"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4561
codec => json_lines
type => "error"
}
redis {
1. data_type有三种类型
1. list => BLPOP
1. channel => SUBSCRIBE
1. pattern_channel => PSUBSCRIBE
data_type => "pattern_channel"
1. 订阅的key,可以使用模糊
key => "logstash-*"
1. redis服务器
host => "192.168.1.41"
1. redis端口
port => 6379
threads => 5
}
}
1. 过滤器,对数据进行处理
filter{
1. 对type=error的日志进行过滤
if [type] == "error" {
mutate {
remove_field => "port"
remove_field => "host"
remove_field => "@version"
}
1. 启用json插件解码
json {
1. 解码的key名称
source => "message"
1. 如果json是多层结构,设置target=jsoncontent
target => "jsoncontent"
}
}
}
output {
1. 将日志输出到elasticsearch
elasticsearch {
1. 地址
hosts => "192.168.1.41:9200"
1. 日志文件名称格式,type引用input中定义的type值
index => "log-%{type}-%{+YYYY.MM.dd}"
}
}
具体的其它类型配置说明可以参考链接
3、 启动logstash服务
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563
--link elasticsearch:es
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
-d logstash:7.6.2
4、 在logstash安装json_lines插件
# 进入容器
docker exec -it logstash /bin/bash
1. 进步bin目录
cd /bin/
1. 安装插件
logstash-plugin install logstash-codec-json_lines
1. 退出容器
exit
1. 重启logstash
docker restart logstash
安装Kibana
# 下载
docker pull kibana:7.6.2
1. 启动
docker run --name kibana -p 5601:5601 --link elasticsearch:es -e "elasticsearch.hosts=http://es:9200" -d kibana:7.6.2
通过访问http://ip:5601 进入kibana
界面说明
整合Springboot
net.logstash.logback
logstash-logback-encoder
5.3
192.168.1.41:4560
192.168.1.41:4561
参考: SpringBoot应用ELK搭建Docker日志收集: juejin.cn/post/697100… Logstash 最佳实践: doc.yonyoucloud.com/doc/logstas…