2018年7月1日 星期日

Docker-Compose 建立 Elasticsearch 與 Kibana 服務

這邊簡單記錄一下使用 docker-compose 於開發環境建立 Elasticsearch 與 Kibana 服務,除了這兩個主要的服務之外也會一同建立幾個常見於操作管理 Elasticsearch 服務。


作業系統:Windows 10 Pro 1803
Docker 相關資訊
image

會使用到 docker images:

docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3
docker.elastic.co/kibana/kibana-oss:6.2.3
yannart/cerebro:latest
elastichq/elasticsearch-hq:release-v3.3.0
appbaseio/dejavu:latest


cerebro

如果之前有用過 elasticsearch-kopf plugin 的人就會知道 Elasticsearch 5.x 之後的插件就不支援以往的安裝方式,而 kopf 在 Elasticsearch 5.x 之後就要改用 cerebro 這個來替代,而 kopf 與 cerebro 在畫面與使用上是沒有什麼差別的
https://github.com/lmenezes/cerebro
https://hub.docker.com/r/yannart/cerebro/


Elasticsearch-HQ

如果想要一個管理與監控 Elasticsearch 的工具,以往除了 kopf 之外就是使用 head,但head 在Elasticsearch 6.x  之後就不再繼續提供支援了,所以我就選用 Elasticsearch-HQ
http://www.elastichq.org/

https://github.com/ElasticHQ/elasticsearch-HQ

https://hub.docker.com/r/elastichq/elasticsearch-hq/


dejavu

dejavu 是一個 chrome-extensions,主要功能是以表格的方式提供 Elasticsearch 的資料瀏覽,並且提供匯出與匯入資料的功能(使用 JSON 與 CSV)

https://chrome.google.com/webstore/detail/dejavu/lcanobbdndljimodckphgdmllahfcadd

既然有了 chrome-extensions 又為何要以 docker 啟用 dejavu 服務呢?

這是一個可選項目,要不要啟用就讓各位自己決定,畢竟不是每個開發環境的 chrome 都會裝上 dejavu 套件,甚至有些環境也不會有 chrome 瀏覽器,所以就在 docker-compose 裡加上 dejavu

https://github.com/appbaseio/dejavu

https://hub.docker.com/r/appbaseio/dejavu/


docker-compose.yml

version: "3.2"

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3
    container_name: elasticsearch-623
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - http.host=0.0.0.0
      - http.port=9200
      - transport.host=127.0.0.1
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "http.cors.allow-origin=http://127.0.0.1:1358"
      - "http.cors.enabled=true"
      - "http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization"
      - "http.cors.allow-credentials=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es_data:/usr/share/elasticsearch/data
    networks:
      - esnet

  kibana:
    image: docker.elastic.co/kibana/kibana-oss:6.2.3
    container_name: kibana-623
    environment:
      SERVER_NAME: kibana-server
      ELASTICSEARCH_URL: http://elasticsearch:9200
    networks:
      - esnet
    depends_on:
      - elasticsearch
    ports:
      - "5601:5601"

  cerebro:
    image: yannart/cerebro:latest
    container_name: cerebro-073
    networks:
      - esnet
    ports:
      - "9900:9000"
    depends_on:
      - elasticsearch      
 
  elasticsearch-hq:
    image: elastichq/elasticsearch-hq:release-v3.3.0
    container_name: elasticsearch-hq-330
    networks:
      - esnet
    depends_on:
      - elasticsearch
    ports:
      - "5000:5000"
      
  dejavu:
    image: appbaseio/dejavu:latest
    container_name: dejavu
    networks:
      - esnet    
    ports:
     - "1358:1358"

volumes:
  es_data:
    driver: local      

networks:
  esnet:
    driver: bridge

---------------------

執行

使用指令啟用 docker-compose up –d

如果要結束 docker-compose 裡面的所有服務就是使用 docker-compose down

image

Elasticsearch

127.0.0.1:9000

image

kibana

127.0.0.1:5601

image

cerebro

127.0.0.1:9900

注意!Node address 要輸入的網址是 http://elasticsearch:9200

image

image

Elasticsearch-HQ

127.0.0.1:5000

Node address 要輸入的網址是 http://elasticsearch:9200

image

image

dejavu

127.0.0.1:1358

這邊要注意的是輸入網址的時候不是使用 docker-compose 內的服務名稱,而是要使用 ip,當輸入網址而且有連接到 elasticsearch 服務時,網址輸入框右側應該會出現「Fetch Indices」,當 elasticsearch 有 Index 時就會列出來並且選擇並進入資料瀏覽的頁面,但如果 elasticsearch 裡沒有任何 Index 的時候就無法進入資料瀏覽頁面

image


把 Elasticsearch 與 Kibana 和幾個相關服務都建置完成後,接下來就是要如何使用這些服務了,下一篇將會說明如何在 ASP.NET Core MVC 網站專案裡將 Log 傳送到 Elasticsearch 裡,然後在使用 Kibana 顯示資料與操作查詢。


以上

沒有留言:

張貼留言

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。