Elasticsearch(3)--- Docker容器中運行ES、Kibana、Cerebro

  • 2019 年 10 月 3 日
  • 筆記

Docker容器中運行ES,Kibana,Cerebro和Logstash安裝與數據導入ES

想加強ES有關的知識,看了阮一鳴老師講的《Elasticsearch核心技術與實戰》收穫很大,所以接下來會跟著他來更加深入的學習ES。

這篇部落格的目的就是部署好ES和跟ES相關的輔助工具,同時通過Logstash將測試數據導入ES,這些工作完成之後,之後我們就可以在此基礎上深入的去學習它。

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

1、所需環境

Docker + docker-compose

首先環境要部署好 Docker 和 docker-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)


Tags: