2017-09-06 51 views
0

我有一些舊的日誌文件(每天一個文件)。 log-2017.09.01.json log-2017.09.02.json etcElasticsearch/Logstash定義導入舊日誌文件的時間或日期

json文件中沒有日期信息。

默認情況下,索引的時間戳是創建索引的日期。

我試圖爲這些日誌文件中的每一個創建索引,並且我希望每個日誌文件對應的索引的時間戳與文件名稱定義的時間戳相同。 即,我想要一個索引「log-2017.09.01」,其時間戳爲2017.09.01,另一個索引爲「log-2017.09.02」,時間戳爲2017.09.02

有誰知道如何簡單地做到這一點?

+0

顯然,使用文件輸入插件時,會創建一個'path'字段,其中包含正在讀取的文件的路徑,請參閱此問題:https://stackoverflow.com/questions/22916200/logstash-how-to -add文件名稱作爲一種場。不過,您仍然需要從路徑中提取日期,然後執行其他操作。 – baudsp

回答

0

這裏並不簡單,但它可以做到。它需要幾個步驟。

第一步,取出文件路徑的日期。

filter { 
    grok { 
    match => { "path", "^log-%{DATA:date_partial}$" } 
    } 
} 

第二步是將您的時間戳數據拉出日誌行。我假設你知道如何做到這一點。

第三步是組裝一個日期字段。

filter { 
    mutate { 
    add_field => { "full_timestamp", "%{date_partial} %{date_hour}:%{date_minute}" } 
    } 
} 

最後一步是在該構造字段上使用date{}過濾器。

filter { 
    date { 
    match => [ "full_timestamp", "yyyy.MM.dd HH:mm" ] 
    } 
} 

這應該給你一個關於所需技術的想法。

相關問題