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

实习用到的。搭环境就是个体力活,收获也有点吧。记录下过程备用。

中间参考了很多文档,写的时候有些内容也直接拷过来了。都给了链接。

一、环境

ubuntu 12.04

java 1.7.071

nginx 1.6.2

elasticsearch 1.1.1

logstash 1.4.2

redis 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_71

CLASSPATH=/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.1 
bin/elasticsearch

访问默认的9200端口

curl -X GET http://localhost:9200
我的输出:

{
  "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 /search
sudo mkdir logstash
cd logstash

把压缩包拷进去。解压即可用。

sudo unzip logstash-1.4.2.zip

cd logstash-1.4.2

bin/logstash 参数

命令行参数可以参考logstash flags,主要有

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=>true debug_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,实际的话要根据自己的地址设置。

相关资料发现有人总结的不错看看资料,有心得再来写了。

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页