運作環境:
作業系統:CentOS 7.0 64位
JDK:1.8
logstash:1.5.4
elasticsearch:1.7.1
kibana:4.1.4
目的:
通過ELKStack管理Java日志
Java測試類如下:
(該類隻用了log4j的jar包)
package org.logstash;
import org.apache.log4j.Logger;
public class HelloExample
{
final static Logger logger=Logger.getLogger(HelloExample.class);
public static void main(String[] args)
{
HelloExample obj=new HelloExample();
try{
obj.divide();
}catch(Exception ex){
logger.error("報錯了,報錯了。。");
System.out.println("System:"+"報錯了,報錯了。。");
}
}
private void divide(){
int i=10/0;
}
}
log4j.properties配置檔案如下:
log4j.rootLogger=DEBUG,logstash
#####SocketAppender######
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.Port=4560
log4j.appender.logstash.RemoteHost=127.0.0.1
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true
該類最後打包成了一個可執行jar包LogstashExample.jar
ELKStack部署步驟:
1、安裝JDK1.8,這個步驟省略
2、建立一個檔案夾專門存放ELK套件,我這裡是在根目錄建立了一個名為ELKStack的檔案夾,将安裝包全部拷貝到該檔案夾下,這個步驟非必須,看個人。
3、部署logstash
tar -xzvf logstash-1.5.4.tar.gz #解壓logstash
cd /ELKStack/logstash-1.5.4/bin
./logstash -e '' #執行logstash,測試logstash是否正常
直接在控制台任意輸入,如:Hello World,logstash輸出如下,表示logstash可以正常運作:
{
"message" => "Hello World",
"@version" => "1",
"@timestamp" => "2017-02-13T06:33:36.486Z",
"type" => "stdin",
"host" => "localhost.localdomain"
}
(Ctrl+C可以關閉logstash程序)
4、修改logstash執行配置檔案
vi logstash_to_elasticsearch.conf #建立并編輯logstash_to_elasticsearch.conf檔案,該檔案在/ELKStack目錄下
logstash_to_elasticsearch.conf内容如下:
input{
log4j{
type=>"log4j-json"
port=>4560
}
}
output{
stdout{
codec=>rubydebug
}
elasticsearch{
host=>localhost #這個位置如果是在同一個計算機上一定要用localhost,且不需要引号,用IP會出錯
}
}
5、部署elasticsearch
tar -xzvf elasticsearch-1.7.1.tar.gz #解壓
cd /ELKStack/elasticsearch-1.7.1/bin
./elasticsearch #執行elasticsearch
cd /ELKStack/logstash-1.5.4/bin
./logstash -f ../../logstash_to_elasticsearch.conf #執行logstash,通過該方式執行logstash,可以加載配置檔案中的參數,使得logstash可以将日志輸出到elasticsearch
6、部署kibana
tar -xzvf kibana-4.1.4-linux-x64.tar.gz #解壓
cd /ELKStack/kibana-4.1.4-linux-x64/bin
./kibana #執行kibana,kibana天然就與elasticsearch相連,在elasticsearch處于運作情況下可以直接搜尋elasticsearch的端口号,與elasticsearch進行連接配接,是以不需要修改任何配置就可以運作,隻需注意elasticsearch和kibana的版本
7、運作測試類jar
java -cp LogstashExample.jar org.logstash.HelloExample
浏覽器中輸入kibana的位址:http://192.168.213.129:5601/ #IP根據個人電腦會有不同,但是端口号肯定是5601
這時我們就可以在kibana中看到輸出的錯誤日志
遇到的問題:
ELKStack是很強大的日志分析系統,但是不同三個套件必須版本比對,不然将無法使用ELK,我這邊是自己通過很多版本的嘗試之後找到的比較比對的版本。
在編寫logstash的配置檔案的時候也需要注意,我也不知道為啥用IP就不行,可能是沒有hosts的支援吧,畢竟是單機安裝,建議還是使用localhost。
遇到的問題:
ELKStack是很強大的日志分析系統,但是不同三個套件必須版本比對,不然将無法使用ELK,我這邊是自己通過很多版本的嘗試之後找到的比較比對的版本。