基於docker安裝ELK
阿新 • • 發佈:2020-06-30
巨坑提醒:ES和kibana的版本儘可能的保證一致,否則要去修改很多配置資訊,而且不一定能安裝成功,現象:ES安裝成功了但是kibana無法連結到ES,報紅(red)。
ELK版本關係表
Elasticsearch | Kibana | X-Pack | Beats^* | Logstash^* | ES-Hadoop (jar)* | APM Server | App Search | Enterprise Search | Endpoint Security |
---|---|---|---|---|---|---|---|---|---|
5.0.x | 5.0.x | 5.0.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | ||||
5.1.x | 5.1.x | 5.1.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | ||||
5.2.x | 5.2.x | 5.2.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | ||||
5.3.x | 5.3.x | 5.3.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | ||||
5.4.x | 5.4.x | 5.4.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | ||||
5.5.x | 5.5.x | 5.5.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | ||||
5.6.x | 5.6.x | 5.6.x | 1.3.x-6.0.x | 2.4.x-6.0.x | 5.0.x-6.0.x | ||||
6.0.x | 6.0.x | 6.0.x | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | ||||
6.1.x | 6.1.x | 6.1.x | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | ||||
6.2.x | 6.2.x | 6.2.x | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
6.3.x | 6.3.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
6.4.x | 6.4.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
6.5.x | 6.5.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
6.6.x | 6.6.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
6.7.x | 6.7.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
6.8.x | 6.8.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | |||
7.0.x | 7.0.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 3.14.x - 3.18.x | ||
7.1.x | 7.1.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 3.14.x - 3.18.x | ||
7.2.x | 7.2.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 7.2.x | 3.14.x - 3.18.x | |
7.3.x | 7.3.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 7.3.x | 3.14.x - 3.18.x | |
7.4.x | 7.4.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 7.4.x | 3.14.x - 3.18.x | |
7.5.x | 7.5.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 7.5.x | 3.14.x - 3.18.x | |
7.6.x | 7.6.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | 7.6.x | 3.14.x - 3.18.x | |
7.7.x | 7.7.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | N/A**** | 7.7.x | 3.14.x - 3.18.x |
7.8.x | 7.8.x | N/A** | 6.8.x-7.8.x | 6.8.x-7.8.x | 6.8.x-7.8.x | 7.0.x-7.8.x*** | N/A**** | 7.8.x | 3.14.x - 3.18.x |
官方地址:https://www.elastic.co/cn/support/matrix#matrix_compatibility
1、ElasticSearch
第一步:拉取映象
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker.elastic.co/elasticsearch表示官方地址的映象,有些地址映象拉取失敗
第二步:安裝
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
第三步:配置跨域
1)進入容器
docker exec -it es /bin/bash
2)修改elasticsearch.yml
# 顯示檔案 ls 結果如下: LICENSE.txt README.textile config lib modules NOTICE.txt bin data logs plugins # 進入配置資料夾 cd config # 顯示檔案 ls 結果如下: elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles elasticsearch.yml jvm.options role_mapping.yml users # 修改配置檔案 vi elasticsearch.yml #==========================================重點在這================================== # 加入跨域配置 http.cors.enabled: true http.cors.allow-origin: "*"
VI使用三個命令: 1) 修改命令 shift + i; 2)退出修改模式esc; 3)儲存退出shift + : wq
第四步:重啟容器
docker restart es
第五步:訪問地址
http://localhost:9200/
顯示效果如下就表示成功了
{ "name" : "Y4XWRMb", "cluster_name" : "docker-cluster", "cluster_uuid" : "QFkmUQb2Q4OaF_Jv_LTISg", "version" : { "number" : "6.3.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "053779d", "build_date" : "2018-07-20T05:20:23.451332Z", "build_snapshot" : false, "lucene_version" : "7.3.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
2、ElasticSearch-Head(ES資料讀取外掛)
第一步:拉取
docker pull mobz/elasticsearch-head:5
第二步:安裝
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
第三步:訪問地址
http://localhost:9100/
見如下效果表示成功
3、logstash
第一步:拉取映象
docker pull docker.elastic.co/logstash/logstash:6.2.4
第二步:安裝
docker run --name es_logstash docker.elastic.co/logstash/logstash:6.2.4
第三步:修改logstash.yml檔案
#進入容器 docker exec -it es_logstash /bin/bash #進入config目錄,並修改配置檔案 ls cd config vi logstash.yml #修改內容如下 http.host: "0.0.0.0" xpack.monitoring.elasticsearch.url: http://192.168.1.3:9200 xpack.monitoring.elasticsearch.username: elastic xpack.monitoring.elasticsearch.password: changme
注意:http://192.168.1.3:9200為本機地址
4、kibana
第一步:拉取映象
docker pull docker.elastic.co/kibana/kibana:6.3.2
注意:版本,如果版本不對會連線不上ES,最好跟ES的版本一致
第二步:安裝
docker run --name es_kibana -p 5601:5601 -d -e ELASTICSEARCH_URL=http://192.168.1.3:9200 kibana:6.3.2
第三步:訪問地址
http://127.0.0.1:5601
第四步:修改pipeline下的logstash.conf檔案
#進入容器 docker exec -it es_logstash /bin/bash #修改 ls cd pipeline ls vi logstash.conf
#原來的 #======================================== #input { # beats { # port => 5044 # } #} #output { # stdout { # codec => rubydebug # } #} #======================================== #新增的部分 input { file { codec=> json path => "/usr/local/*.json" } } filter { #定義資料的格式 grok { match => { "message" => "%{DATA:timestamp}\|%{IP:serverIp}\|%{IP:clientIp}\|%{DATA:logSource}\|%{DATA:userId}\|%{DATA:reqUrl}\|%{DATA:reqUri}\|%{DATA:refer}\|%{DATA:device}\|%{DATA:textDuring}\|%{DATA:duringTime:int}\|\|"} } } output { elasticsearch{ hosts=> "http://192.168.1.3:9200" } }
注意,一定是本機器IP地址,hosts=> "http://192.168.2.153:9200"
重啟全部容器
再次訪問http://localhost:5601/
注意:
這時kibana出現,提示No default index pattern.沒有預設的索引模式
這時需要新增索引模式
注意:如果ES中沒任何資料,在第3步輸入索引將無法找到任何索引名,就無法進行下一步。