将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格式输出。