一直拖拖拉拉,今晚终于把环境搭起来了,简单的说下原理、安装步骤以及需要注意的问题。
一、原理:
上图可见,一共分为5个部分,shipper是我们部署在我们需要采集日志的机器上,broker汇聚这些日志,然后统一传到indexer上,ElasitcSearch是一个搜索引擎,负责存储这些日志,并搜索。Web interface是一个前端展示页面。
shipper和Indexer都是logstash,只不过他们的配置文件不一样。broker一般采用redis,所有的shipper上的日志统一传到redis中。indexer负责从broker中取数据,并将它存储到elasticsearch中。webinterface一般使用kibana,现在es中集成了kibana,但我们还是自己安装它。
二、环境搭建
1、部署规划:
192.168.137.101 logstash-1.4.2(indexer) redis-2.8.13 elasticsearch-1.1.1 kibana-3.1.0
192.168.137.10 logstash-1.4.2(shipper)
2、安装
192.168.137.10只安装logstash,负责收集本地的日志,安装很简单,下载后解压即可。看下配置文件:
vi logstash/shipper.conf
input的file指定从文件中读取日志,文件路径为"var/log/httpd/access.log",output指定输出日志到redis,host指定了redis所在机器的ip。其中key和data_type是必须要配置的,唯一的要求就是,客户端和服务端的相应值是一致的。所以,该配置文件的意思就是,去httpd的登录日志,然后将其传到redis服务器上。
192.168.137.101,logstash的安装就不说了,看下它的配置文件:
input指定从redis中读取日志,output表明它将日志保存到elasticsearch中。
redis只做队列处理,其实就是一个broker的功能。安装比较简单,下载后解压,然后进入解压目录,make make install。不用更加配置即可使用。
elasticsearch负责保存日志文件,安装只需要解压就可以了。默认配置就可以使用。
kibana的安装和上面一样,解压即可。kibana需要安装apache,如果是默认安装的话,将解压后的kibana目录考到/var/www/html文件夹下即可。网上有些帖子说要更改config.js里面elasticsearch对应的url,我改成192.168.137.101:9200,通过它访问,还是访问不了。。。
三、启动
首先在服务器192.168.137.101启动redis、elasticsearch、logstash。
elasticsearch启动:bin目录下 ./elasticsearch
redis启动:redis-server
logstash启动:bin/logstash -f indexer.conf
然后在客户端192.168.137.10启动logstash。
启动apache,然后访问192.168.137.101/kibana
默认访问default.json页面,可以手动改成logstash.json,也可以在app/dashboard中,将logstash.json改成default.json。
PS:碰到的问题
1、进入redis的解压目录后,执行Make,报错/bin/sh: cc: command not found
这是由于没有安装gcc,而redis是由C实现的,解决方法:yum -y install gcc
2、将kibana拷贝到/var/www/html目录下后,访问ip/kibana报错,forriben。
解决办法是关闭防火墙和selinux
selinux关闭方法:cd /usr/share/selinux/ setenforce 0