通過docker在Linux系統下搭建ELK


參考文檔:https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-docker.html

1. docker安裝elasticsearch

1.1 docker命令下載elasticsearch image

docker pull registry.docker-cn.com/library/elasticsearch:latest

1.2 從命令行,docker命令啟動elasticsearch

docker run -d --name es-zulan -p 9400:9200 -p 9500:9300 -v /yourpath/ELK/elasticsearch/data:/usr/share/elasticsearch/data -e "discovery.type=single-node" registry.docker-cn.com/library/elasticsearch:latest

1.3 訪問  http://10.50.40.226:9400/ ,出現以下內容則證明elasticsearch啟動成功

10.50.180.226是docker所在的Linux server的IP。

2. docker安裝kibana

2.1 下載kibana image

docker pull docker.elastic.co/kibana/kibana:5.6.14

2.2 docker啟動kibana

docker run -d --name kb-zulan -p 9600:5601 --link es-zulan:registry.docker-cn.com/library/elasticsearch -e ELASTICSEARCH_URL=http://10.50.40.226:9400 docker.elastic.co/kibana/kibana:5.6.14

2.3 修改kibana的config

以交互方式進入已啟動的kibana container:

docker exec -it kb-zulan /bin/sh

修改config文件,如圖注釋掉默認的針對elasticsearch的配置:

vi config/kibana.yml

 

重啟kibana container:

docker restart kb-zulan

2.4 瀏覽器訪問http://10.50.40.226:9600

出現一個登陸頁面,但是無法輸入。

造成這個現象的原因是docker啟動的elasticsearch image沒有x-pack,而用的kibana image中有x-pack。

有兩種解決方法:

(1)將kibana里面的x-pack卸載掉

使用到的docker指令:

docker exec -it kb-zulan /bin/sh

cd bin

./kibana-plugin remove x-pack

Exit

docker restart kb-zulan

(2)在elasticsearch中安裝上x-pack

使用到的docker指令:

docker exec -it es-zulan /bin/bash

cd bin

./elasticsearch-plugin install x-pack

Exit

docker restart es-zulan

x-pack默認有一個30天的試用期,試用到期后,就需要購買license。

Note:重啟kibana或elasticsearch后,需要等待一段時間。

2.5 進入kibana后,首先需要新建一個index pattern。

但是,此時會彈出error提示“Unable to fetch mapping. Do you have indices matching the pattern?”。

這需要安裝logstash,向elasticsearch寫data。

 

3. docker安裝logstash

3.1 docker下載logstash image

docker pull docker.elastic.co/logstash/logstash:5.6.14

3.2 docker啟動logstash

docker run -d --name ls-zulan -p 9700:5044 -p 9800:9600 -v /yourpath/ELK/logstash/eventslogfiles:/usr/share/logstash/eventslogfiles docker.elastic.co/logstash/logstash:5.6.14

log文件放在/yourpath/ELK/logstash/eventslogfiles下。

3.3 瀏覽器訪問http://10.50.40.226:9800 ,出現以下內容說明logstash啟動成功

3.4 修改logstash的config

以交互方式進入logstash container:

docker exec -it ls-zulan /bin/sh

修改config/logstash.yml和pipeline/logstash.conf:

pipeline/logstash.conf的修改如下:

input {
  file{
    path => "/usr/share/logstash/eventslogfiles/*/*/*"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{YEAR:ma_year}-%{WORD:ma_month}-%{WORD:ma_day},%{TIME:ma_time},%{WORD:ma_label} ,\[%{WORD:ma_title}\],%{WORD:ma_event}, ip: %{IP:ma_ip},%{WORD:ma_basePcn},%{WORD:ma_baseSN},%{WORD:ma_psdPcn},%{WORD:ma_psdSN},%{WORD:ma_bpn},\"%{DATA:ma_info}\"" }
    add_field => { "full_time" => "%{ma_year}%{ma_month}%{ma_day} %{ma_time}" }
  }
  date{

    match => ["full_time","yyyyMMdd HH:mm:ss,SSS"]

  }
}

output {
  elasticsearch {
    hosts => ["10.50.40.226:9400"]
    index => "logstash-ls-%{+YYYY-MM-DD}"
    user => elastic
    password=> changeme
  }
stdout { codec => rubydebug }

}

 

docker restart ls-zulan

Note:logstash中index是不能包含大寫字母的,除了Logstash。

 

 4. 瀏覽器訪問kibana http://10.50.40.226:9600

(1) 在kibana中,創建同logstash的index對應的index pattern。

(2)在Linux server上,將log文件復制到logstash掛在的文件夾/yourpath/ELK/logstash/eventslogfiles。logstash會自動將log data寫入elasticsearch。

(3)在kibana中,在Management中刷新Index Patterns的field list,它會parse在pipeline/logstash.conf中配置的字段。

(4)在kibana中,點擊Discover,查看數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM