天天看點

ELK日志分析系統環境搭建

1.準備

出于學習的目的,本次操作在主機64位WIN7+VMware10。

- 虛拟機安裝:ubuntu-14.04.1-desktop-i386.iso

- elasticsearch5.3.1 點選下載下傳

- Kibana5.3.1 點選下載下傳

- Logstash5.3.1

2.安裝ubuntu虛拟機

首先,安裝:vsftpd、vim;

通過FTP将jdk-8u111-linux-i586.tar.gz/elasticsearch/kibana/logstash上傳緻 /usr/目錄下。

ELK日志分析系統環境搭建

1.配置JAVA環境變量:解壓jdk包

ELK日志分析系統環境搭建

執行以下語句,打開環境變更配置檔案,在檔案末尾添加圖檔中的内容,java_home的位置根據實際情況來定

ELK日志分析系統環境搭建

執行以下語句讓我們的修改立即生效,然後驗證JAVA環境變更是否成功。若成功顯示java版本資訊。

source ~/.bashrc
java -version
           
ELK日志分析系統環境搭建

注意:以上配置我是用root賬戶配置的,是以隻有root使用者能正确執行java -version。切換使用者後失效;因為.bashrc檔案權限範圍是單個使用者,是以切換elastic使用者再設定一下才可以,這裡不去深究一次設定所有使用者有效的方法。

3.安裝elasticsearch

首先,解壓安裝包

tar -zxf elasticsearch-.tar.gz
cd elasticsearch- ##進入主目錄
./bin/elasticsearch   ##啟動服務
           

現在是以預設配置在啟動,通常情況是能跑起來的。

ELK日志分析系統環境搭建

目前,還沒有對elasticsearch進行任何配置,我發現現在使用本機位址進行通路是失敗的。

ELK日志分析系統環境搭建

下面,來簡單配置以達到能用ip通路,其他機器可以通路到elasticsearch服務。在elasticsearch安裝目錄下有config檔案夾,進入改檔案夾,編輯elasticsearch.yml。

打開後,檔案是被注釋掉了,是以是一個空檔案,在檔案末尾添加以下内容:

ELK日志分析系統環境搭建

修改以後,再重新開機./bin/elasticsearch,啟動日志如下:

ELK日志分析系統環境搭建

紅色框住的兩行資訊,網上有都解決辦法。為什麼修改了elasticsearch.yml檔案後就啟動不了,而在修改以前啟動的時候也有這兩個錯誤資訊,卻能啟動并且通路到。

該網頁解決了這個問題:http://www.2cto.com/os/201610/559853.html

将解決摘抄過來:

問題一:

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解決辦法:

①指令行修改辦法:

sudo sysctl -w vm.max_map_count=655360

②修改配置檔案:

sudo vim /etc/sysctl.conf

添加:vm.max_map_count=262144

以上兩種任選一種

并用以下指令檢視是否修改成功

sysctl -a | grep “vm.max_map_count”

問題二:

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

解決辦法:

sudo vim /etc/security/limits.conf

加入以下兩行:

* hard nofile 65536

* soft nofile 65536

這兩個地方修改好後,重新開機了一次系統,然後再啟動elasticsearch時就已經沒有這兩個錯誤提示。然後用IP通路就可以了

ELK日志分析系統環境搭建

注意:預設情況下是禁止root使用者啟動elasticsearch的,是以開始的時候還是切換其他賬戶進行操作。如果之前解壓等都是root來做的話,可以需要切換elasticsearch目錄的所有者和通路權限。

4.安裝Kibana

另外再建立一個虛拟機,以運作kibana。系統裝好以後,将kibana-5.3.1.tar.gz上傳至/usr/目錄下面解壓。

tar -zxf kibana--linux-tar.gz
rm kibana--linux-tar.gz #删除安裝包
mv kibana--linux-tar.gz kibana- #重命名主目錄
cd kibana-
./bin/kibana  #啟動服務
           

服務啟動日志,如圖所示:

ELK日志分析系統環境搭建

由于未配置elasticsearch服務位置,Kibana會在本機:http://localhost:9200 去連接配接elasticsearch。但連接配接失敗,是以顯示錯誤日志。

配置elasticsearch服務位置,在kibana安裝目錄下,編輯Kibana.yml檔案。

該檔案預設沒有任何配置,在以下位置添加一行,配置我們elasticsearch服務IP及端口。

ELK日志分析系統環境搭建

儲存退出,再啟動服務,此時啟動日志如下,表示連接配接成功;

ELK日志分析系統環境搭建

在浏覽中輸入: http://localhost:5601/,顯示kibana頁面。

ELK日志分析系統環境搭建

但使用IP通路失敗了,上面的啟動日志中顯示:

ELK日志分析系統環境搭建

再次修改config/kibana.yml,再增加句配置

最終該檔案内有效的語句為:

server.host= "192.168.2.140"

elasticsearch.url= "192.168.2.130:9200"
           

儲存退出後,再啟動Kibana。日志已經顯示監聽:http://192.168.2.140:5601了。

通過Dev Tools可指令查詢elasticsearch存儲的資訊。

ELK日志分析系統環境搭建

5.安裝logstash

将Logstash與kibana安裝在一起,将logstash-5.3.1.tar.gz 上傳至/usr/目錄并解壓。

tar -zxf logstash-.tar.gz 
rm logstash-.tar.gz  #删除安裝包
cd logstash-
./bin/logstash#啟動服務
           
ELK日志分析系統環境搭建

啟動失敗,因為沒有配置JDK,按上面的方式配置JDK環境後,再啟動,還是失敗了。

ELK日志分析系統環境搭建

看日志是沒有配置logstash.conf。logstash5.3.1的config目錄下預設沒有logstash.conf檔案。需要手動建立,并且在logstash.yml中指定logstash.conf檔案位置。在logstash-5.3.1/config/目錄下建立logstash.conf檔案,該檔案配置logstash的輸入、輸出通道,及過濾器等。

我們的目的是達到,應用輸出的日志,通過logstash服務全部儲存到elasticsearch中。檔案配置内容如下:

ELK日志分析系統環境搭建

文字版:

input {
    stdin {}     #這裡定義了一個輸入管道,stdin為标準輸入。在logstash啟動後,可以在控制台直接輸入内容,            輸入内容被讀取到logstash服務。
}

input {
    #定義從log4j将日志寫入Logstash的管道。這裡的配置也将用于應用中的log4j.property檔案。
    log4j {
        mode => "server"
        host => "192.168.2.140"
        port => 
    }
}

filter {
#這裡定義filter,可以通過該配置,隻儲存我們關心的資訊。
}

output {
        elasticsearch {
            hosts => ["192.168.2.130:9200"]
            index => "sim" #這裡index為了友善區分,可設為應用名稱。運作過程中會自動在elasticsearch中建立。
        }
}
           

然後在logstash.yml檔案 指定logstash.conf的位置。預設情況logstash.yml是空的,我們隻需要添加一句即可。

ELK日志分析系統環境搭建

在logstash安裝目錄下啟動

./bin/logstash
           
ELK日志分析系統環境搭建

因為配制了兩個Input,紅色部分提醒,現在可以從鍵盤輸入内容,回車後,輸入文本将儲存到elasticsearch。這裡我輸入了幾個文字,下面登入http://192.168.2.140:5601檢視輸入的内容是否儲存成功。

ELK日志分析系統環境搭建

從控制台輸入的内容,在Kibana中顯示出來了,說明配置成功了。

下面來看下如果把應用程式中通過log4j列印 日志儲存到elasticsearch中。

隻需要我們項目的log4j.properties檔案中添加以下内容:

ELK日志分析系統環境搭建
#記住把socket添加在這句後面,否則日志不會被推到logstash。
log4j.rootLogger=debug, stdout,R,socket
.
.
.

log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=
log4j.appender.socket.RemoteHost=
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=
           

啟動應用程式,查詢kibana控制台。

ELK日志分析系統環境搭建

終于看到想要的效果了。

後續工作:

1、根據關心的内容進行過濾,配置logstash.conf中的filter來進行過濾。

2、elasticsearch叢集;

3、将elasticsearch資料插入與查詢進行java代碼封裝,使以使用elasticsearch強大的搜尋功能

4、利用kibana圖形報表的功能,與elasticsearch強大的搜尋功能,可為我們快速實作大資料分析功能。

檔案夾所有者和權限修改指令:

chown -R elastic elasticsearch-.  ##将elasticsearch5.3.1及其子目錄的所有者更改變elastic; 
chgrp -R elastic elasticsearch-. #将elasticsearch5.3.1及其子目錄的所屬姐修改為elastic;
chmod -R  elasticsearch5. #将elasticsearch5.3.1及其子目錄的通路權限修改為755。