Elastic學習之旅 (2) 快速安裝ELK

大家好,我是Edison。

上一篇:初識ElasticSearch

ElasticSearch的安裝方式

ElasticSearch可以有多種安裝方式,比如直接下載安裝到宿主機進行運行,也可以通過docker的方式運行,完全取決我們的用途。這裏,我們只是爲了學習和練習,通過docker方式運行即可。

Docker安裝的前置條件

這裏爲了成功通過docker安裝ElasticSearch+Kibana,我們需要準備一下docker和docker-compose(如果你的實驗機器沒有安裝的話):

安裝docker:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
yum -y install docker
systemctl enable docker && systemctl start docker
docker --version

安裝docker-compose:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
yum -y install docker
systemctl enable docker && systemctl start docker
docker --version

這裏我們通過直接運行的方式(非Docker)運行Logstash,因此這裏我們安裝一下JDK:

yum install java-1.8.0-openjdk
java -version

修改系統參數(如果你的機器配置較低的話,比如只有2個G內存):

# 修改配置
sudo vim /etc/sysctl.conf
vm.max_map_count = 655360
# 讓配置生效
sudo sysctl -p

Docker安裝ElasticSearch+Kibana

這裏我們以ES 7.1.0版本爲例,雖然它是幾年前的版本了,但這裏我們只是學習完全夠用了。

下面是我們準備好的docker-compose.yml文件:

version: '2.2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.0
    container_name: kibana7
    environment:
      - I18N_LOCALE=en-US
      - 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=edisontalk
      - 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=edisontalk
      - 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

在這個文件中,定義了兩個ES實例 和 一個Kibana實例,兩個ES實例組成了一個小集羣,Kibana則是可視化查詢工具。

這裏需要注意的是參數是“ES_JAVA_OPTS”,建議將Xmx 和 Xms 設置成一樣的,如這裏的512M。當然,如果你的機器配置較低,建議將這兩個值調的低一些,比如256M。但是,Xmx的值不要超過機器內存的50%

運行docker-compose文件執行運行安裝:

docker-compose up -d

運行後等待1分鐘,通過瀏覽器URL訪問ES實例:

 

然後通過瀏覽器URL訪問Kibana實例:

 

至此,你的ES+Kibana初步安裝好了。

安裝Logstash並導入測試數據集

這裏我們再安裝一個logstash,選擇下載一個logstash-7.1.0安裝到宿主機上的/usr/local/elastic/elk7目錄下。

從這裏下載logstash 7.1.0,與我們剛剛安裝的ES實例保持一致:https://www.elastic.co/cn/downloads/past-releases/logstash-7-1-0

然後將其copy到你的服務器上,並進行解壓:

然後準備一個logstash.conf配置文件,並copy到logstash-7.1.0/bin目錄下:

input {
  file {
    path => "/usr/local/elastic/elk7/logstash-7.1.0/bin/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"]
  }

}
output {
   elasticsearch {
     hosts => "http://localhost:9200"
     index => "movies"
     document_id => "%{id}"
   }
  stdout {}
}

這個配置文件定義了我們需要採集的數據的路徑,爲了實現測試數據集的導入,我們也需要下載一個測試數據集,這裏選擇的是MovieLens的開放數據集,選擇其small類型的movies測試數據,將這個movices.csv數據copy到logstash-7.1.0/bin目錄下即可。

數據集地址:http://files.grouplens.org/datasets/movielens/ml-latest-small.zip

這個movie.csv中包含了一些電影的id和標題,以及該電影的類別,數據格式如下:

movieId, title, genres

最後,開始運行logstash:

sudo ./logstash -f logstash.conf

稍後,我們就可以看到一條條數據被傳到了ElasticSearch中:

NOTE:logstash的執行比較慢,需要耐心等待一下,取決於你的測試服務器的配置了。

數據插入完成後,我們可以到Kibana的Dev Tools中驗證一下:

可以看到,共計9743個movie數據被傳到了ElasticSearch中。

安裝Cerebro可視化管理界面

Cerebro是一個常用的開源可視化管理工具,它可以對ElasticSearch進行集羣監控和管理、集羣配置修改、索引分片管理。

要安裝Cerebro,只需要修改一下我們的docker-compose.yml,添加一個service即可:

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
      
 ......

然後重新執行以下命令即可安裝:

docker-compose up -d

安裝好後訪問9000端口即可看到:

小結

本篇,我們瞭解了ElasticSearch的安裝方式,並通過docker-compose的方式快速搭建了一個兩個ES節點的ElasitcSearch + Kibana服務。然後,通過手動安裝Logstash並導入測試數據集,爲後續學習ElasticSearch基本概念和查詢練習奠定了基礎。

下一篇,我們就正式開始ElasticSearch的入門,先從一些常見的基本概念走起!

參考資料

極客時間,阮一鳴,《ElasticSearch核心技術與實戰

 

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