将Logstash和Elasticsearch进行整合/协作

由于上次我们成功实现了标准输入/输出的日志解析,因此这次的任务是:
1. 读取日志文件
2. 将输出发送至Elasticsearch
3. 尝试在Elasticsearch中进行搜索。

我想試試看做到那個程度。

环境

    • VirtualBox 4.3

 

    • ubuntu 14.04

 

    • java8(1.8.0_25)

 

    • Elasticsearch(1.5.0)

 

    logstash(1.4.2)

修改Logstash的配置文件

将输入输出目标更改
* 在上次”conf/test.conf”的相同位置创建新的配置文件。

input {
  file{
    path=>"/path/to/access.log"
    start_position=>"beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  grok{
    match=>{"message"=>"%{COMBINEDAPACHELOG}"}
    break_on_match=>false
    tag_on_failure=>["_message_parse_failure"]
  }
  date {
    match=>["timestamp","dd/MMM/yyyy:HH:mm:ssZ"]
    locale=>en
  }
}

output {
  stdout{codec=>rubydebug}
}

在输入的位置上,使用文件而不是先前的标准输入设置,并指定日志文件的路径。
start_position=>”beginning”是在启动 logstash 时指定从日志文件的哪个位置开始读取的。
※默认设置是“end”。在这种情况下,logstash 会从启动后添加的日志中进行输入。
“sincedb_path => “/dev/null””是用于记录上一次处理的位置,保存在 $HOME.sincedb 中。在此处,设置为不保存位置信息。

在一次启动中使用上述的配置文件进行设置。

$ /usr/local/logstash/bin/logstash -f /usr/local/logstash/conf/logstash.conf

在稍微等待一段时间后,经过解析的结果将持续输出到标准输出。
※要停止时,请使用crtl+c。

将数据导入Elasticsearch。

output {
  elasticsearch {
    host => localhost
    protocol => http
  }
}

将如上所述进行更改。

执行

まずはelasticsearchを起動
$ sudo /usr/local/elasticsearch/bin/elasticsearch
その後logstashを起動
$ sudo /usr/local/logstash/bin/logstash -f /usr/local/logstash/conf/logstash.conf

※路径=>”/path/to/access.log”的内容最好少一些 (这样可以更快地进行确认)

请确认索引。

$ sudo curl 'http://localhost:9200/_search'

会以JSON格式输出。