前提・実現したいこと
REST-API(HTTP)をサービスしているtomcatが出力しているaccess.logをkibanaへ転送して解析を行おうとしています。
※filebeat等のエンジンを利用
出力されるtomcatの正規表現でLogFormatを定義しようとしていたところ、整形ができないログが出てきました。
うまく行かない場合を含めた正規表現を模索しておりますがうまく行かないため質問させていただきます。
試したこと・発生している問題・エラーメッセージ
定義した正規表現
^(?<client_ip>.+?) - - [(?<date>.+?)] "(?<method>.+?) /(?<ver>....)/(?<resource>.+)?/ (?<protocol>.+?)" (?<status_code>.+?) (?<size>.+?) (?<responsetime>.+) "X-Forwarded-For:(?<from_ip>.+),(?<to_ip>.+)"
きれいに整形されるパターン
生ログ:
127.0.0.1 - - [27/Jan/2020:13:44:09 +0900] "GET /v2.0/users?filters=user_id%3D%3DAAA HTTP/1.1" 200 189 97 "X-Forwarded-For:215.86.229.101, 215.160.172.105"
Match groups:
client_ip 127.0.0.1
date 27/Jan/2020:13:44:09 +0900
method GET
ver v2.0
resource users
request filters=user_id%3D%3DAAA
protocol HTTP/1.1
status_code 200
size 189
responsetime 97
from_ip 215.86.229.101
to_ip 215.160.172.105
うまく行かないパターン
生ログ:
215.160.135.36 - - [27/Jan/2020:00:11:38 +0900] "GET /v2.0/users?filters=user_id%3D%3DAAA HTTP/1.1" 200 6395 110 "X-Forwarded-For:-"
※LBを経由せずx-Forwarded-Forが出力されない場合
Match groups:
No Match
問題だと思う点
X-Forwarded-Forの後に値が出力されるか否か(","(カンマ))によって正規表現を分岐させようと思い
- "|"(パイプ)
- ",??"(カンマが0か1個)
のメタ文字を使っていろいろ試しましたがうまくいきません。
回答のクローズ条件
上記うまく行かないパターンにおいて、
Match groups:
client_ip 215.160.135.36
date 27/Jan/2020:13:44:09 +0900
method GET
ver v2.0
resource users
request filters=user_id%3D%3DAAA
protocol HTTP/1.1
status_code 200
size 189
responsetime 97
★from_ip -
★to_ip
※★印が出力したい情報
となるような正規表現形式を定義したい
補足情報(FW/ツールのバージョンなど)
正規表現参考サイト
https://rubular.com/
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/28 00:39