原文连接:http://www.open-open.com/lib/view/open1448799635720.htmlhtml
世界上的软件80%是运行在内网的,为了使得运行在客户端的软件有良好的体验,而且获得有用的数据,咱们须要对这些系统产生的数据,进行统计和分析,这个过程一般包括数据采集,清洗,建模,分析,报表等。接下来在本篇文章中,将会构建一个基于logstash,elasticSearch,kibana的一套数据收集分析的系统java
logstash实时的从业务日志中数据数据(能够进行响应的过滤),而后把数据输入到redis中,redis只作消息队列不对消息作处理和存储,而后redis会把数据转给elasticSearch,elasticSearch会对数据作存储,索引(基于Lunce),再kibana中创建对elasticSearch的连接,实时的抓取索索引后的数据,这样数据就能够实时的进行展现,经过一些数据组装,查询条件,获得咱们想要的结果(能够经过各类方式例如图表,表格,折线图等显示)node
接下来的第二章节讲述所需软件以及安装linux
Redis(https://www.elastic.co/)nginx
kibana(https://download.elastic.co/kibana/kibana/kibana-4.1.3-linux-x64.tar.gz)redis
logstash(https://download.elastic.co/logstash/logstash/logstash-2.1.0.zip)shell
Elasticsearchruby
对于kibana,logstash,Elasticsearch 这三件套,也能够是直接去下载套装(https://www.elastic.co/downloads)app
把软件包均上传到/opt/tools文件夹下,软件均安装在/opt文件夹下
软件的安装和运行,最好不要使用root用户,由于里面有些软件,必需要求非root用于才能够正常的运行。
上传下载的jdk rpm包
安装:
rpm –ivh jdk-8u65-linux-x64.rpm
经过命令查看jdk版本是否安装成功,安装完成它会自动的配置环境变量等相关信息
java -version java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
安装:
tar xzf redis-3.0.5.tar.gz /opt $ cd redis-3.0.5 $ make && make install
启动
$ src/redis-server
出现以上提示,redis启动成功
客户端测试
$ src/redis-cli redis> set foo bar OK redis> get foo "bar"
因为安装完成后,redis只能窗口化运行,当关闭server的那个shell窗口之后,服务就终端了,因此须要修改相关配置
Vi redis.conf
修改:
daemonize yes
appendonly yes
这样redis能够支持后台运行
其余: 一样,咱们能够把Redis做为Linux服务开机启动 这里只提供一种最简单的方式,最好的是经过编写开机启动脚原本作。 若是要开机启动redis,咱们须要把redis设置为daemon后台启动(若是不设置为后台启动,则linux启动后图形界面会卡在一个空白的页面),而redis只有1个启动参数,就是redis的配置文件路径。redis的默认配置文件redis.conf位于redis的安装目录下。咱们能够把该文件copy到/etc目录下 Shell代码 1[root@localhost redis-2.6.14]# cp redis.conf /etc/ redis的默认配置文件中daemonize参数的值为no,表明为非后台启动,因此咱们须要把该参数的值修改成yes。至于其它的参数在这里就不详细说了,具体能够参见:http://blog.csdn.net/htofly/article/details/7686436 修改完daemonize参数以后,redis就可以经过daemon方式启动了,那么下一步就是把redis加入到linux开机启动服务配置中了,具体步骤以下: 使用VI编辑器打开Linux开机启动服务配置文件/etc/rc.local,并在其中加入下面的一行代码: Shell代码 2/usr/local/redis-2.6.14/src/redis-server /etc/redis.conf 编辑完后保存,而后重启系统就OK了。 中止Redis服务: Shell代码 src/redis-cli shutdown
tar zxvf elasticsearch-2.1.0.tar.gz
进入elasticsearch-2.1.0文件夹,须要注意的是,elasticsearch不容许用root帐户进行启动、
./bin/elasticsearch
elasticSearch建议用一个专用的用户进行操做,若是用root用户启动的话,会报错,
会报以下错误:
Don’t run Elasticsearch as root
在如下网址文档中有详细的说明
(https://www.elastic.co/blog/scripting-security)
curl -X GET http://localhost:9200/ 打印出如下信息: { "name" : "Witchfire", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.0", "build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87", "build_timestamp" : "2015-11-18T22:40:03Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" : "You Know, for Search" }
ElasticSearch安装运行成功
cd /opt/tools unzip logstash-2.1.0.zip mv logstash-2.1.0 /opt
创建服务器启动的配置文件
cd logstash-2.10.0/ mkdir conf log cd conf vi server.conf input { stdin { } redis{ type => "redis-input" data_type => "list" key => "key_count" } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug } }
//reids地址是127.0.0.1.默认端口是6379 因为我都安装在了本机,因此这个就没有进行再配置,相关配置能够参考如下官网网址:
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html
启动服务端
#bin/logstash -f conf/server.conf --log logs/stdout & # "&"为在后台执行 #bin/logstash -f conf/client.conf --log logs/stdout & # "&"为在后台执行
cd /opt/tools tar -zxvf kibana-4.1.3-linux-x64.tar.gz -C /opt cd /opt
能够在kibana/conf/文件夹中,修改kibana.yml配置文件,修改 elasticsearch的访问路径为相关的访问路径,默认为:
elasticsearch_url: http://localhost:9200
因为个人elasticearc安装在了本机,这个地址和端口就暂时不作修改了
默认会有.kibana索引,若是没有的话再进行创建
执行命令
curl -XPUT localhost:9200/.kibana
刚开始下载的是kibana 的版本是4.1.3,而后启动的时候报错,
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":30,"msg":"Found kibana index","time":"2015-11-26T07:49:48.672Z","v":0} {"name":"Kibana","hostname":"test-dev1","pid":15605,"level":50,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}}]},"name":"Error","stack":"Error: [object Object]\n at respond (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)\n at checkRespForFailure (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)\n at HttpConnector.<anonymous> (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)\n at IncomingMessage.bound (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)\n at IncomingMessage.emit (events.js:117:20)\n at _stream_readable.js:944:16\n at process._tickCallback (node.js:442:13)"},"msg":"","time":"2015-11-26T07:49:48.683Z","v":0} {"name":"Kibana","hostname":"test-dev1","pid":15605,"level":60,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No mapping found for [buildNum] in order to sort on"}}]},"name":"Error","stack":"Error: [object Object]\n at respond (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)\n at checkRespForFailure (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)\n at HttpConnector.<anonymous> (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)\n at IncomingMessage.bound (/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)\n at IncomingMessage.emit (events.js:117:20)\n at _stream_readable.js:944:16\n at process._tickCallback (node.js:442:13)"},"msg":"","time":"2015-11-26T07:49:48.683Z","v":0}
通过搜索得知,原来是版本问题,从新下载了4.3版本。从新启动,正常
启动kibana,默认端口为5601
默认是没有任何日志的,当咱们访问nginx的时候,会产生一些访问日志,回头再看kibana,日志将会实时的显示到kibana中,深刻的去学习kibana的使用,将会作出来咱们想要的数据。
来自:http://my.oschina.net/u/2457218/blog/536893