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/目錄下。
這裏寫圖片描述

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

這裏寫圖片描述

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

 vim ~/.bashrc

這裏寫圖片描述

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

source ~/.bashrc
java -version

這裏寫圖片描述

注意:以上配置我是用root賬戶配置的,所以只有root用戶能正確執行java -version。切換用戶後失效;因爲.bashrc文件權限範圍是單個用戶,所以切換elastic用戶再設置一下才可以,這裏不去深究一次設置所有用戶有效的方法。

3.安裝elasticsearch

首先,解壓安裝包

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

現在是以默認配置在啓動,通常情況是能跑起來的。

curl http://localhost:9200

這裏寫圖片描述

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

curl http://192.168.2.130:9200

這裏寫圖片描述

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

vim elasticsearch.yml

打開後,文件是被註釋掉了,所以是一個空文件,在文件末尾添加以下內容:

這裏寫代碼片

修改以後,再重啓./bin/elasticsearch,啓動日誌如下:

這裏寫圖片描述

紅色框住的兩行信息,網上有都解決辦法。爲什麼修改了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訪問就可以了

這裏寫圖片描述

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

4.安裝Kibana

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

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

服務啓動日誌,如圖所示:

這裏寫圖片描述

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

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

vim config/kibana.yml 

該文件默認沒有任何配置,在以下位置添加一行,配置我們elasticsearch服務IP及端口。

這裏寫圖片描述

保存退出,再啓動服務,此時啓動日誌如下,表示連接成功;

這裏寫圖片描述

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

這裏寫圖片描述

但使用IP訪問失敗了,上面的啓動日誌中顯示:
這裏寫圖片描述

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

server.host= "192.168.2.140"

最終該文件內有效的語句爲:

server.host= "192.168.2.140"

elasticsearch.url= "192.168.2.130:9200"

保存退出後,再啓動Kibana。日誌已經顯示監聽:http://192.168.2.140:5601了。
通過Dev Tools可命令查詢elasticsearch存儲的信息。
這裏寫圖片描述

5.安裝logstash

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

tar -zxf logstash-5.3.1.tar.gz 
rm logstash-5.3.1.tar.gz  #刪除安裝包
cd logstash-5.3.1
./bin/logstash#啓動服務

這裏寫圖片描述

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

這裏寫圖片描述

看日誌是沒有配置logstash.conf。logstash5.3.1的config目錄下默認沒有logstash.conf文件。需要手動創建,並且在logstash.yml中指定logstash.conf文件位置。在logstash-5.3.1/config/目錄下創建logstash.conf文件,該文件配置logstash的輸入、輸出通道,及過濾器等。

vim logstash.conf 

我們的目的是達到,應用輸出的日誌,通過logstash服務全部保存到elasticsearch中。文件配置內容如下:

這裏寫圖片描述

文字版:

input {
    stdin {}     #這裏定義了一個輸入管道,stdin爲標準輸入。在logstash啓動後,可以在控制檯直接輸入內容,            輸入內容被讀取到logstash服務。
}

input {
    #定義從log4j將日誌寫入Logstash的管道。這裏的配置也將用於應用中的log4j.property文件。
    log4j {
        mode => "server"
        host => "192.168.2.140"
        port => 4567
    }
}

filter {
#這裏定義filter,可以通過該配置,只保存我們關心的信息。
}

output {
        elasticsearch {
            hosts => ["192.168.2.130:9200"]
            index => "sim" #這裏index爲了方便區分,可設爲應用名稱。運行過程中會自動在elasticsearch中創建。
        }
}

然後在logstash.yml文件 指定logstash.conf的位置。默認情況logstash.yml是空的,我們只需要添加一句即可。
這裏寫圖片描述

path.config: /sur/logstash-5.3.1/config/logstash.conf

在logstash安裝目錄下啓動

./bin/logstash

這裏寫圖片描述
因爲配製了兩個Input,紅色部分提醒,現在可以從鍵盤輸入內容,回車後,輸入文本將保存到elasticsearch。這裏我輸入了幾個文字,下面登錄http://192.168.2.140:5601查看輸入的內容是否保存成功。
這裏寫圖片描述
從控制檯輸入的內容,在Kibana中顯示出來了,說明配置成功了。

下面來看下如果把應用程序中通過log4j打印 日誌保存到elasticsearch中。
只需要我們項目的log4j.properties文件中添加以下內容:

這裏寫圖片描述

#記住把socket添加在這句後面,否則日誌不會被推到logstash。
log4j.rootLogger=debug, stdout,R,socket
.
.
.

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

啓動應用程序,查詢kibana控制檯。

這裏寫圖片描述

終於看到想要的效果了。

後續工作:
1、根據關心的內容進行過濾,配置logstash.conf中的filter來進行過濾。
2、elasticsearch集羣;
3、將elasticsearch數據插入與查詢進行java代碼封裝,使以使用elasticsearch強大的搜索功能
4、利用kibana圖形報表的功能,與elasticsearch強大的搜索功能,可爲我們快速實現大數據分析功能。

文件夾所有者和權限修改命令:

chown -R elastic elasticsearch-5.3.1  ##將elasticsearch5.3.1及其子目錄的所有者更改變elastic; 
chgrp -R elastic elasticsearch-5.3.1 #將elasticsearch5.3.1及其子目錄的所屬姐修改爲elastic;
chmod -R 755 elasticsearch5.3.1 #將elasticsearch5.3.1及其子目錄的訪問權限修改爲755。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章