2016-11-11 28 views
0

我在Logstash事件一個自定義字段定義爲表達:評估字段作爲表達Logstash過濾

{ "customIndex" => "my-service-%{+YYYY.MM}" } 

和過濾,對elasticsearch輸出插件計算指數名稱:

filter { 
    if [customIndex] { 
    mutate { 
     add_field => { "indexName" => "custom-%{customIndex}" } 
    } 
    } else { 
    mutate { 
     add_field => { "indexName" => "common-%{+YYYY.MM.dd}" } 
    } 
    } 
} 

但對於定製它創建的索引無效名稱custom-my-service-%{+YYYY.MM}並不評估%{+YYYY.MM}表達式。

是否可以評估字段並得到custom-my-service-2016.11

回答

1

如果您可以創建現場重新格式化爲這樣:

{ "customIndex" => "my-service-%Y.%m" } 

那麼這個紅寶石濾波將這樣的伎倆:

ruby { 
    init => "require 'date'" 
    code => "event['indexName'] = 'custom-' + Date.today.strftime(event['customIndex'])" 
} 

Here後,您可以使用佔位符文件。

+0

其他部分我沒有任何問題。如果有一部分我感興趣。儘管你的建議對我不起作用,因爲它需要Logstash級別的硬編碼時間模式,並且使其不靈活。 我的觀點是讓Logstash更加靈活,並將收到日期模式作爲收入部分。因此,一個應用程序將使用每小時索引,另一個每天等。 – moleksyuk

+0

@moleksyuk更新了答案 – Fairy

+0

非常感謝。不是很完美。 – moleksyuk