0

我想知道是否可以通過logstash只發送特定的日誌消息給elasticsearch? EG讓我們說我有這方面的消息在我的日誌文件:在發送到ElasticSearch之前過濾特定的消息logstash

2015-08-14 12:21:03 [31946] PASS 10.249.10.70 http://google.com 
2015-08-14 12:25:00 [2492] domainlist \"/etc/ufdbguard/blacklists\ 
2015-08-14 12:21:03 [31946] PASS 10.249.10.41 http://yahoo.com 

我想跳過第二線時logstash /日誌轉發過程中此日誌,是有可能指示它跳過任何日誌信息中的關鍵字'domainlist'?或者只允許使用關鍵字'PASS'的日誌消息?

回答

2

是的,你可以通過使用drop filter來實現。

根據您對日誌行的注意方式以及您擁有的字段名稱,如果事件符合某些條件,您可以決定刪除事件。例如,您可以在下面看到grok過濾器後面的條件,該過濾器檢查myfield是否包含與值PASS不同的值,在這種情況下,它將丟棄該事件。

filter { 
    grok { 
     ...your parsing regexp here... 
    } 

    if [myfield] != "PASS" { 
    drop { } 
    } 
} 
+0

感謝您的幫助:)。 –

1

雖然瓦爾的答案是正確的,另外一種方式來做到這一點是通過與conditional過濾:

output { 
    if "PASS" in [message] { 
    elasticsearch { 
     ... 
    } 
    } 
} 
相關問題