2017-04-03 129 views
0

我要排除的文件不帶擴展名在Logstash配置文件Logstash:正則表達式匹配的文件沒有擴展

我需要一個正則表達式來做到這一點並不能達到它。我遵循的路徑是排除名稱中不包含點的任何文件。

我已經閱讀了很多並嘗試過,但Logstash一直在吃我需要排除的文件被轉發到ElasticSearch。

我最後一次嘗試和錯誤:

input { 
    file { 
      type => "exe-data" 
      path => "/elastic-data/**/*" 
      start_position => "beginning" 
      sincedb_path => "/dev/null" 
      codec => plain { charset => "ISO-8859-1" } 
      exclude => "*.gz" 
      exclude => "*.zip" 
      exclude => "^([^.]+)$" 
+0

[exclude](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file-exclude)不支持正則表達式。 –

+0

好吧我可能會使用grok過濾器,但無法想象如何避免該文件,如果條件匹配 – lenord

+1

您的正則表達式是正確的,'^ [^。] + $'匹配一個字符串除1以外的字符。'' –

回答

0

雖然exclude上的文件輸入可能不支持正則表達式,你可以處理這個在過濾階段。

filter { 
    if [path] =~ "^/elastic-data/[^.]+$" { 
    drop {} 
    } 

    otherfilter { 

    } 
} 

通過在過濾管道具有drop {}爲第一階段,你攝入的點少的文件得到一個最小的打擊。

+0

看看原始文章中的路徑: 'path =>「/ elastic-data/**/*」' 在「elastic-data」之後有一個遞歸,你的解決方案是否會覆蓋遞歸?我看不出如何。無論如何可能在幾個小時內測試它。 – lenord