美文网首页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