您的位置:首页 > 数据库 > Redis

新版本logstash+elasticsearch+redis+nginx 日志收集系统搭建

2014-11-21 23:31 786 查看
实习用到的。搭环境就是个体力活,收获也有点吧。记录下过程备用。中间参考了很多文档,写的时候有些内容也直接拷过来了。都给了链接。一、环境ubuntu 12.04java 1.7.071nginx 1.6.2elasticsearch 1.1.1logstash 1.4.2redis 2.8.17二、原理:从这儿看的上图可见,一共分为5个部分,shipper是我们部署在我们需要采集日志的机器上,broker汇聚这些日志,然后统一传到indexer上,ElasitcSearch是一个搜索引擎,负责存储这些日志,并搜索。Webinterface是一个前端展示页面。logstash起到shipper和Indexer的作用,配置文件不一样。broker一般采用redis,所有的shipper上的日志统一传到redis中。indexer负责从broker中取数据,并将它存储到elasticsearch中。webinterface一般使用kibana,现在es中集成了kibana,直接使用。三、安装。java安装:参考。源文件解压到/usr/lib/jvm/java底下,然后环境变量配置在终端执行命令: 
sudo vi /etc/environment
红色部分为添加的信息:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java/jdk1.7.0_71/bin:/usr/lib/jvm/java/jdk1.7.0_71/jre/bin"    JAVAHOME=/usr/lib/jvm/java/jdk1.7.0_71CLASSPATH=/usr/lib/jvm/java/jdk1.7.0_71 /lib:/usr/lib/jvm/java/jdk1.7.0_71/jre/lib接着设置默认的jdk,因为系统默认可能存在别的jdk
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.7.0_04/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.7.0_04/bin/javac 300
选择系统默认的jdk,在终端执行命令: 
sudo update-alternatives --config java
 选择刚安装的这个。nginx安装参照。略安装logstash redis elasticsearch看这篇文章有很多帮助redis:用的是2.8.17
wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar -zxf redis-2.8.17.tar.gz
cd redis-2.8.17
make
sudo make install
可以通过redis源代码里utils/install_server下的脚本简化配置工作
cd utils
sudo ./install_server.sh
install_server.sh在问你几个问题后会把redis安装为开机启动的服务,可以通过下面的命令行来启动/停止服务
sudo /etc/init.d/redis_ start/end
启动redis客户端来验证安装
redis-cli
> keys *
elasticsearch:
cd /search
sudo mkdir elasticsearch
cd elasticsearch
sudo wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.zip sudo unzip elasticsearch-1.1.1.zip
elasticsearch解压即可使用非常方便,接下来我们看一下效果,首先启动ES服务,切换到elasticsearch目录,运行bin下的elasticsearch
cd /search/elasticsearch/elasticsearch-1.1.1bin/elasticsearch
访问默认的9200端口
curl -X GET http://localhost:9200[/code] 我的输出:{  "status" : 200,  "name" : "Mr. Wu",  "version" : {    "number" : "1.1.1",    "build_hash" : "f1585f096d3f3985e73456debdc1a0745f512bbc",    "build_timestamp" : "2014-04-16T14:27:12Z",    "build_snapshot" : false,    "lucene_version" : "4.7"  },  "tagline" : "You Know, for Search"}logstash:logstash官网下载1.4.2版本的压缩包。过程可以参考logstash官方指南
cd /searchsudo mkdir logstashcd logstash
把压缩包拷进去。解压即可用。
sudo unzip logstash-1.4.2.zipcd logstash-1.4.2bin/logstash 参数命令行参数可以参考logstashflags,主要有
[/code]agent -f 配置文件 #运行客户端,指定配置文件。web #启动web服务安装过程结束。下面开始配置。参考这里配置nginx日志文件格式,在nginx.conf里设置
log_format  main  '$remote_addr - $remote_user [$time_local] '  '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ';
设置shipper的logstash的配置文件。新建配置文件,名称为shipper.conf内容:
input {   file {       type => "nginx-access"       path => "/usr/local/nginx/logs/access.log"   }}output {    stdout {    }    redis {        host => "127.0.0.1"        port => 6379        data_type => "list"        key => "logstash"    }}path对应的是nginx日志的路径。output中stdout在原文的内容是“debug=>truedebug_format =>json”在我机器上会提示错误,因此都删除掉。造成的后果是采集的每条日志内容都会在控制台输出。因为shipper和index都是在一台机器。所以redis也是在localhost上。6379是redis的默认端口。设置index的logstash的配置文件。新建配置文件,名称为index.conf内容为:
input {  redis {    host => "127.0.0.1"    port => "6379"    data_type => "list"    key => "logstash"    type => "redis-input"  }}filter {   grok {       type => "nginx-access"       pattern => "%{IPORHOST:source_ip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] %{QS:request} %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}"   }}output {  elasticsearch {    host => "127.0.0.1"  }}在filter中pattern是与nginx的日志格式一致的。然后就可以启动他们了。redis安装后默认开机启动。elasticsearch启动方式如上文所示。启动作为shipper的logstash:
/search/logstash/logstash-1.4.2/bin/logstash agent -f/search/logstash/logstash-1.4.2/shipper.conf &启动作为index的logstash:
/search/logstash/logstash-1.4.2/bin/logstash agent -f/search/logstash/logstash-1.4.2/index.conf &
启动logstash的web界面:
/search/logstash/logstash-1.4.2/bin/logstash web &
web页面默认的端口是9292:
http://127.0.0.1:9292
点底下蓝色的logstash Dashboard。用webbench测试了下nginx,在logstash中已经接收到了数据:搭建已经完成了。因为是本机,所以都是用的127.0.0.1,实际的话要根据自己的地址设置。相关资料发现有人总结的不错,看看资料,有心得再来写了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  elasticsearch nginx redis