星空网 > 软件开发 > Java

从头开始搭建分布式日志平台的docker环境

从头开始搭建分布式日志平台的docker环境 

上篇(spring mvc+ELK从头开始搭建日志平台)分享了从头开始搭建基于spring mvc+redis+logback+logstash+elasticsearch+kibana的分布式日志平台,是在windows平台下操作的,这篇主要是将这些软件环境全部在linux+docker折腾一遍。
 

从头开始搭建分布式日志平台的docker环境


  我们的目的是需要在docker中安装像resis,elk这些软件环境,由于我是windows平台,搜索一把找到了boot2docker,但在安装时提示需要用dockermachine来安装,dockermachine与Oracle VM VirtualBox配合来完成,在创建一个docker时会自动创建一个linux虚似机。经过对比,我最终决定按传统的方式来做,在linux系统中去安装docker.虚似机我选择了VMware Workstation Pro,操作系统选择最新的ubantu,,安装好之后,还需要做很多操作,比如:磁盘映射,窗口大小分辨率,粘贴复制的支持等等这些方便使用虚似机的设置。

  有了虚似机,就可以开始搞docker了,安装docker环境这个操作比较简单,我们只需要按照这个链接(Installation on Ubuntu)中的操作一步一步就可以了,虽然有些操作命令你不一定熟悉,但也不需要过份紧张,我们只求安装成功,有兴趣的可细研究每条命令的用途。文章中需要根据自己安装的ubuntu版本来执行相应的命令,新版本反而更加简单些,安装成功了也附加了测试方式。我们执行下docer version,如果看到如下图所示说明已经安装成功。

  安装软件,安装软件一种是直接去下载压缩包,解压来安装,这种自控能力比较强,但相对麻烦,这里我们可以选择已经做好的image文件方式来安装,所有的image都可以在hub.docker中查找到,其中包含了详细的操作步骤,下面主要分享在安装过程中遇到的一些问题。

  在执行时,如果发现有些命令不清楚,第一个方法是去官网上查,第二个就是利用-h或者--help在命令中查看。
  从头开始搭建分布式日志平台的docker环境

  •   redis
docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf


     我按上面的命令写出了下面的版本:
    

docker run -dit --name redis --hostname redis-host -v /data:/data -p 6379:6379 redis redis-server /data/redis.conf


     上面的指令导致docker执行异常,问题出在配置文件的指定上,修改了加载配置文件的路径,改成下面的可正常运行,不知道是否是配置文件的路径不支持随意修改的原因,下面的命令没有指定redis-server以及配置文件,初步看来默认会加载配置文件,有待后续验证。
    

docker run -dit --name redis --hostname redis-host -v /data:/data -v /data/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 redis

    • -p是端口映射,docker内部的端口映射到host的端口,比如安装了多个resis时,这个端口映射就必备设置,否则会出现host上的端口被占用的情况。
    • --name,这个是为了方便根据docker的名称来操作docker,否则只能根据生成的ID来操作,不直观,比如我们可以 docker start redis来启动。

                从头开始搭建分布式日志平台的docker环境

    • --hostname,这个是进入docker后的一个显示名称,比如执行docker exec -it redis bash后出现的名称

                从头开始搭建分布式日志平台的docker环境

    • -v是磁盘路径映射,docker与host主机之间的路径关系
    • -d是机后台方式运行,其它的i与t可以查文档
    • 如果不指定image的版本,它会自动寻找最新的版本来安装。
  •   logstash
docker run -dit --name logstash --hostname logstash-host -v /data:/data logstash logstash -f /data/logstash.conf

     logstash的安装没有出现redis的一波三折,配置文件的路径可直接指定,问题出在配置文件的配置上,下面是运转正常的配置

input {  redis {    data_type => "list"    key => "logstash"    host => "192.168.21.128"    port => 6379    threads => 5    codec => "json"  }}filter {}output { elasticsearch {    hosts => ["192.168.21.128"]  }  stdout{}}


    之前的windows版本有介绍配置,但在docker下配置有所不同,直接将windows版的配置文件拿过来,出现了logstash无法将redis中的日志输出到elastcsearch中,输出配置如下:

output {    elasticsearch {    hosts => ["127.0.0.1:9200"]    index => "logstash-%{type}-%{+YYYY.MM.dd}"    document_type => "%{type}"    workers => 1    flush_size => 20    idle_flush_time => 1    template_overwrite => true  }  stdout{}}

    这里从两方面分析:
    input:确认logback是否将日志持久化到redis,可使用key *来查看是否有我们专门为日志配置的logstash这个key,然后使用llen logstash来测试日志有没有随程序的执行而增加,确认的结果是可以查到logstash这个key,而且长度随程序的执行而增加,那现在的问题就在 于logstash并没有将redis中的日志取走去执行并输出到elasticsearch中,将output中的elasticsearch的配置删 除,只保留stdout,结果发现logstash可以正常的取走日志。

   output: input的排查说明问题出在output,然后采取最少配置方法,只配置最重要的属性,按文档中配置hosts再运行,结果程序运转正常。
    我们按照https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html文章中说的来配置,注意hosts属性,之前配置的某些属性可能有问题,这里采取优先级最少配置法来排查问题。

  •   elasticsearch
docker run -dit --name elasticsearch --hostname elasticsearch-host -v /data:/data -p 9200:9200 -p 9300:9300 elasticsearch:latest


      elasticsearch的安装比较奇怪,按上面的命令安装后,在客户端访问http9200端口,提示拒绝访问,端口显示为tcp,后经过无数次安装,无意中一次安装成功了,正常的映射了端口,目前详细的问题还没有找到,等后续有机会再研究。我们看docker ps后显示的结果,目前正常的情况下那个端口显示为如下图,之前出现问题时端口显示不是:0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp而是9200/tcp, 9300/tcp。

     从头开始搭建分布式日志平台的docker环境

  •   kibana
docker run -dit --name kibana --hostname kibana-host -v /data:/data -p 5601:5601 -e ELASTICSEARCH_URL=http://192.168.21.128:9200 kibana:latest


     kibana的执行命令也是遇到配置文件指定的问题,后来将属性直接放在命令上了,这也是后续需要解决的问题。

    从头开始搭建分布式日志平台的docker环境

    上面四项都成功安装后,我们的日志就可以成功的采集到elasticsearch中了。
     从头开始搭建分布式日志平台的docker环境
 
    上面的docker在启动后,并不具备自启功能,做也是可以做到的。如果没有做成自启功能,我们也不能一个命令一个命令去重新启动,这里有一个命令可以一次性全部启动docker,非常实用。

   从头开始搭建分布式日志平台的docker环境

docker start `docker -ps -a -q`

 




原标题:从头开始搭建分布式日志平台的docker环境

关键词:docker

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊注册资料有哪些?新手加入亚马逊都需要什么?:https://www.ikjzd.com/articles/101908
速卖通单品折扣活动玩法解析!:https://www.ikjzd.com/articles/101909
2019亚马逊Prime Day回顾!:https://www.ikjzd.com/articles/101911
亚马逊店铺做不起来?大都因为这几点没做好!:https://www.ikjzd.com/articles/101912
总结来啦!2019亚马逊Prime Day各站点热销品集合!:https://www.ikjzd.com/articles/101915
关于直通车新版“营销能力等级”,你了解多少?:https://www.ikjzd.com/articles/101916
2024.04.18亚马逊选品推荐(仅供参考):女装蛋糕连衣裙:https://www.kjdsnews.com/a/1842234.html
欧洲市场疯了,订单排到7、8月!:https://www.kjdsnews.com/a/1842235.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流