(1)?安装Logstash依赖包JDK
Logstash的运行依赖于Java运行环境, Logstash 1.5以上版本不低于java 7推荐使用最新版本的Java。由于我们只是运行Java程序,而不是开发,下载JRE即可。
下载linux-64的版本。如果使用Linux下载执行如下命令下载即可。
1 |
#wget?http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz |
JDK的安装方式比较简单,只需将下载回来的程序包解压到相应的目录即可。
1 2 |
#?mkdir?/usr/local/java #?tar?-zxf?jdk-8u45-linux-x64.tar.gz?-C?/usr/local/java/ |
设置JDK的环境变量,如下:
1 2 3 4 |
#?vim /etc/profile.d/java.sh? export?JAVA_HOME=/usr/local/java/jdk1.8.0_45 export?PATH=$PATH:$JAVA_HOME/bin exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH # source /etc/profile |
在Shell提示符中执行java –version命令,显示如下结果,说明安装成功:
1 2 3 4 |
#?java?-version java?version?"1.8.0_45" Java(TM)?SE?Runtime?Environment?(build?1.8.0_45-b14) Java?HotSpot(TM)?64-Bit?Server?VM?(build?25.45-b02,mixed?mode) |
?
报错总结
[[email?protected] java]# java -version
-bash: /usr/local/java/jdk1.8.0_101/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
yum install glibc.i686 –y
?
(2)安装Logstash
下载并安装Logstash,安装logstash只需将它解压的对应目录即可,例如:/usr/local下:
1 2 |
#?https://download.elastic.co/logstash/logstash/logstash-1.5.2.tar.gz #?tar?–zxf?logstash-1.5.2.tar.gz?-C?/usr/local/ |
安装完成后运行如下命令:
1 2 3 4 |
#?/usr/local/logstash-1.5.2/bin/logstash?-e?‘input?{?stdin?{?}?}?output?{?stdout?{}?}‘ 等待用户输入,然后输出到屏幕 |
我们可以看到,我们输入什么内容logstash按照某种格式输出,其中-e参数参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。使用CTRL-C命令可以退出之前运行的Logstash。
使用-e参数在命令行中指定配置是很常用的方式,不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。例如:在logstash安装目录下创建一个“基本配置”测试文件logstash-test.conf,文件内容如下:
1 2 3 4 5 |
#?cat?logstash-simple.conf input?{?stdin?{?}?} output?{ ???stdout?{?codec=>?rubydebug?} } |
Logstash使用input和output定义收集日志时的输入和输出的相关配置,本例中input定义了一个叫"stdin"的input,output定义一个叫"stdout"的output。无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符,其中output被定义为"stdout"并使用了codec参数来指定logstash输出格式。?
使用logstash的-f参数来读取配置文件,执行如下开始进行测试:
4 5 6 7 8 9 10 11 |
#?echo?"`date`??hello?World" Thu?Jul?16?04:06:48?CST?2015?hello?World #?/usr/local/logstash-1.5.2/bin/logstash?agent?-f?logstash-simple.conf Logstash?startup?completed Tue?Jul?14?18:07:07?EDT?2015?hello?World???#该行是执行echo?“`date`hello?World”?后输出的结果,直接粘贴到该位置 { ??????"message"?=>?"Tue?Jul?14?18:07:07?EDT?2015?helloWorld", ?????"@version"?=>?"1", ???"@timestamp"?=>?"2015-07-14T22:07:28.284Z", ?????????"host"?=>?"?localhost.localdomain" } |
(3)安装Elasticsearch
下载Elasticsearch后,解压到对应的目录就完成Elasticsearch的安装。
建立app用户,以app用户启动elasticsearch
1 |
#?tar?-zxf?elasticsearch-1.6.0.tar.gz?-C?/usr/local/ # chown app.app /usr/local/elasticsearch-1.6.0 -R |
启动Elasticsearch
1 |
$?/usr/local/elasticsearch-1.6.0/bin/elasticsearch |
如果使用远程连接的Linux的方式并想后台运行elasticsearch执行如下命令:
1 |
#?nohup?/usr/local/elasticsearch-1.6.0/bin/elasticsearch?>nohup?& |
确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行
接下来我们在logstash安装目录下创建一个用于测试logstash使用elasticsearch作为logstash的后端的测试文件logstash-es-simple.conf,该文件中定义了stdout和elasticsearch作为output,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。
#?cat?logstash-es-simple.conf input?{?stdin?{?}?} output?{ ???elasticsearch?{hosts?=>?"localhost"?} ???stdout?{?codec=>?rubydebug?} } |
执行如下命令
#?/usr/local/logstash-1.5.2/bin/logstash?agent?-f?logstash-es-simple.conf …?… Logstash?startup?completed hello?logstash { ??????"message"?=>?"hello?logstash", ???"@timestamp"?=>?"2015-07-15T18:12:00.450Z", ?????????"host"?=>?"noc.vfast.com" } |
我们可以使用curl命令发送请求来查看ES是否接收到了数据:
#?curl?‘http://localhost:9200/_search?pretty‘ 返回结果 { ??"took":?58, ?"timed_out"?:?false, ?"_shards"?:?{ ???"total"?:?5, ???"successful"?:?5, ???"failed"?:?0 ??}, ??"hits":?{ ???"total"?:?1, ???"max_score"?:?1.0, ???"hits"?:?[?{ ?????"_index"?:?"logstash-2015.07.15", ?????"_type"?:?"logs", ?????"_id"?:?"AU6TWiixxDXYhySMyTkP", ?????"_score"?:?1.0, ?????"_source":{"message":"hellologstash","@version":"1","@timestamp":"2015-07-15T20:13:55.199Z","host":"noc.vfast.com"} ????}?] ??} } |
至此,你已经成功利用Elasticsearch和Logstash来收集日志数据了。
(4)安装elasticsearch插件
Elasticsearch-kopf插件可以查询Elasticsearch中的数据,安装elasticsearch-kopf,只要在你安装Elasticsearch的目录中执行以下命令即可:
1 2 |
#?cd?/usr/local/elasticsearch-1.6.0/bin #?./plugin?install?lmenezes/elasticsearch-kopf |
安装完成后在plugins目录下可以看到kopf
修改配置文件vim /usr/local/elasticsearch-2.3.5/config/elasticsearch.yml
network.host: 10.1.1.188 ????#本机IP
http.port: 9200 #端口
在浏览器访问http://?10.4.55.39:9200/_plugin/kopf浏览保存在Elasticsearch中的数据,如下所示:
?

(5)安装Kibana
下载kibana后,解压到对应的目录就完成kibana的安装
1 |
#?tar?-zxf?kibana-4.1.1-linux-x64.tar.gz?-C?/usr/local/ |
修改配置文件vim /usr/local/kibana-4.1.1-linux-x64/config/kibana.yml
# elasticsearch.url: "http://10.4.55.39:9200"
启动kibana
1 |
#?/usr/local/kibana-4.1.1-linux-x64/bin/kibana |
使用http://kibanaServerIP:5601访问Kibana,登录后,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。? ?

? ? ? ? ? ? ? ? ?
看到如下界面说明索引创建完成。

?
点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据。可以自定义选择时间。

? ? ??到此,说明你的ELK平台安装部署完成。
?

?
点击“Discover”,可以搜索和浏览Elasticsearch中的数据,前提是logstash要开启,默认搜索的是最近15分钟的数据。可以自定义选择时间。
? ? ??到此,说明你的ELK平台安装部署完成。

(6)配置logstash作为Indexer
将logstash配置为索引器,并将logstash的日志数据存储到Elasticsearch,本范例主要是索引本地系统日志。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#?cat?/usr/local/logstash-1.5.2/logstash-indexer.conf input?{ ??file?{ ????type?=>"syslog" ?????path?=>?["/var/log/messages",?"/var/log/syslog"?] ??} ??syslog?{ ????type?=>"syslog" ????port?=>"5544" ??} } output?{ ??stdout?{?codec=>?rubydebug?} ??elasticsearch?{hosts?=>?"localhost"?} } #?/usr/local/logstash-1.5.2/bin/logstash?–f logstash-indexer.conf |
使用echo命令模拟写入日志,命令执行后看到如下图的信息
1 |
#?echo?"`date`?优衣库视频"?>>/var/log/messages |

刷新kibana,发现最新的测试数据显示到浏览器中,如下图所示:

到此,ELK平台部署和基本的测试已完成。
问题汇总:
- 注意服务器时间,如果非当前时间,那么浏览器查看的时候会看不到数据,浏览器默认查到的是当前时间。