出于学习的目的,本次操作在主机64位WIN7+VMware10。
- 虚拟机安装:ubuntu-14.04.1-desktop-i386.iso
- elasticsearch5.3.1 点击下载
- Kibana5.3.1 点击下载
- Logstash5.3.1
首先,安装: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用户再设置一下才可以,这里不去深究一次设置所有用户有效的方法。
首先,解压安装包
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目录的所有者和访问权限。
另外再创建一个虚拟机,以运行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存储的信息。
将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。