Logstash csv过滤器根据时间戳创建索引名称

时间:2016-03-12 19:42:58

标签: logstash logstash-configuration logstash-file

我想根据日志文件中匹配的日期创建ES索引。我正在使用logstash CSV过滤器来处理日志。例如,日志数据如下所示

2016-02-21 00:02:32.238,123.abc.com,data
2016-02-22 00:04:40.145,345.abc.com,data

以下是logstash配置文件。显然,索引将创建为testlog,但是,我希望将索引创建为testlog-2016.02.21和testlog-2016.02.22,因为YYYY.mm.dd是索引日期的logstash首选格式。我用grok过滤器完成了这个,我正在尝试用csv实现相同的功能,但这似乎不起作用。

filter {
 csv {
    columns => [ "timestamp", "host", "data" ]
    separator => ","
    remove_field => ["message"]
    }
}
output {
    elasticsearch {
            hosts => ["localhost:9200"]
            index => "testlog"
    }
}

我们使用的是Logstash 2.1.0,ES 2.1.0和Kibana 4.3.0版本

任何投入赞赏

1 个答案:

答案 0 :(得分:1)

您需要在过滤器中指定@timestamp字段,还需要指定索引名称,如下所示:

filter {
  csv {
    columns => [ "timestamp", "host", "data" ]
    separator => ","
    remove_field => ["message"]
  }

  date {
    match => [ "timestamp", "ISO8601" ] #specify timestamp format
    timezone => "UTC" #specify timezone
    target => "@timestamp"
  }
}

output {
  elasticsearch 
    hosts => ["localhost:9200"]
    index => "testlog-%{+YYYY.MM.dd}"
  }
}