按日期在elasticsearch中为每个日志文件创建一个新索引

时间:2016-10-21 11:28:03

标签: elasticsearch logstash kibana elastic-stack logstash-grok

目前
我已经使用一个日志文件完成了上述任务,并将带有logstash的数据传递给elasticsearch中的一个索引:

yellow open logstash-2016.10.19 5 1 1000807 0 364.8mb 364.8mb

我真正想做的事

如果我有以下日志文​​件,这些文件是根据年,月和日期命名的

MyLog-2016-10-16.log
MyLog-2016-10-17.log
MyLog-2016-10-18.log
MyLog-2016-11-05.log
MyLog-2016-11-02.log
MyLog-2016-11-03.log

我想告诉logstash按年,月和日期阅读并创建以下索引:

yellow open MyLog-2016-10-16.log
yellow open MyLog-2016-10-17.log
yellow open MyLog-2016-10-18.log
yellow open MyLog-2016-11-05.log
yellow open MyLog-2016-11-02.log
yellow open MyLog-2016-11-03.log

我可以就如何进行此操作获得一些指导吗?

谢谢你

3 个答案:

答案 0 :(得分:0)

这也很简单:

lastKey

答案 1 :(得分:0)

如果文件中的行包含日期时间信息,则应使用日期{}过滤器从该值设置@timestamp。如果这样做,您可以使用@Renaud提供的输出格式,“MyLog - %{+ YYYY.MM.dd}”。

如果这些行不包含日期时间信息,您可以使用索引名称的输入路径,例如“%{路径}”。要获得路径的基本名称:

mutate {
    gsub => [ "path", ".*/", "" ]
}

答案 2 :(得分:0)

输出部分中的此配置是否足以满足您的需要?

output {
    elasticsearch {
        embedded => false
        host => localhost
        port => 9200
        protocol => http
        cluster => 'elasticsearch'
        index => "syslog-%{+YYYY.MM.dd}"
    }
}