はじめてのSplunk ― 概要から応用までを体系的に学ぶ

4-1 可視化のためのコマンド(chart/timechart)

1. chartとtimechartの違い

第3章では、時系列のグラフを作るtimechartに軽く触れました。 ここではあらためて、集計して可視化するための代表的な変換コマンドである charttimechartを、もう一歩踏み込んで整理します。

両者の最大の違いは横軸(X軸)に何を置くかです。

コマンド 横軸(X軸) 主な用途
timechart 常に時間(_time) 時間の推移を見る折れ線・エリアグラフ
chart 任意のフィールド フィールド同士のクロス集計や棒グラフ

timechartは「時間とともにどう変化したか」を、 chartは「カテゴリごとにどう分布しているか」を見るのに向いています。

2. timechartで時間推移を見る

timechartは横軸が必ず_timeになり、 指定した集計間隔(span)ごとにイベントをまとめます。 span=1hなら1時間ごと、span=1dなら1日ごとの集計です。

SPL ― 1時間ごとのイベント件数
index=web | timechart span=1h count

by句を加えると、値ごとに系列(線)を分割できます。 たとえばステータスコードごとの推移を1枚のグラフに重ねられます。

SPL ― ステータスコード別の推移
index=web | timechart span=1h count by status

byで系列が増えすぎると見づらくなります。 limitで表示する系列数を絞り、あふれた分をuseother=tで 「OTHER」としてまとめられます(既定では上位10系列)。

3. chartでクロス集計を作る

chartoverbyを組み合わせ、2次元の表(縦横のクロス集計)を作れます。 overで指定したフィールドが横軸(行の見出し)、 byで指定したフィールドが系列(列)になります。

SPL ― ホスト別・ステータス別のクロス集計
index=web | chart count over host by status

これで「どのホストで、どのステータスが何件出たか」を一覧できます。 overだけを指定すれば、単純な棒グラフ向けの集計になります。

4. よく使う集計関数

chart/timechartのどちらでも、次のような集計関数が使えます。

関数 意味
count イベント件数
sum(field) 数値の合計
avg(field) 平均値
dc(field) 値の種類数(distinct count)
values(field) 出現した値の一覧
SPL ― 平均レスポンスタイムと件数を同時に集計
index=web | timechart span=1h avg(response_time) count

集計結果は、可視化タブで折れ線・棒・エリアグラフなどに切り替えられます。 時間推移は折れ線やエリア、カテゴリ比較は棒グラフが見やすい、と覚えておきましょう。

5. まとめ

  • timechartは横軸が必ず時間で、spanで集計間隔、byで系列分割
  • chartoverbyで2次元のクロス集計を作れる
  • 集計関数はcount/sum/avg/dc/valuesなどが基本
  • 系列が多いときはlimituseotherで整理する