线上需求:
处理nginx的访问access日志和商城的搜索历史记录。(由于访问量不大、没有用到redis或者其他消息队列)。
之前做的一个版本使用solrcloud做电商搜索引擎、elasticsearch做实时日志系统。
参考文档资料:
http://elasticsearch.cn/ medcl的中文社区
相对于solr:
一:ES 对实时索引的情况下,es的效率远远高于solr的效率。当实时建立索引时solr会产生IO 堵塞
二: 随着数据量的增长。ES 的效率高于solr
三: ES 用动态mapping来取代 solr的 schema.xml,更加容易提供动态结构化
基于此。用es来更加适合处理大数据实时性处理。
当然 solr对于ES来讲:
solr有着一个庞大的用户群,成熟稳定。
Solr 是传统搜索应用的有力解决方案,特别是电商等传统搜索领域 (lucene的VSM算法,加上Solr的edismax的 bf函
数)。但 Elasticsearch 更适用于新兴的实时大数据搜索应用。
解压后得到如图。
bin/elasticsearch -d
先配置nginx的日志输出格式log_format 为json的输出格式。如果kibana有大的访问业务需求。 把kibana也配置到nginx中去
log_format json '{"@timestamp":"$time_iso8601",' '"host":"$server_addr",' '"clientip":"$remote_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_time,' '"upstreamtime":"$upstream_response_time",' '"upstreamhost":"$upstream_addr",' '"http_host":"$host",' '"url":"$uri",' '"xff":"$http_x_forwarded_for",' '"referer":"$http_referer",' '"agent":"$http_user_agent",' '"status":"$status"}';
logstash作用
-结构化日志内容
-标准化日志时间
解压logstash
unzip logstash-2.1.1.zip
input{ file{ type=>"nginx_access" path=>["/home/work/log/nginx/*.access.log"] exclude=>"*.gz" codec => json } } filter { mutate { split => [ "upstreamtime", "," ] } mutate { convert => [ "upstreamtime", "float" ] } } output{ elasticsearch{ hosts=>[ "host1:9200", "host2:9200", "host3:9200", "host4:9200" ] index=>"access-%{+YYYY.MM.dd}" } }
input 的type对应elasticsearch的type
output 的type对应elasticsearch的index 名称
先执行测试一下logstash读取的配置文件语法是否正常解析,如果看到configuraion ok 说明正常解析
bin/logstash -t -f conf/logstash_nginx.conf
bin/logstash -l ~/log/logstash/logstash.log
nohup bin/logstash -l ~/log/logstash/logstash.log -f conf/*.conf &
在启动客户端中 用jobs 命令可以查看后台进程。或者采用查看
ps -ef |grep logstash
tar -zxvf kibana-4.3.1-linux-x64.tar.gz
vi config/kibana.yml
nohup bin/kibana &就可以在 访问其界面了