ELK日誌管理系統詳細安裝和配置

ELK組成

ELKElasticSearchLogstashKiabana三個開源工具組成。官方網站:https://www.elastic.co/cn/products/html

Elasticsearch 是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。linux

Logstash       是一個徹底開源的工具,他能夠對你的日誌進行收集、過濾,並將其存儲供之後使用(如,搜索)。git

Kibana          是一個開源和免費的工具,它Kibana能夠爲Logstash ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。github

 

1. 四大組件

Logstash: logstash server端用來蒐集日誌;
Elasticsearch: 存儲各種日誌;
Kibana: web化接口用做查尋和可視化日誌;
Logstash Forwarder: logstash client端用來經過lumberjack 網絡協議發送日誌到logstash server;web

2. Elasticsearch 簡介和安裝(ELK的三個組建版本必須保持一致)

 2.1  ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。shell

2.2  ELK官網下載Elasticsearchvim

https://www.elastic.co/downloads/elasticsearch
下載elasticsearch-6.1.0.tar.gztar包後,瀏覽器

使用 tar -xvf elasticsearch-5.2.1.tar 命令解壓,使用cd命令進入文件夾目錄ruby

啓動的時候必定要注意,由於es不能夠進行root帳戶啓動,因此你還須要開啓一個elsearch帳戶。服務器

groupadd elsearch                   #新建elsearch

useradd elsearch -g elsearch -p elasticsearch  #新建一個elsearch用戶

chown -R elsearch:elsearch  ./elasticsearch    #指定elasticsearch所屬elsearch

 接下來咱們默認啓動就行了,什麼也不用配置,而後在日誌中大概能夠看到開啓了92009300端口。

進入bin目錄,使用./elasticsearch 命令啓動elasticsearch若是沒有出現報錯信息的話!這個時候,已經成功啓動了!

3. Logstash 安裝

Logstash官方文檔地址:

https://www.elastic.co/guide/en/logstash/current/index.html

* Logstash 的下載和安裝*

3.1 下載對應的版本:

https://www.elastic.co/downloads/past-releases/logstash-6-4-3 

解壓:

使用tar -xvf logstash-5.1.1.tar.gz 命令解壓文件,解壓後使用cd命令進入文件夾內部:

主要文件夾包含bin、data、lib、config等。其中bin包含了一寫可執行腳本文件,data是用於存儲數據的,lib是一些系統所依賴的jar文件,config包含一些配置文件。

解壓完以後,咱們到config目錄中新建一個logstash.conf配置。

[root@slave1 config]# ls

jvm.options  log4j2.properties  logstash.conf  logstash.yml  startup.options

[root@slave1 config]# pwd/usr/myapp/logstash/config

[root@slave1 config]# vim logstash.conf

     而後作好input filteroutput三大塊, 其中input是吸收logs文件下的全部log後綴的日誌文件,filter是一個過濾函數,這裏不用配置,output配置了導入到

hosts127.0.0.1:9200elasticsearch中,天天一個索引。

 

input {
     file {
        type => "log"
        path => "/logs/*.log"
        start_position => "beginning"
    }
}

output {
  stdout {
   codec => rubydebug { }
  }
  elasticsearch {
    hosts => "127.0.0.1"
    index => "log-%{+YYYY.MM.dd}"
  }
}

 

 

 

配置完了以後,咱們就能夠到bin目錄下啓動logstash了,配置文件設置爲conf/logstash.conf,從下圖中能夠看到,當前開啓的是9600端口。

3.2 測試Logstash安裝,運行最基本的Logstash管道:

cd logstash-5.1.1

bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e 參數表示執行後邊的語句,標誌使您可以直接從命令行指定配置。在命令行中指定配置容許您快速測試配置,而無需在迭代之間編輯文件。示例中的管道從標準輸入stdin獲取輸入,並以結構化格式將輸入移動到標準輸出stdout。

3.3 等待片刻等提示信息以後,就能夠在控制檯輸入任何內容,他都會輸出:

 

至此,一個Logstash的安裝與使用完成!

而後在終端上運行:

bin/logstash -f logstash.conf

-f 表示指定使用哪個配置文件進行執行。

* 3、Logstash基本原理*

Logstash管道有兩個必需的元素,輸入和輸出,以及一個可選元素,過濾器。輸入插件從源消耗數據,過濾器插件根據您指定的內容修改數據,輸出插件將數據寫入目標。以下圖:

 

 

Logstash事件處理管道有三個階段:輸入→過濾器→輸出。輸入生成事件,過濾器修改它們,並將輸出發送到其餘地方。輸入和輸出支持編解碼器,使您可以在數據進入或退出流水線時對其進行編碼或解碼,而無需使用單獨的過濾器。也就是說,其實Logstash是一個input–decode –filter–encode–output的數據流!

根據上圖能夠看到須要將Logstash和Elasticsearch進行關聯,這樣的話才能夠將數據輸入到Elasticsearch進行處理。

(1)修改上一篇文章中本身定義的配置文件 logstash.conf,修改成以下內容:

 

input {
    beats {
        port => "5044"
    }
}
 filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

 而後output輸出爲elasticsearch,退出保存!
(2)啓動Filebeat
./filebeat -e -c filebeat.yml -d "publish"3)啓動Logstash
 bin/logstash -f logstash.conf

 

 

4. Kibana  安裝和配置

4.1 簡介

Kibana是一個開源的分析和可視化平臺,旨在與Elasticsearch一塊兒工做。您使用Kibana搜索,查看和與存儲在Elasticsearch索引中的數據進行交互。您能夠輕鬆地在各類圖表,表格和地圖中執行高級數據分析和可視化數據。

4.2 下載-安裝

下載

https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-linux-x86_64.tar.gz

使用tar -xvf kibana-5.2.1-linux-x86_64.tar.gz命令進行解壓,進入目錄

配置Kibana

Kibana的配置文件是在config/kibana.yml

修改配置文件: vi /config/kibana.yml (添加以下配置)

#配置本機ip

server.host: "http://localhost:9200"

#配置es集羣url

elasticsearch.url: "http://192.168.177.132:9200"

啓動:

>bin/kibana & //&後臺啓動

[root@slave1 kibana]# cd bin
[root@slave1 bin]# ls
kibana  kibana-plugin  nohup.out
[root@slave1 bin]# ./kibana

  log   [01:23:27.650] [info][status][plugin:kibana@5.2.0] Status changed from uninitialized to green - Ready
  log   [01:23:27.748] [info][status][plugin:elasticsearch@5.2.0] Status changed from uninitialized to yellow - Waiting for Elasticsearch
  log   [01:23:27.786] [info][status][plugin:console@5.2.0] Status changed from uninitialized to green - Ready
  log   [01:23:27.794] [warning] You're running Kibana 5.2.0 with some different versions of Elasticsearch. Update Kibana or Elasticsearch to the same version to prevent compatibility issues: v5.6.4 @ 192.168.23.151:9200 (192.168.23.151)
  log   [01:23:27.811] [info][status][plugin:elasticsearch@5.2.0] Status changed from yellow to green - Kibana index ready
  log   [01:23:28.250] [info][status][plugin:timelion@5.2.0] Status changed from uninitialized to green - Ready
  log   [01:23:28.255] [info][listening] Server running at http://0.0.0.0:5601
  log   [01:23:28.259] [info][status][ui settings] Status changed from uninitialized to green - Ready

訪問:http://192.168.177.132:5601/

瀏覽器中輸入:http://192.168.23.151:5601/ 你就能夠打開kibana頁面了,,默認讓我指定一個查看的Index

 

 

 接下來咱們在本機的/logs文件夾下建立一個簡單的1.log文件,內容爲「hello world」,而後在kibana上將logstash-*  改爲 log* Create按鈕就會自動出來。

[root@slave1 logs]# echo 'hello world' > 1.log

 

 

進入以後,點擊Discover,你就能夠找到你輸入的內容啦~~~~ 是否是很帥氣。。。

 

若是你裝了head安裝包,你還能夠看到它確實帶了日期模式的Index索引,還自帶5個默認分片數。

 

5.Elasticsearch的擴展

  根據業務需求,可添加中文分詞器,查閱相關文檔官方建議安裝ik分詞器,目前效果最匹配

5.1 ik分詞器的安裝

github上直接下載直接編譯好的zip文件。
 https://github.com/medcl/elasticsearch-analysis-ik/releases
選擇和已經下載的elasticsearch版本兼容的ik

②下載好了以後解壓,將解壓後的文件夾放在elasticsearch目錄下的plugins目錄下,並重命名爲analysis-ik

上傳至以前安裝的/home/learn/elasticsearch/plugins下,並進行解壓與重命名,重命名爲iK
unzip elasticsearch-analysis-ik-6.4.3.zip -d ik-analyzer

ES的配置文件config/elasticsearch.yml中增長ik的配置,在最後增長:

⑤重啓elasticsearch,進入elasticsearch/bin,執行./elasticsearch

5.2 ik分詞器的使用

Ik帶有兩個分詞器:

ik_max_word :會將文本作最細粒度的拆分;儘量多的拆分出詞語

ik_smart:會作最粗粒度的拆分;已被分出的詞語將不會再次被其它詞語佔有
看下邊的例子就會明白他們的區別了:

通常在索引時採用細粒度,搜索時採用粗粒度

ik_smart正確請求方式以下(直接複製粘貼到xshell,回車便可):

 

返回結果:

 

ik_max_word正確請求方式以下:

 

返回結果:

 

自定義詞庫:

plugins下的ik下的config中,有一個IKAnalyzer.cfg.xml,文件內容以下:

 

指定自定義的擴展字典,而後建立該xxx.dic文件,把自定義的專用不想被拆分的詞語添加進去,編碼爲utf-8,重啓後生效。

相關文章
相關標籤/搜索