前置き
- Splunkを使ってフィールドを抽出する際の正規表現の記載方法まとめ
- 正規表現ってたまにしか使わないから、すぐ忘れちゃいます。なので備忘録。
- Splunkの画面でも正規表現チェックはできますが、実際に正規表現を色々試すのによく使うサイト→ regex101
ケース:URLからドメイン部分までを取得したい
サンプルログ
url=http://aaa-v.weather.xxxxx.com/en-US/yyy/
- 「http;//aaa-v.weather.xxxx.com」部分を抽出したい場合
正規表現
url="(?P<domain>(http|https):\/\/.*?)\/
- 結果
ケース:小数点を含む数字を取得したい
サンプルログ
{u'Temperature': 15.2}
- 「15.2」部分を抽出したい場合
正規表現
u'Temperature': (?P<Temperature>\d+(?:\.\d+)?)
- 結果
ケース:MACアドレスを取得したい
サンプルログ
[{u'_id': u'02:00:00:36:ee:e8'}]
- 「02:00:00:36e8」部分を抽出したい場合
正規表現
u'_id': u'(?P<sub_id>[a-fA-F0-9]{2}[\:\-][a-fA-F0-9]{2}[\:\-][a-fA-F0-9]{2}[\:\-][a-fA-F0-9]{2}[\:\-][a-fA-F0-9]{2}[\:\-][a-fA-F0-9]{2})
- 結果
ケース:(サーチ時に*)Microsoft DNSログから綺麗に DNSクエリのFQDN部分のみ切り出したい
サンプルログ
(13)notifications(6)google(3)com(0)
- (13),(6),(3)などの数字をのぞいて、「notifications.google.com」を抽出したい場合
正規表現
| rex mode=sed "s/\(\d+\)/./g" field=query
| rex mode=sed "s/^\.|\.$//g" field=query
- 結果
ケース:(sysmonログから)MD5とSHA256を取り出したい
サンプルログ
<Data Name='Hashes'>MD5=B8CB2DFCA7379908B0605331A759AF4C,SHA256=B0832DEC07A4CB6228B7B392D6ABAFB79E9BF7327605AE3E86E1E617DE7495A5</Data>
- MD5とSHA256を抽出したい場合
正規表現
MD5=(?<md5>.*),SHA256=(?<sha256>(\b[A-Z\d]{64}\b)|(?:(?!\b[A-Z\d]{64}\b).)*)
- 結果
ケース:メールアドレスからドメイン部を抜き取る
- 参考記事:Let'sプログラミング
- 上記サイトに正規表現の解説もあります。
サンプルログ
test@sample.co.jp
- ドメイン部を抽出したい場合
正規表現
(?<tld>([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$)
- 結果
ケース:IPアドレス部分を抽出したい場合
サンプルログ
Received-SPF: pass (google.com: domain of bounces+3639386-6313-damosaison=toadspestcontrol.com@em.brighttalk.com designates 167.89.110.50 as permitted sender) client-ip=167.89.110.50;
- IPアドレスをclient_ipフィールドとして抽出
正規表現
(?<client_ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3})