1.从docker hub中拉取官方镜像,尽量将版本与elasticsearch保持一致,避免出现问题
# 该命令可执行也可不执行,docker run的时候若没有镜像会自动pull镜像
docker pull logstash:7.6.0
2.创建网络
# 如果已经创建了网络,则省略该步骤
docker network create elastic
3.启动容器
下面会给出两种启动的方式,看个人喜好去选择,都由我亲自实践,完全莫得bug!
有bug的话我当场倒立窜稀!
方法一:直接启动容器,进入容器修改相关配置
# 1.直接启动容器,不映射配置文件
docker run -d -p 5043:5043 -p 5044:5044 --name logstash --network elastic logstash:7.6.0
# 2.待容器启动完成,进入容器中
docker exec -it logstah /bin/bash
# 3.为logstash安装json_lines插件
/usr/share/logstash/bin/logstash-plugin install logstash-codec-json_lines
# 4. 添加springboot.yml配置文件
========================================================================
vi /usr/share/logstash/pipeline/springboot.yml
# 输入端
input {
#输入logstash时控制台打印
stdin { }
#为logstash增加tcp输入口,方便springboot接入
#5044端口预留给filebeat输入logstah,此处开放5043端口,程序直接输入logstash
tcp {
mode => "server"
host => "0.0.0.0"
#从5043端口取日志
port => 5043
#需要安装logstash-codec-json_lines插件
codec => json_lines
}
}
#输出端
output {
stdout {
codec => rubydebug
}
elasticsearch {
#hosts中的地址应该写同一network下的容器名称
hosts => ["http://elasticsearch:9200"]
# 输出至elasticsearch中的自定义index名称
index => "flow-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
========================================================================
# 5. 保存编辑好的yml配置文件,退出容器
exit
# 6.重启容器
docker restart logstash
方法二:以映射配置文件的方式启动容器
# 1.创建存放配置文件的文件夹
sudo mkdir -p /docker/logstash/config/
# 2.创建配置文件(复制以下全部内容至命令行中)
sudo tee /docker/logstash/config/logstash.yml <<-'EOF'
# 输入端
input {
#输入logstash时控制台打印
stdin { }
#为logstash增加tcp输入口,方便springboot接入
#5044端口预留给filebeat输入logstah,此处开放5043端口,程序直接输入logstash
tcp {
mode => "server"
host => "0.0.0.0"
#从5043端口取日志
port => 5043
#需要安装logstash-codec-json_lines插件
codec => json_lines
}
}
#输出端
output {
stdout {
codec => rubydebug
}
elasticsearch {
#hosts中的地址应该写同一network下的容器名称
hosts => ["http://elasticsearch:9200"]
# 输出至elasticsearch中的自定义index名称
index => "flow-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
EOF
# 3.启动容器
docker run -d --name logstash \
-p 5043:5043 -p 5044:5044 \
--network elastic \
--privileged=true \
-v /docker/logstash/config/:/usr/share/logstash/pipeline/ \
logstash:7.6.0
# 4.待容器启动完成,进入容器中
docker exec -it logstash /bin/bash
# 5.为logstash安装json_lines插件
/usr/share/logstash/bin/logstash-plugin install logstash-codec-json_lines
# 6. 成功安装插件之后,退出容器
exit
# 7.重启容器
docker restart logstash
两种方式各有各的优缺点,方法一后续需要修改配置文件需要再次进入容器,而方法二只需要修改或者添加映射的配置的文件即可。
Tips: /docker/logstash/config/ 为映射出的配置文件的存放目录, 在目录下的所有yml文件都会被logstash启动加载
4.启动后的logstash日志
docker logs -f logstash
配置文件已经被加载,5043端口也正在被监听
5.启动参数说明
# logstash 默认会给beats留下一下5044的端口,用作beats的日志收集
# 再开放一个5043端口,用作tcp的日志收集端口
-p 5043:5043 -p 5044:5044
# 获取宿主机文件操作权限,有此权限才能进行文件映射
--privileged=true
# /usr/share/logstash/pipeline/ 此路径是容器的配置文件路径,将其管道的配置
# 文件目录映射出来,方便自己添加自己的日志输入输出配置
-v /docker/logstash/config/:/usr/share/logstash/pipeline/
# 将启动后的容器加入elastic网段中,在同一网段中,容器互通只需要通过容器名称即可
--network elastic
转载请说明出处!
上一篇:springboot + elk第二篇:docker部署kibana
下一篇:springboot + elk第四篇:springboot整合elk