当前位置: 首页>后端>正文

日志 redis 线程 redis的日志

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

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

一、环境

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

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

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

安装过程结束。下面开始配置

配置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


日志 redis 线程 redis的日志,日志 redis 线程 redis的日志_日志 redis 线程,第1张

点底下蓝色的logstash Dashboard。

用webbench测试了下nginx,在logstash中已经接收到了数据:


日志 redis 线程 redis的日志,日志 redis 线程 redis的日志_elasticsearch_02,第2张

搭建已经完成了。

因为是本机,所以都是用的127.0.0.1,实际的话要根据自己的地址设置。

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


https://www.xamrdz.com/backend/3jb1963565.html

相关文章: