2016-03-12 148 views
0

我想基於日誌文件中匹配的日期創建ES索引。我正在使用logstash CSV過濾器來處理日誌。例如,日誌數據如下所示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,2.1.0 ES和Kibana 4.3.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}" 
    } 
}