运行环境:
操作系统: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,我这边是自己通过很多版本的尝试之后找到的比较匹配的版本。