ELK6.5.1 版本 (Logstash+Elasticsearch+Kibana+filebeat)的原理和詳細搭建

前言、 Elastic Stack

  Elastic Stack是ELK的官方稱呼,網址:https://www.elastic.co/cn/products ,其作用是“構建在開源基礎之上, Elastic Stack 讓您能夠安全可靠地獲取任何來源、任何格式的數據,並且能夠實時地對數據進行搜索、分析和可視化。”

它主要包括三個元件:

  • Beats + Logstash:採集任何格式,任何來源的數據。

    Beats: Beats 是輕量型採集器的平臺,從邊緣機器向 Logstash 和 Elasticsearch 發送數據。

    Beats 是數據採集的得力工具。將這些採集器安裝在您的服務器中,它們就會把數據彙總到 Elasticsearch。如果需要更加強大的處理性能,Beats 還能將數據輸送到 Logstash進行轉換和解析。官方提供了多種現成的beats以針對不同協議的數據:

      Filebeat:日誌文件

      Metricbeat:指標

      Packagebeat: 網絡數據

      Winlogbeat: windows時間日誌

      Auditbeat: 審計日誌

      Heartbeat: 心跳日誌

     beat實現可定製化:每款開源採集器都是以用於轉發數據的通用庫 libbeat 爲基石。需要監控某個專用協議?您可以自己構建採集器。我們將爲您提供所需的構建基塊。

     Logstash: Logstash 是動態數據收集管道,擁有可擴展的插件生態系統,能夠與 Elasticsearch 產生強大的協同作用。

      Logstash 是開源的服務器端數據處理管道,能夠同時 從多個來源採集數據、轉換數據,然後將數據發送到您最喜歡的 “存儲庫” 中。(我們的存儲庫當然是Elasticsearch。)

      多種輸入選擇:數據往往以各種各樣的形式,或分散或集中地存在於很多系統中。Logstash 支持各種輸入選擇 ,可以在同一時間從衆多常用來源捕捉事件。能夠以連續的流式傳輸方式,輕鬆地從您的日誌、指標、Web 應用、數據存儲以及各種 AWS 服務採集數據。

      

      輸出:儘管 Elasticsearch 是我們的首選輸出方向,能夠爲我們的搜索和分析帶來無限可能,但它並非唯一選擇。Logstash 提供衆多輸出選擇,您可以將數據發送到您要指定的地方,並且能夠靈活地解鎖衆多下游用例。

      

      過濾器:數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕鬆、更快速地分析和實現商業價值。

      可擴展:Logstash 採用可插拔框架,擁有 200 多個插件。您可以將不同的輸入選擇、過濾器和輸出選擇混合搭配、精心安排,讓它們在管道中和諧地運行。您是從自定義應用程序採集數據?沒有看到所需的插件?Logstash 插件很容易構建。我們有一個極好的插件開發 API 和插件生成器,可幫助您開始和分享您的創作。

  • Elasticsearch 

    Elasticsearch 是一個分佈式的 RESTful 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例。作爲 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。

    可擴展性:原型環境和生產環境可無縫切換;無論 Elasticsearch 是在一個節點上運行,還是在一個包含 300 節點的集羣上運行,您都能夠以相同的方式與 Elasticsearch 進行通信。

    速度:而且由於每個數據都被編入了索引,因此您再也不用因爲某些數據沒有索引而煩心。您可以用快到令人髮指的速度使用和訪問您的所有數據。

  • Kibana

    Kibana 能夠以圖表的形式呈現數據,並且具有可擴展的用戶界面,供您全方位配置和管理 Elastic Stack。

    可視化與探索:Kibana 讓您能夠自由地選擇如何呈現您的數據。或許您一開始並不知道自己想要什麼。不過藉助 Kibana 的交互式可視化,您可以先從一個問題出發,看看能夠從中發現些什麼。

    多配件:Kibana 核心搭載了一批經典功能:柱狀圖、線狀圖、餅圖、環形圖,等等。它們充分利用了 Elasticsearch 的聚合功能。

部署準備

操作系統版本:CentOS6.9 64位(CentOS7及其他Linux系統都沒有問題)
Elasticsearch版本:6.5.1 下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz

Kibana版本:6.5.1  下載地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1-linux-x86_64.tar.gz

filebeat版本:6.5.1 下載地址:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.1-linux-x86_64.tar

logstash版本:6.5.1 下載地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1.tar.gz
這裏默認你已經安裝配置好了JDK1.8,如果沒有的話請自行安裝配置
注意,如無特殊說明以下操作都是在root用戶下操作的(一開始的時候搞大數據,都是用普通用戶+sudo權限操作的,然後發現好多權限問題,後來乾脆全部root用戶)

一、安裝 elasticsearch

第一步:下載Elasticsearch6.5.1

[root@netcloud01 ~]# cd /data
[root@netcloud01 data]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz

第二步:解壓Elasticsearch

[root@netcloud01 data]# tar -zxvf elasticsearch-6.5.1.tar.gz

第三步:創建Elasticsearch用戶和所在組

Elasticsearch默認是不允許root用戶運行的,不管是Elasticsearch5還是Elasticsearch6,否則的話Elasticsearch運行的時候會報錯

1. 先創建es組,並指定組id爲 503(我是搞大數據的,大數據所有用戶及應用全部放在bigdata用戶組內)

[root@netcloud01 data]# groupadd -g 503 bigdata

2. 創建es用戶並指定所在組爲 es

[root@netcloud01 data]# useradd -g es es

查看是否創建成功

[root@netcloud01 data]# id es
uid=500(es) gid=503(es) groups=503(es)

第四步:更改解壓的Elasticsearch應用所屬用戶及組

[root@netcloud01 data]# chown -R es:es elasticsearch-6.5.1
來現在咱看下Elasticsearch的bin目錄:
我們發現有很多.bat文件,這個是Windows下執行的腳本
看着就不爽,果斷刪除

第五步:執行腳本添加可執行權限

[root@netcloud01 bin]# chmod u+x * 

第六步:修改配置文件

 1、修改limits.conf配置文件(修改用戶最大可創建文件數)

vim /etc/security/limits.conf

# End of file
# 添加如下內容

* soft nofile 1026420
* hard nofile 1026420
* soft nproc unlimited
* hard nproc unlimited

2、修改90-nproc.conf

vim /etc/security/limits.d/90-nproc.conf
# 修改成4096或者更大
*          soft    nproc     4096
root       soft    nproc     unlimited

3. 修改sysctl.conf

vim /etc/sysctl.conf

# 尾部添加下面的配置
vm.max_map_count=655360

# 然後執行命令
sysctl -p

4. 修改elasticsearch.yml

# 集羣名稱
cluster.name: BSDSJ

# 當前節點名稱,這裏配置爲主機名
node.name: node-1

# Centos6不支持SecComp,
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

# 默認的只能本機訪問,修改後就可以遠程訪問了
network.host: 172.16.240.16

http.port: 9200
transport.tcp.port: 9500

bootstrap.memory_lock和bootstrap.system_call_filter默認爲true而Centos6不支持SecComp,而Elasticsearch默認bootstrap.system_call_filter爲true進行檢測
會導致失敗
上面的配置都要一個一個配置啊,不然後面你還要根據報錯一個一個改

 

第七步:啓動

從root用戶切換到es用戶,
然後在Elasticsearch根目錄下執行

bin/elasticsearch

看到這個頁面說明已經安裝啓動成功了,
不過還是要測試一下
Linux下輸入curl命令測試一下

 

也可以編寫一個啓動程序文件在後臺啓動: 

[root@netcloud01 bin]# vi startup.sh

#!/bin/
ES_HOME=/data/elasticsearch-6.5.1
nohup $ES_HOME/bin/elasticsearch  -v  >> $ES_HOME/logs/elasticsearch.log 2>&1 &
[root@netcloud01 bin]# chmod u+x startup.sh
[root@netcloud01 bin]# sh startup.sh 

測試:

curl是CentOS自帶的,如果你的系統上沒有的話請自行安裝
這裏是通過主機名加端口號訪問的,
我這裏主機名已經映射了IP地址,所以也可以通過IP地址加端口號訪問
下面通過瀏覽器訪問試試
在瀏覽器輸入地址:http://172.16.240.103:9200/

 

二:安裝Kibana

這個版本的Kibana和elasticsearch包括x-pack 插件 不在像 6.2.2 版本一樣安裝插件

1.獲取kibana安裝包,解壓,進入目錄

[root@netcloud01 data]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-linux-x86_64.tar.gz
[root@netcloud01 data]# tar -xzf kibana-6.5.1-linux-x86_64.tar.gz
[root@netcloud01 data]# cd kibana-6.5.1-linux-x86_64/

2.修改kibana.yml配置文件

添加如下配置項:
server.port: 5601      #端口
server.host: 172.16.240.103    #服務ip
server.name: "knode01"  #服務名稱
elasticsearch.url: "http://172.16.240.103:9200"  #es集羣url

3.啓動驗證

./bin/kibana

注意:這個版本的x-pack插件不在需要安裝了;已經具備了Monitoring、Graph等功能。

驗證:http://172.16.240.103:5601

4、 編寫啓動程序

[root@netcloud01 bin]# vi startup.sh 

#!/bin/
KIBANA_HOME=/data/kibana-6.5.1-linux-x86_64
nohup $KIBANA_HOME/bin/kibana >> $KIBANA_HOME/logs/kibana.log 2>&1 &

授權 chmod u+x startup.sh

 

三、安裝filebeat

 

1、爲什麼要使用filebeat?

談到ELK,說起日誌傳輸,首先想到的就是Logstash,Logstash主要的優點就是它的靈活性,這還主要因爲它有很多插件。豐富的輸入插件可以採集各種樣式、大小和來源的數據。豐富的過濾插件可以實時解析和轉換數據,能夠動態地轉換和解析數據,不受格式或複雜度的影響,Logstash 提供衆多輸出選擇,您可以將數據發送到您要指定的地方,並且能夠靈活地解鎖衆多下游用。

Logstash致命的問題是它的性能以及資源消耗(默認的堆大小是 1GB)。儘管它的性能在近幾年已經有很大提升,與它的替代者們相比還是要慢很多的。如果服務器性能較差,並不推薦爲每個服務器安裝 Logstash ,這樣就需要一個輕量的日誌傳輸工具,將數據從服務器端經由一個或多個 Logstash 中心服務器傳輸到 Elasticsearch。

FileBeat介紹

Filebeat是一個輕量級的日誌傳輸工具,它的存在正彌補了,Logstash的缺點:Filebeat作爲一個輕量級的日誌傳輸工具可以將日誌推送到Logstash 或者緩衝池中。

2、安裝filebeat


[root@netcloud01 ~]# cd /data

[root@netcloud01 ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.1-linux-x86_64.tar

[root@netcloud01 ~]# tar -zxvf filebeat-6.5.1-linux-x86_64.tar
[root@netcloud01 ~]# ll
-rwxr-xr-x 1 root root 11354200 Sep 15  2016 filebeat
-rw-r--r-- 1 root root      814 Sep 15  2016 filebeat.template.json
-rw-r--r-- 1 root root    17335 Aug 13  2018 filebeat.yml
drwxr-xr-x 2 root root     4096 Dec 18 21:43 logs
-rw-r--r-- 1 root root      153 Sep  1  2017 startup.sh

Filebeat的配置很簡單,只需要配置監控的日誌文件的全路徑和輸出端的IP,一般默認(默認配置文件filebeat.yml)是輸出到ElasticSearch,也可以輸出到kafka,在這裏我們輸出到logstash

3、配置 

[root@netcloud01 filebeat-6.5.1-linux-x86_64]# vi filebeat_logstash.yml    

filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /data/test.log
setup.template.settings:
  index.number_of_shards: 3

output.logstash:
  hosts: ["172.16.240.103:5044"]

 

4、啓動:

編寫啓動文件:startup.sh

vi startup.sh

#!/bin/
FILEBEAT_HOME=/data/filebeat-6.5.1-linux-x86_64
nohup $FILEBEAT_HOME/filebeat -c $FILEBEAT_HOME/filebeat_logstash.yml > $FILEBEAT_HOME/logs/filebeat.log 2>&1 &

chmod u+x startup.sh

 sh startup.sh

四、安裝logstash 

1、安裝


[root@netcloud01 ~]# cd /data
[root@netcloud01 ~]# https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1.tar.gz

2、配置

[root@netcloud01 logstash-6.5.1]# vi bigdata-web-log-pipeline.conf

input {
    beats {
        port => "5044"
    }
}

output {
    elasticsearch {
       hosts => [ "172.16.240.103:9200" ]
       index => "bigdata_web"
    } 

}

3、編寫啓動程序

[root@netcloud01 bin]# vi startup.sh

#!/bin/
LOGSTASH_HOME=/data/logstash-6.5.1
nohup $LOGSTASH_HOME/bin/logstash -f $LOGSTASH_HOME/bigdata-web-log-pipeline.conf >> $LOGSTASH_HOME/logs/logstash.log 2>&1 &

授權執行權限:

chmod u+x startup.sh

4、啓動

 [root@netcloud01 bin]# sh startup.sh 

 

五、測試

1、啓動 elasticsearch服務

2、啓動kibana服務

3

3、啓動 logstash服務

 4、啓動filebeat服務

登錄 Kibana 創建logstash指定的索引 bigdata_web

 

 

[root@netcloud01 data]# echo  "This is a test from filebeat to logstash then to elasticsearch" >> test.log        

 

 

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