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的位置根據實際情況來定
執行以下語句讓我們的修改立即生效,然後驗證JAVA環境變更是否成功。若成功顯示java版本資訊。
source ~/.bashrc
java -version
注意:以上配置我是用root賬戶配置的,是以隻有root使用者能正确執行java -version。切換使用者後失效;因為.bashrc檔案權限範圍是單個使用者,是以切換elastic使用者再設定一下才可以,這裡不去深究一次設定所有使用者有效的方法。
3.安裝elasticsearch
首先,解壓安裝包
tar -zxf elasticsearch-.tar.gz
cd elasticsearch- ##進入主目錄
./bin/elasticsearch ##啟動服務
現在是以預設配置在啟動,通常情況是能跑起來的。
目前,還沒有對elasticsearch進行任何配置,我發現現在使用本機位址進行通路是失敗的。
下面,來簡單配置以達到能用ip通路,其他機器可以通路到elasticsearch服務。在elasticsearch安裝目錄下有config檔案夾,進入改檔案夾,編輯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--linux-tar.gz
rm kibana--linux-tar.gz #删除安裝包
mv kibana--linux-tar.gz kibana- #重命名主目錄
cd kibana-
./bin/kibana #啟動服務
服務啟動日志,如圖所示:
由于未配置elasticsearch服務位置,Kibana會在本機:http://localhost:9200 去連接配接elasticsearch。但連接配接失敗,是以顯示錯誤日志。
配置elasticsearch服務位置,在kibana安裝目錄下,編輯Kibana.yml檔案。
該檔案預設沒有任何配置,在以下位置添加一行,配置我們elasticsearch服務IP及端口。
儲存退出,再啟動服務,此時啟動日志如下,表示連接配接成功;
在浏覽中輸入: http://localhost:5601/,顯示kibana頁面。
但使用IP通路失敗了,上面的啟動日志中顯示:
再次修改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存儲的資訊。
5.安裝logstash
将Logstash與kibana安裝在一起,将logstash-5.3.1.tar.gz 上傳至/usr/目錄并解壓。
tar -zxf logstash-.tar.gz
rm logstash-.tar.gz #删除安裝包
cd logstash-
./bin/logstash#啟動服務
啟動失敗,因為沒有配置JDK,按上面的方式配置JDK環境後,再啟動,還是失敗了。
看日志是沒有配置logstash.conf。logstash5.3.1的config目錄下預設沒有logstash.conf檔案。需要手動建立,并且在logstash.yml中指定logstash.conf檔案位置。在logstash-5.3.1/config/目錄下建立logstash.conf檔案,該檔案配置logstash的輸入、輸出通道,及過濾器等。
我們的目的是達到,應用輸出的日志,通過logstash服務全部儲存到elasticsearch中。檔案配置内容如下:
文字版:
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是空的,我們隻需要添加一句即可。
在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=
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控制台。
終于看到想要的效果了。
後續工作:
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。