天天看点

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。