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)