2015-05-11 117 views
0

我有這個配置文件logstash:神交解析失敗

input { 
    stdin {} 
    file { 
    type => "txt" 
    path => "C:\Users\Gck\Desktop\logsatash_practice\input.txt" 
    start_position=>"beginning" 
    } 
} 


filter { 
    grok { 
     match => [ "message", "%{DATE:timestamp} %{IP:client} %{WORD:method} %{WORD:text}"] 
     } 
    date { 
     match => [ "timestamp", "MMM-dd-YYYY-HH:mm:ss" ] 
     locale => "en" 
    } 
} 

output { 
    file { 
     path => "C:\Users\Gck\Desktop\logsatash_practice\op\output3.txt" 
    } 
} 

,並讓我們說這是我輸入:

MAY-08-2015-08:00:00 55.3.244.1 GET你好

MAY-13-2015-13:00:00 56.4.245.2 GET世界

運行後,我收到一條消息:grokparse失敗。

這是輸出:

{ 「消息」: 「MAY-08-2015-08:00:00 \ t55.3.244.1 \ thello \ r」, 「@版本」: 「1」 , 「@時間戳」: 「2015-05-11T12:51:05.268Z」, 「類型」: 「TXT」, 「宿主」: 「用戶-PC」, 「路徑」:「C:\用戶\ GCK \桌面\ logsatash_practice \ input.txt「,」tags「:[」_ grokparsefailure「]}

{」message「:」MAY-13-2015-13:00:00 \ t56.4.245.2 \ tworld \ r「 , 「@版本」: 「1」, 「@時間戳」: 「2015-05-11T12:51:05.269Z」, 「類型」: 「TXT」, 「宿主」: 「用戶PC」, 「路徑」: 「C:\ Users \ Gck \ Desktop \ logsatash_practice \ input.txt」,「tags」:[「_ grokparsefailure」]}

我該怎麼做?

同樣重要的是 - 是否有任何指南以一種清晰的方式總結了這個過濾事物?彈性導杆不夠細緻。

回答

1

日期神交模式是這樣定義的:

DATE %{DATE_US}|%{DATE_EU} 

DATE_US和DATE_EU在這樣的轉身定義:

DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR} 
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR} 

我可以繼續,但它已經很清楚,這不匹配您的日誌消息示例的實際內容:

MAY-08-2015-08:00:00 55.3.244.1 GET hello 

沒有股票grok修改ñ匹配這個日期格式,但很容易把一個自定義的。另請注意,日誌消息中令牌之間的分隔符不是空格,而是製表符。我們可以使用\s來匹配任何空格字符。工作示例:

(?<timestamp>%{WORD}-%{MONTHDAY}-%{YEAR}-%{TIME})\s%{IP:client}\s%{WORD:method}\s%{WORD:text} 

不低於重要的 - 在那裏,在一個良好的明確的方式總結了這種過濾的東西可以借鑑?彈性導杆不夠細緻。

除grok特定的%{PATTERN_NAME:variable}表示法外,這些都只是普通的正則表達式,並且在其他地方有許多入門指南。