Elasticsearch
Logstash 未正確處理 MySQL 日誌
如您所見,消息不僅僅是消息,還包含日期和時間戳。
. .
這是 MySQL 日誌:/var/log/mysql/error.log
150630 9:01:29 [Warning] Access denied for user 'test1'@'localhost' (using password: YES) 150630 9:03:39 [Warning] Access denied for user 'test3'@'localhost' (using password: YES) 150630 9:07:48 [Warning] Access denied for user 'test5'@'localhost' (using password: YES) 150630 9:10:00 [Warning] Access denied for user 'test7'@'localhost' (using password: YES) 150630 9:12:21 [Warning] Access denied for user 'test9'@'localhost' (using password: YES)
這是 Logstash-shipper 配置:/etc/logstash/shipper/conf.d/20-filter.conf
else if [type] == "mysql" { grok { patterns_dir => "/etc/logstash/patterns" match => [ "message", "%{MYSQLLOG}" ] overwrite => [ "message" ] } }
這是模式:
MYSQLLOG %{NUMBER:date} %{TIME:time} \[%{LOGLEVEL:loglevel}\] %{GREEDYDATA:message}
我已經嘗試解決這個問題好幾個星期了,實際上我曾經讓它工作過,但是沒有我的干預,它又停止了工作。有關調試的任何提示?
看起來在
date
和time
欄位之間的日誌條目中有一個額外的空間,所以你的 grok 不匹配,_grokparsefailure
標籤的存在證明了這一點。試試這個模式:
%{NUMBER:date} %{TIME:time} \[%{LOGLEVEL:loglevel}] %{GREEDYDATA:message}
我在Grok 建構子中對此進行了測試,它與您提供的所有行匹配。