2017-06-14 72 views
0

我在輸出配置下面已經有了,但是它在MongoDB中插入了原始數據。我怎樣才能只插入幾個選定的領域?對於InfluxDB,我們可以使用屬性data_points來執行此操作,但MongoDB插件似乎沒有任何此類功能。我怎樣才能在Logstash中指定要在MongoDB輸出中插入的文件?

  mongodb { 
       collection => "logs" 
       database => "test" 
       uri => "mongodb://localhost:27017" 
       codec => line 
        { 
        enable_metric => "false" 
        format => "data1:%{val1}, data2:%{val2}, data3:%{val3}" 
        } 
     } 

回答

2

您可以使用Logstash prune filter這個。修剪過濾器的whitelist_names設置允許您刪除陣列中未列舉的所有字段。

filter { 
    prune { 
    whitelist_names => ["field1", "field2", "field3"] 
    } 
} 

的東西,我認爲是真正酷的剪枝過濾器,它也可以讓你輸入正則表達式 - 並刪除不匹配正則表達式的任何字段。因此,您可以使用以下代碼:

filter { 
    prune { 
    whitelist_names => ["^field\d+"] 
    } 
} 

另一個說明:默認情況下不會安裝剪枝過濾器。你必須運行bin/logstash-plugin install logstash-filter-prune

+0

另一個注意事項:如果你想要logstash的添加字段,比如'@ timestamp','tags'或其他,你必須列舉白名單中的那些字段。 – fylie

+0

我試過這個,它工作,但仍有一些缺失。我將我的源代碼標記爲http和tcp,並將它們列入白名單,以便我可以根據標記輸出它們。問題是我無法在輸出中的任何位置找到remove_field選項,以便在插入到db之前刪除該類型。你有什麼建議嗎? –

相關問題