美文网首页java
springboot + elk第三篇:docker部署logs

springboot + elk第三篇:docker部署logs

作者: Torture | 来源:发表于2021-05-10 00:49 被阅读0次

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
logstash启动日志.png

配置文件已经被加载,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

相关文章

网友评论

    本文标题:springboot + elk第三篇:docker部署logs

    本文链接:https://www.haomeiwen.com/subject/dxzmdltx.html