前提
elasticsearch与kibana已安装配置完成并且能正常使用,可参考:https://www.kongbai121.xyz/archives/docker-an-zhuang-es
安装与配置
启动容器
#拉取镜像
docker pull logstash:7.4.2
#创建容器
docker run -p 4560:4560 --name logstash -d logstash:7.4.2
#创建要挂载的配置目录
mkdir -p /mydata/logstash
#拷贝Logstash容器内部的配置
docker container cp logstash:/usr/share/logstash/config /mydata/logstash \
& docker container cp logstash:/usr/share/logstash/pipeline /mydata/logstash
#设置配置目录权限
chmod -R 775 /mydata/logstash
#停止并删除容器
docker rm -f logstash
#重新创建容器
docker run --name logstash \
--log-opt max-size=100m \
--log-opt max-file=3 \
-p 4560:4560 \
-v /mydata/logstash/config:/usr/share/logstash/config \
-v /mydata/logstash/pipeline:/usr/share/logstash/pipeline \
-d logstash:7.4.2
#开机自启
docker update logstash --restart=always
配置es所在路径
vim /mydata/logstash/config/logstash.yml
#根据实际文件对应格式修改
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://172.17.0.1:9200" ]
接收springboot日志配置
#创建并编辑文件
vim /mydata/logstash/pipeline/logstash-springboot.conf
# 写入下方配置
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "http://172.17.0.1:9200"
index => "springboot-logstash-%{application_name}-%{+YYYY.MM.dd}"
}
}
在logstash中安装json_lines插件
# 进入logstash容器
docker exec -it logstash /bin/bash
# 进入bin目录
cd /bin/
# 安装插件
logstash-plugin install logstash-codec-json_lines
# 退出容器
exit
# 重启logstash服务
docker restart logstash
SpringBoot应用集成Logstash
在pom.xml中添加logstash-logback-encoder依赖
<!--集成logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
复制代码
添加配置文件logback-spring.xml让logback的日志输出到logstash
注意appender节点下的destination需要改成你自己的logstash服务地址,比如我的是:192.168.3.101:4560 。
<springProfile name="dev">
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.1.69:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"application_name":"yuedao-cms"}</customFields>
</encoder>
</appender>
<root level="info">
<appender-ref ref="logstash"/>
</root>
<logger name="com.yuedao" level="DEBUG"/>
</springProfile>
评论区