Docker 安裝 ES 7.7.0 及 Head、Kibana、IK分詞器、Logstash、Filebeat 插件

目錄

 

環境信息

ES安裝

ElasticSearch-Head安裝

IK分詞器安裝


環境信息

Docker version 1.13.1, build 4ef4b30/1.13.1 
CentOS Linux release 7.7.1908 (Core)

ES安裝

  •   拉取鏡像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.0
  • 運行容器
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.7.0
  • 跨域修改
docker exec -it es /bin/bash
# 顯示文件
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: "*"
  • 重啓
docker restart es
  • 訪問9200端口 

  

ElasticSearch-Head安裝

  • 拉取鏡像
docker pull mobz/elasticsearch-head:5
  • 運行鏡像
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
  • 訪問

  • 異常

新建索引時,報錯:

{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}

注意:elasticsearch添加index時不能有大寫字母,type=invalid_index_name_exception reason=Invalid index name [standardD

解決方法:

1、進入head安裝目錄;docker exec -it 名稱 bash

2、打開文件夾_site,cd _site/

3、編輯vendor.js  共有兩處

      ①. 6886行   contentType: "application/x-www-form-urlencoded

           改成

         contentType: "application/json;charset=UTF-8"

      ②. 7574行 var inspectData = s.contentType === "application/x-www-form-urlencoded" &&

        改成

            var inspectData = s.contentType === "application/json;charset=UTF-8" &&


 

在使用docker容器時,有時候裏邊沒有安裝vi,敲vi命令時提示說:vi: command not found,這個時候就需要安裝vi,可是當你敲        apt-get install vi命令時,提示:  

      Reading package lists... Done  

      Building dependency tree         

      Reading state information... Done  

      E: Unable to locate package vi

      這時候需要敲:apt-get update,這個命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,        這樣才能獲取到最新的軟件包。  

 

IK分詞器安裝

  • 獲取壓縮包
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip

   官方地址: https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.4.0

   

  • 拷貝到es容器內

  規範:docker cp [主機目錄] [容器名稱:容器地址] 

docker cp ./elasticsearch-analysis-ik-7.7.0.zip es:/usr/share/elasticsearch/plugins
  • 進入容器
docker exec -it es /bin/bash
  • 解壓文件
cd plugins/
unzip elasticsearch-analysis-ik-7.7.0.zip -d ik-analyzer
rm -rf elasticsearch-analysis-ik-7.7.0.zip
  • 重啓 
docker restart es
  • 使用kibana查看分詞器是否生效:

 KIBANA可視化工具

  • 獲取鏡像
docker pull kibana:7.7.0
  • 啓動容器
docker run --name kibana --link=es  -p 5601:5601 -d kibana:7.7.0
  • 修改容器配置

   

  版本不匹配會報錯:

{"type":"log","@timestamp":"2020-04-10T11:18:44Z","tags":["error","savedobjects-service"],"pid":9,"message":"This version of Kibana (v7.6.2) is incompatible with the following Elasticsearch nodes in your cluster: v6.3.2 @ 172.17.0.11:9200 (172.17.0.11)"}
docker exec -it kibana /bin/bash

cd /usr/share/kibana/config

      vi kibana.yml 使用如下指令修改,修改es的訪問地址,將ip替換爲已部署的IP,內容如下:

      

  • 重啓容器
docker restart kibana
  • 瀏覽器訪問

 

Logstash 傳輸管道安裝

官方介紹:Logstash is an open source data collection engine with real-time pipelining capabilities。簡單來說logstash就是一根具備實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端;與此同時這根管道還可以讓你根據自己的需求在中間加上濾網,Logstash提供裏很多功能強大的濾網以滿足你的各種應用場景。

 

Logstash的事件(logstash將數據流中等每一條數據稱之爲一個event)處理流水線有三個主要角色完成:inputs –> filters –> outputs:

  • inpust:必須,負責產生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
  • filters:可選,負責數據處理與轉換(filters modify them),常用:grok、mutate、drop、clone、geoip
  • outpus:必須,負責數據輸出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd

  其中inputs和outputs支持codecs(coder&decoder)在1.3.0 版之前,logstash 只支持純文本形式輸入,然後以過濾器處理它。但現在,我們可以在輸入 期處理不同類型的數據,所以完整的數據流程應該是:input | decode | filter | encode | output;codec 的引入,使得 logstash 可以更好更方便的與其他有自定義數據格式的運維產品共存,比如:graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用數據格式的其他產品等。

  • 拉取鏡像
docker pull logstash:7.7.0
  • 配置文件

  啓動容器

docker run --name logstash -d -p 5044:5044 -p 9600:9600 logstash:7.7.0

  創建映射目錄 

mkdir -p /data/logstash/config
chmod 755 -R /data/logstash/config

 拷貝配置文件

docker cp logstash:/usr/share/logstash/config /data/logstash/

  修改配置文件-logstash.yml

vi logstash.yml

  修改es的ip爲宿主機的IP

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://宿主機IP:9200" ]

 修改配置文件-logstash.conf

vi logstash.conf

  填寫一下內容

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://宿主機IP:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

修改配置文件-pipelines.yml

path.config 修改爲剛纔創建配置文件的全路徑

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

- pipeline.id: main
  path.config: "/usr/share/logstash/config/logstash.conf"
  • 運行容器
docker run --name logstash -d -p 5044:5044 -p 9600:9600 -v /data/logstash/config:/usr/share/logstash/config --restart=always logstash:7.7.0 
  • 查看容器
docker logs logstash

 

 

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