2016-12-16 43 views
0

時掉落機器人我導入Apache日誌到influxdb與telegraf和LOGPARSER插件自定義模式,以進口原木到influxdb

我要過濾掉所有來自機器人的日誌,所以我設置一個正則表達式的自定義模式,只有匹配用戶代理不包含單詞「機器人」和「爬行」:

NOBOT ((?!bot|crawl).)* 
CUSTOM_LOG_FORMAT %{CLIENT:client_ip} %{NOTSPACE:ident} %{NOTSPACE:auth} \[%{HTTPDATE:ts:ts-httpd}\] "(?:%{WORD:verb:tag} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version:float})?|%{DATA})" %{NUMBER:resp_code:tag} (?:%{NUMBER:resp_bytes:int}|-) %{QS:referrer} "%{NOBOT:agent}" 

但它不工作,零個指標被導入到influxdb

正則表達式似乎確定,它工作正常當我在這裏測試它時:http://grokconstructor.appspot.com/do/match

只是可以肯定我試過一個簡單的正則表達式:

BOT .*?bot.*? 
CUSTOM_LOG_FORMAT %{CLIENT:client_ip} %{NOTSPACE:ident} %{NOTSPACE:auth} \[%{HTTPDATE:ts:ts-httpd}\] "(?:%{WORD:verb:tag} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version:float})?|%{DATA})" %{NUMBER:resp_code:tag} (?:%{NUMBER:resp_bytes:int}|-) %{QS:referrer} "%{BOT:agent}" 

和它的作品,telegraf只有進口原木機器人,但我想相反,我看不出有什麼不對((?!bot|crawl).)*

回答

0

我不知道爲什麼你沒有得到一個錯誤消息,但不幸的是Go不支持負查找aheads:

https://play.golang.org/p/Kq5N2FgG6_

Hello, playground 
panic: regexp: Compile(`((?!bot|crawl).)*`): error parsing regexp: invalid or unsupported Perl syntax: `(?!` 

goroutine 1 [running]: 
panic(0x133400, 0x1050a140) 
    /usr/local/go/src/runtime/panic.go:500 +0x720 
regexp.MustCompile(0x149f1b, 0x11, 0x1, 0xb) 
    /usr/local/go/src/regexp/regexp.go:237 +0x1a0 
main.main() 
    /tmp/sandbox426143344/main.go:10 +0xe0 

我建議在github repo上打開一個問題,在這些情況下返回錯誤消息。

至於讓你現在要做的比賽,這可能是有幫助的:Negative Look Ahead Go regular expressions

+0

感謝,門票開:https://github.com/influxdata/telegraf/issues/2178#issuecomment-268200504 – Matthieu