ELKStack的安装
ELKStack的安装
前言:
看了关于elk的文档,似懂非懂,云里雾里的,为了避免下个月把elk的相关知识都忘掉。还是决心费点事,把学习时遇到的详细问题和进展都记录下来。方便自己和其他需要者做参考。
本文先安装elk。
安装前的准备:
确认java版本,本机安装的版本为1.8.0_45-B14.关于JDK的安装这里不在赘述。
安装logstash:
首先下载logstash包,这里选择了版本1.5.4.
然而执行./logstash agent时报没有指定conf的配置文件。
在百度里搜索了一些ELK的安装文档,但说的都不太明白,故还是决定找官方文档来入门。官方文档地址见参考文献。
我们先按照官方文档写一个简单配置文件例子,做一下测试。以下为一个处理apachelog的logstash配置文件。
#设置输入源,这里是从标准输入中读取。 input { stdin { } } #设置使用的filter。 filter { grok { #message默认使用了apachelog的模板 match => { "message" => "%{COMBINEDAPACHELOG}" } } date { #指明了时间格式 match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } #定义输出管道,这里一个是输出到本机的elasticSearch中,一个是输出到标准输出中。 output { elasticsearch { host => localhost } stdout { codec => rubydebug } }
将以上内容保存为logstash.conf.然后运行
bin/logstash -f logstash.conf
待启动完毕,在控制台上输入以下文本进行测试
127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"
回车后我们能看到以下输出。
Bingo,貌似logstash已经起作用了,它把我们的输入文本,给切分为多个字段了。而且每个字段的命名都比较准确。猜测应该是我们配置了message的模板为"%{COMBINEDAPACHELOG}",而测试的文本也是一个apache的log日志中的一条。
按照官方文档来解释,起作用的是我们配置的“grok”的过滤器。grok按照每种log的格式预先定义了多种模板,只需使用时选定下你的日志适用的grok即可。更多的grok 模板可以从github上去获取。
?可以看到解析后的字段中出现了2处timestamp,一处带着@符号,另一处则是log中解析出来的时间。
OK,第一个例子已经结束。我们已经能看到logstash是如何处理日志文件的思路了。
评论暂时关闭