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是如何处理日志文件的思路了。

相关内容

    暂无相关文章