一:说明
1、关于机器环境:
(1)这几台机器都是虚拟机,它们的联网方式都是NAT。
(2)这几台机器机器均已安装了java1.8,
(3)slave1和slave2已经修改过/etc/sysconfig/network文件中的主机名和/etc/hosts文件中的主机与IP地址映射的。
(4) 已经可以ssh无密访问。关于如何设置ssh无密访问,可以参看我的另一篇文章:http://blog.csdn.net/u011654631/article/details/68944088
2、整体架构说明:
(1)日志收集服务器:共两台 安装filebeat进行日志的采集
IP:192.168.137.5 hostname:ubuntu 系统:ubuntu 14.04
IP:192.168.137.2 hostname : master 系统:CentOS6.5
(2)日志存储展示服务器:共两台 安装logstash、ES、kibana
IP:192.168.137.3 hostname : slave1 系统:CentOS6.5
IP:192.168.137.4 hostname : slave2 系统:CentOS6.5
3、安装软件的版本
filebeat-5.0.1 + logstash-2.4.1 + elasticsearch-1.7.1 + kibana-4.0.0
4、下载安装目录
都下载安装在/home/yxm/ELKstack目录下
二:安装步骤
1、在日志收集服务器上安装filebeat。
(1)首先在官网下载,分别下载安装到两台机器上
https://www.elastic.co/downloads/past-releases/filebeat-5-0-1
我这里下载的是LINUX 64-BIT。
(2)进行解压缩
解压缩到该目录:
tar -xzvf filebeat-5.0.1-linux-x86_64.tar.gz
因为名字太长,所以修改文件夹名字:
mv filebeat-5.0.1-linux-x86_64 filebeat-5.0.1
2、日志存储展示服务器安装logstash
(1)在官网下载,分别下载安装到两台机器上。
https://www.elastic.co/downloads/past-releases/logstash-2-4-1
我这里下载的是zip类型的。
(2)解压缩
unzip logstash-2.4.1.zip
(3)测试logstash是否安装成功。
进入logstash目录下,输入命令:
./bin/logstash -e 'input { stdin { } } output { stdout {} }'
有如下截图类似的结果则说明安装正确。
3、日志存储展示服务器安装ES
(1)在官网下载,分别下载安装到两台机器上。
https://www.elastic.co/downloads/past-releases/elasticsearch-1-7-1
我这里下载的是zip类型的。
(2)解压缩
unzip elasticsearch-1.7.1.zip
(3)安装 elasticsearch-head插件
./bin/plugin install mobz/elasticsearch-head
如下图所示则安装成功:
说明:elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由HTML5编写的独立网页程序,你可以通过插件把它集成到es,在地址栏输入es服务器的ip地址和端口点connect就可以连接到集群,可以es集群的基本信息。
(3)修改config/elasticsearch.yml文件
进入 elasticsearch-1.7.1目录,修改config/elasticsearch.yml文件,具体配置为:
cluster.name: es_cluster
node.name: slave1
path.data: /home/yxm/ELKstack/elasticsearch-1.7.1/data
path.log: /home/yxm/ELKstack/elasticsearch-1.7.1/logs
network.host: 192.168.137.4
http.port:9700
http.cors.enabled: true
http.cors.allow-origin: "*"
说明:两台主机的node.name不同,network.host不同,分别为各自的主机名和ip地址。
(4)运行测试是否成功
bin/elasticsearch //两台机器上都运行
通过刚才安装的集群插件查看集群的状态,在137.3的主机中的浏览器中输入网址:http://192.168.137.3:9700/_plugin/head/
得到截图:
发现不太正确,因为集群中有两个节点,但是集群状态显示只有一个,而且从192.168.137.3上访问192.168.137.4的节点发现访问不了。
猜测应该是防火墙的问题,关闭防火墙重新尝试,尝试成功(友情提示:关闭防火墙需要以root权限才可以,我之前在非root权限下输入命令: service iptables stop,没有提示防火墙关闭,但是我以为已经关闭防火墙,但是还是无法访问成功,去其他地方找原因折腾了好久,最后发现还是防火墙的问题,此外这条命令是临时关闭防火墙,重启之后会失效,因为之后我会为防火墙配置策略,所以在此作为测试只是临时关闭,现在可以看到正确的集群状态了)
4、安装kibana4.0.0
(1)去官网下载https://www.elastic.co/downloads/past-releases/kibana-4-0-0
(2)解压缩并重命名为kibana-4.0.0
(3)修改配置文件config/kibana.yml
server.port: 5601
server.host: "192.168.137.3"
elasticsearch.url: “http://192.168.137.3:9700”
kibana.index: ".kibana"
(4)启动
进入kibana-4.0.0目录,输入命令:
./bin/kibana
进入浏览器中输入网址:192.168.137.3:5601
得到如下截图:
配置测试
利用filebeat分别在ubuntu上监听“/var/log/dpkg.log”,master上监听“/var/log/yum.log”,然后分别使用apt-get和yum的方式安装成功一个软件后会产生日志,产生的日志被filebeat传输到logstash,最后再保存到es上。
(1)运行es
bin/elasticsearch
(2)配置并运行logstash
配置:进入logstash-2.4.1目录下,创建一个sample.conf文件
input{
beats{
port => 5044
}
}
output{
#stdout { codes => rubydebug }
elasticsearch {
hosts =>["192.168.137.2:9700","192.168.137.3:9700"]
index => "logstash-logs"
}
运行该.conf文件
bin/logstash -f logstash.conf
(3)配置并运行filebeat
ubuntu上的配置:
filebeat.prospectors:
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/dpgk.log
output.logstash:
# The Logstash hosts
hosts: ["192.168.137.3:5044","192.168.137.4:5044"]
worker: 2
loadbalance: true
centos上的配置:
filebeat.prospectors:
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/yum.log
output.logstash:
# The Logstash hosts
hosts: ["192.168.137.3:5044","192.168.137.4:5044"]
worker: 2
loadbalance: true
运行:
sudo ./filebeat -e -c filebeat.yml
进行软件的安装,比如安装php
分别运行以下两个命令:
sudo apt-get install php
sudo yum install -y php
(4)查看是否传输成功
在浏览器中输入: http://192.168.137.3:9700/_plugin/head/
点击数据浏览,可以看到有信息。
(5)运行kibana
./bin/kibana
在浏览器中输入192.168.137.3:5601
点击setting,设置自己的index pattern,按说里面有默认的“logstash-*”应该可以匹配我在logstash中建立的索引“logstash-logs”,但是不知道为什么显示不出来es中的内容,后来建立了一个“logstash-logs”的索引,kibana中显示出了内容。
具体的生成一些图表等操作可以在Visualize中进行,暂时还没有深入学习了解。
关于设置SSL、配置防火墙策略等会在下几篇博客中继续写。