zoukankan      html  css  js  c++  java
  • Elasticsearch(3)--- Docker容器中运行ES、Kibana、Cerebro

    Docker容器中运行ES,Kibana,Cerebro和Logstash安装与数据导入ES

    想加强ES有关的知识,看了阮一鸣老师讲的《Elasticsearch核心技术与实战》收获很大,所以接下来会跟着他来更加深入的学习ES。

    这篇博客的目的就是部署好ES和跟ES相关的辅助工具,同时通过Logstash将测试数据导入ES,这些工作完成之后,之后我们就可以在此基础上深入的去学习它。

    一、Docker容器中运行ES,Kibana,Cerebro

    1、所需环境

    Docker + docker-compose
    

    首先环境要部署好 Dockerdocker-compose

    检验是否成功

    命令 docker —version

    xubdeMacBook-Pro:~ xub$ docker --version
    Docker version 17.03.1-ce-rc1, build 3476dbf
    

    命令 docker-compose —version

    xubdeMacBook-Pro:~ xub$ docker-compose --version
    docker-compose version 1.11.2, build dfed245
    

    2、docker-compose.yml

    我们可以简单把docker-compose.yml理解成一个类似Shell的脚本,这个脚本定义了运行多个容器应用程序的信息。

    version: '2.2'
    services:
      cerebro:
        image: lmenezes/cerebro:0.8.3
        container_name: cerebro
        ports:
          - "9000:9000"
        command:
          - -Dhosts.0.host=http://elasticsearch:9200
        networks:
          - es7net
      kibana:
        image: docker.elastic.co/kibana/kibana:7.1.0
        container_name: kibana7
        environment:
          - I18N_LOCALE=zh-CN
          - XPACK_GRAPH_ENABLED=true
          - TIMELION_ENABLED=true
          - XPACK_MONITORING_COLLECTION_ENABLED="true"
        ports:
          - "5601:5601"
        networks:
          - es7net
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
        container_name: es7_01
        environment:
          - cluster.name=xiaoxiao
          - node.name=es7_01
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          - discovery.seed_hosts=es7_01,es7_02
          - cluster.initial_master_nodes=es7_01,es7_02
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - es7data1:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - es7net
      elasticsearch2:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
        container_name: es7_02
        environment:
          - cluster.name=xiaoxiao
          - node.name=es7_02
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          - discovery.seed_hosts=es7_01,es7_02
          - cluster.initial_master_nodes=es7_01,es7_02
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - es7data2:/usr/share/elasticsearch/data
        networks:
          - es7net
    
    volumes:
      es7data1:
        driver: local
      es7data2:
        driver: local
    
    networks:
      es7net:
        driver: bridge
    

    启动命令

    docker-compose up      #启动
    docker-compose down    #停止容器
    docker-compose down -v #停止容器并且移除数据
    

    3、查看是否成功

    es访问地址

    localhost:9200  #ES默认端口为9200
    

    kibana访问地址

    localhost:5601 #kibana默认端口5601
    

    cerebro访问地址

    localhost:9000 #cerebro默认端口9000
    

    整体这样就安装成功了。

    说明 项目是在Mac系统部署成功的,尝试在自己的阿里云服务进行部署但是因为内存太小始终无法成功。


    二、 Logstash安装与数据导入ES

    注意 Logstash和kibana下载的版本要和你的elasticsearch的版本号一一致。

    1、配置movices.yml

    这个名称是完全任意的

    # input代表读取数据 这里读取数据的位置在data文件夹下,文件名称为movies.csv
    input {
      file {
        path => "/Users/xub/opt/logstash-7.1.0/data/movies.csv"
        start_position => "beginning"
        sincedb_path => "/dev/null"
      }
    }
    filter {
      csv {
        separator => ","
        columns => ["id","content","genre"]
      }
    
      mutate {
        split => { "genre" => "|" }
        remove_field => ["path", "host","@timestamp","message"]
      }
    
      mutate {
    
        split => ["content", "("]
        add_field => { "title" => "%{[content][0]}"}
        add_field => { "year" => "%{[content][1]}"}
      }
    
      mutate {
        convert => {
          "year" => "integer"
        }
        strip => ["title"]
        remove_field => ["path", "host","@timestamp","message","content"]
      }
    
    }
    # 输入位置 这里输入数据到本地es ,并且索引名称为movies
    output {
       elasticsearch {
         hosts => "http://localhost:9200"
         index => "movies"
         document_id => "%{id}"
       }
      stdout {}
    }
    

    启动命令 : 启动命令会和配置文件movices.yml的摆放位置有关,进入bin目录

    ./logstash ../movices.yml 
    

    movices.yml存放的位置

    启动成功

    这个时候你去cerebro可视化界面可以看到,已经有名称为movies的索引存在的,上面的图片其实已经存在movies索引了,因为我是Logstash数据导入ES成功才截的图。

    总结总的来说这里还是简单的,之前通过Logstash将Mysql数据数据迁移到es会相对复杂点,毕竟它还需要一个数据库驱动包。

    这样环境就已经搭建成功了,接下来的学习都在这个的基础上进行演示。


    感谢

    Elasticsearch核心技术与实战---阮一鸣(eBay Pronto平台技术负责人)

    课程相关资料地址 :Github地址



     我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(8)
    

  • 相关阅读:
    马走日
    扩号匹配问题
    八皇后
    流感传染
    迷宫
    棋盘问题
    JAVA-初步认识-第二章-字符类型的运算续
    JAVA-初步认识-第二章-算术运算符1知识点整理
    JAVA-初步认识-第二章-算术运算符1
    JAVA-初步认识-第二章-类型运算细节
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/11432112.html
Copyright © 2011-2022 走看看