ELK日志分析系统环境搭建

xiaoxiao2021-02-28  120

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。
转载请注明原文地址: https://www.6miu.com/read-66894.html

最新回复(0)