ダッシュボード内でドリルダウンを利用し、指定のフィールドが受け取ったIPアドレスとマッチするレコードを表示させたいのですが、両者のIPアドレスの表記が以下のように異なっており、マッチさせることができません。
サーチ文字列
sourcetype=traffic_log srcip=$IP$
指定のフィールド(srcip):172.29.32.2
ドリルダウンで受け取ったIPアドレス(IP):172.029.032.002
ログ自体のIPアドレス表記を変更することなく、上記のIPアドレスをマッチさせるサーチ方法をご教授いただけないでしょうか。
srcip=172.029.032.002 で入ってきた場合、手っ取り早くやるには、HiroshiSatoさんのアプローチがよいとおもいます。
evalでやる以外に、rexコマンドのsedオプションで0をとってしまうという方法がありますので、共有いたします。
... | rex field=srcip mode=sed "s/\.0+/./g"
上記をうまくsrcip=$IP$の箇所にいれていただければ可能かと思います。
以下参考にしていただければと思います。
srcip=[| stats count | eval query="$IP$" | rex field=query mode=sed "s/\.0+/./g" | fields - count]
あとは、CIDRとして通常のサーチにいれていただければもっと単純にいくとおもいます。
ip=172.029.032.002/32
などとサーチしていただくと、
172.029.032.002
172.29.32.2
172.029.032.002/32
上記3つを引っ掛けることができます。
方法はいくつかありますが、どの方法がサーチの仕方にあっているか判断していただければと。
srcip=172.029.032.002 で入ってきた場合、手っ取り早くやるには、HiroshiSatoさんのアプローチがよいとおもいます。
evalでやる以外に、rexコマンドのsedオプションで0をとってしまうという方法がありますので、共有いたします。
... | rex field=srcip mode=sed "s/\.0+/./g"
上記をうまくsrcip=$IP$の箇所にいれていただければ可能かと思います。
以下参考にしていただければと思います。
srcip=[| stats count | eval query="$IP$" | rex field=query mode=sed "s/\.0+/./g" | fields - count]
あとは、CIDRとして通常のサーチにいれていただければもっと単純にいくとおもいます。
ip=172.029.032.002/32
などとサーチしていただくと、
172.029.032.002
172.29.32.2
172.029.032.002/32
上記3つを引っ掛けることができます。
方法はいくつかありますが、どの方法がサーチの仕方にあっているか判断していただければと。
本来なら、ipと認識して、0詰めでもそうでなくてもおなじように扱ってくれつと良いですね。。
IPv4ならまだましですが、v6になると、面倒になってきますので、、、
ドリルダウンのIPを変換して使う方法はダメですか?
変換例.XIPが変換したIP
・・・・|eval XIP=split(IP,".")|eval XIP=tostring(tonumber(mvindex(XIP,0)))+"."+tostring(tonumber(mvindex(XIP,1)))+"."+tostring(tonumber(mvindex(XIP,2)))+"."+tostring(tonumber(mvindex(XIP,3)))
正規表現が得意なら正規表現でゼロサブレスしたほうがシンプルに書けます。