LoginSignup
1
0

More than 5 years have passed since last update.

Logstashでログの取り込みに失敗した話(日付の処理で)

Posted at

Logstash失敗事例その1

月が変わってログデータの取り込みが失敗するようになったため、うまくいくパターン、うまくいかないパターンを調査した。

ログのパターン 結果
Aug 15 00:00:01 … うまくいく
Sep 7 00:00:01 … うまくいかない

原因

日付が1桁の場合のmatch条件の考慮がなかった。

logstash.conf修正前
match => [ "logdate", "MMM dd yyyy HH:mm:ss" ]

*logdateというフィールドを作って、それをtimestampとして採用していた。

解決策

公式ページを頼りに、以下の通りに修正して解決。

logstash.conf修正後
match => [ "logdate", "MMM dd yyyy HH:mm:ss",
          "MMM  d yyyy HH:mm:ss", "ISO8601" ]

おまけ

なお、
grok-patternファイルの初期値にある、SYSLOGTIMESTAMPの記述の「+」は、スペースが「0もしくは複数」ということらしく、
MMM[space]dd
MMM[space][space]d のように日付が1桁の場合にも対応していた。

MONTH \b(?:[Jj]an(?:uary|uar)?|[Ff]eb(?:ruary|ruar)?|[Mm](?:a|ä)?r(?:ch|z)?|[Aa]pr(?:il)?|[Mm]a(?:y|i)?|[Jj]un(?:e|i)?|[Jj]ul(?:y)?|[Aa]ug(?:ust)?|[Ss]ep(?:tember)?|[Oo](?:c|k)?t(?:ober)?|[Nn]ov(?:ember)?|[Dd]e(?:c|z)(?:ember)?)\b
MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])

SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}

基本のtimestampは、しっかり問題を押さえていたようで…。

以上、パース自体は動作するものの、matchで台無しにする失敗例でした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0