Splunkで異なる日付のグラフを比較する

こんにちは。
例えば、1日のうち、どの時間帯にアクセスが多いかを日別に比較することになったとします。
今回はそんな分析を行うためのクエリをSplunkで書きます。

先に結論だけ掲載します。

index=_internal sourcetype=splunkd earliest=-7d@d latest=-d@d
| eval day=strftime(_time, "%m月%d日")
| eval time= strftime(_time, "%H:%M")
| chart count over time by day
| eval time = "01/01 " + time
| rename time as _time

結果のグラフです。

このSPLが何をやっているかを以下に書いていきます。

index=_internal sourcetype=splunkd earliest=-7d@d latest=-d@d

これはベース部分のサーチです。
今回は誰でも利用可能な内部ログを利用していますが、用途に応じて変更してください。

| eval day=strftime(_time, "%m月%d日")
| eval time= strftime(_time, "%H:%M")

ログの時間を示す_timeフィールドから、日付と時刻の情報を抽出しています。
例えば、2022年6月3日11時52分15秒717に記録されたログの場合、

フィールド名
_time 2022/6/3 11:52:15.717
day 6月3日
time 11:52

となります。
これは、後で時系列のグラフを作るために必要な情報です。

| chart count over time by day

時刻が縦、日付が横の2次元の表を作成します。
timechartで| timechart count span=1m by dayと処理したときに近い挙動です。
ただ、timechartを使うとこんな感じにグラフの横軸が延びて、折れ線の比較ができなくなります。


一方chartを使うと、グラフは同一時間軸上にあるものの、X軸の目盛が表示されなくなります。

そこで次の処理を行います。

| eval time = "01/01 " + time
| rename time as _time

時刻の情報しかなかったtimeフィールドに1/1という日付を足し、更に_timeにリネームしています。
これでグラフのX軸に目盛が復活しました。


この記事では、異なる日付の折れ線グラフを比較するSPLを紹介しました。
ここまで読んでいただき、ありがとうございます。