docker搭建ELK 7.1版本(出現的坑都有決絕方案)

docker鏡像地址:https://www.docker.elastic.co/#

首先安裝docker-compose,使用pip安裝docker-compose,因爲pip可以自動對應版本問題

安裝pip

yum -y install epel-release
yum -y install python-pip

確認版本

pip --version

更新pip

pip install --upgrade pip

安裝docker-compose

pip install docker-compose 

查看版本

docker-compose version
下載elasticsearch
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.1
下載logstash
docker pull docker.elastic.co/logstash/logstash:7.1.1
下載kibana
docker pull docker.elastic.co/kibana/kibana:7.1.1

編寫docker-compose.yml文件,在/opt/目錄下新建一個elkDocker目錄

mkdir  /opt/elkDocker

進入elkDocker目錄

cd /opt/elkDocker

新建docker-compose.yml文件

vi docker-compose.yml

version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
container_name: elasticsearch7.1.1
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- esdata:/usr/share/elasticsearch/data
hostname: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
kibana:
image: docker.elastic.co/kibana/kibana:7.1.1
container_name: kibana7.1.1
environment:
- elasticsearch.hosts=http://elasticsearch:9200
hostname: kibana
depends_on:
- elasticsearch
restart: always
ports:
- "5601:5601"
logstash:
image: docker.elastic.co/logstash/logstash:7.1.1
container_name: logstash7.1.1
hostname: logstash
restart: always
depends_on:
- elasticsearch
ports:
- 9600:9600
- 5044:5044
volumes:
esdata:
driver: local

在yml文件所在目錄執行

docker-compose up -d

出現done表示成功,docker-compose logs 查看日誌(分別輸出elk三個服務的日誌)執行docker ps可以看到三個服務的運行狀態

在瀏覽器輸入http://IP:5601/

docker搭建ELK 7.1版本(出現的坑都有決絕方案)

需要注意情況如下:
1.不要下載docker官方的鏡像,最好使用 elastic官方倉庫裏的鏡像
2.如果出現啓動不成功,先把其他兩個註釋掉,一個一個服務單獨運行試試
3.logstash需要監聽elasticsearch服務,不然logstash會自動停掉
4.logstash和kibana可以不用設置關聯 elasticsearch 的環境變量,官網文檔說如果是docker鏡像有默認設置
5.如果自己修改了服務名稱或者端口要記得修改默認的設置

下面開始安裝ElasticSearch-Head

拉取ElasticSearch-Head鏡像

docker pull mobz/elasticsearch-head:5

運行ElasticSearch-Head容器

docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

在瀏覽器輸入http://IP:9100

docker搭建ELK 7.1版本(出現的坑都有決絕方案)

注: 運行ElasticSearch-Head容器時如果出現報錯如下:

docker: Error response from daemon: Conflict. The container name "/es_admin" is already in use by container "a9a2a5c74ab3b2dc42c2260fad0b0b1dd6e7c768a5cfb2ddbb121eb2946a370c". You have to remove (or rename) that container to be able to reuse that name.

則執行 docker container ls -all 查看CONTAINER ID 然後執行 docker rm id號
之後重新執行docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5 即可


注: Elasticsearch-head 連接不上Elasticsearch的原因和解決方案

1.修改elasticsearch-head下Gruntfile.js文件,內容如下:

connect: {
    server: {
        options: {
            hostname: '0.0.0.0',
            port: 9100,
            base: '.',
            keepalive: true
        }
    }
}

2.修改elasticsearch-head_site\app.js 文件。this.base_uri 改爲下面的值。

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

編輯配置文件

vim /etc/elasticsearch/elasticsearch.yml

增加下面兩項

http.cors.enabled: true
http.cors.allow-origin: "*"

然後重啓 elasticsearch ,訪問 http://localhost:9100/ 就可以成功的連接上 9200 端口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章