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)