ELK日志分析系统环境搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ldz_wolf/article/details/71305497

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。

猜你喜欢

转载自blog.csdn.net/ldz_wolf/article/details/71305497