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

3-4 基本的なTransforming Commands

1. Transforming Commandsとは

Transforming Commands(変換コマンド)とは、 個々のイベントを集計して表(統計)の形に作り変えるコマンドの総称です。 前節で触れたとおり、グラフや表を作るには、どこかでこの変換コマンドを通す必要があります。

ここでは初心者がまず覚えるべき代表格として、 toprarestatsの3つを取り上げます。

2. topとrareで頻度を見る

topは、指定したフィールドの値を登場回数の多い順に上位を表示するコマンドです。 「一番アクセスの多いIPは?」「最も多いステータスコードは?」といった問いに素早く答えられます。

SPL ― topで上位を見る
index=web | top limit=5 clientip

limit=5で上位5件に絞っています。topは件数(count)だけでなく、 全体に占める割合(percent)も自動で計算して表示してくれます。

clientip count percent
10.0.0.5 1,240 24.8
10.0.0.9 870 17.4
10.0.0.3 512 10.2

逆に登場回数の少ない順に見たいときはrareを使います。 書き方はtopと同じで、めったに現れない珍しい値を探すのに役立ちます。

SPL ― rareで下位を見る
index=web | rare limit=5 status

3. statsで自在に集計する

statsは、集計コマンドの中でも最も基本となるコマンドです。 count(件数)・sum(合計)・avg(平均)などの集計関数と、 by句によるグループ分けを組み合わせて、必要な集計表を作れます。

SPL ― statsの基本
index=web | stats count
        index=web | stats count by status
        index=web | stats avg(bytes) sum(bytes) by host

1行目は全体の件数、2行目はステータスコードごとの件数、 3行目はホストごとに転送バイト数の平均と合計を求めています。 byのうしろに書いたフィールドが表の「行の見出し」になります。

status count
200 8,420
404 530
500 112

集計結果に分かりやすい列名を付けたいときはasを使います。 例: stats count as アクセス数 by host

4. chartとtimechart

statsを発展させたコマンドにcharttimechartがあります。 いずれもグラフ表示と相性のよい表を作ります。

  • timechart ― 時間を横軸にした集計。時系列の折れ線・棒グラフの作成に使います。
  • chart ― 2つのフィールドで縦横に集計する(クロス集計)表を作ります。
SPL ― timechartで時系列集計
index=web | timechart span=1h count by status

この例は1時間ごとに、ステータスコード別の件数を集計します。 結果はそのまま「時間帯別のアクセス推移グラフ」として可視化でき、 時間帯ごとのエラー件数の変化を確認できます。

timechartは横軸が必ず時間(_time)になります。 時間以外の軸で集計したいときはchartstatsを使いましょう。

5. まとめ

  • Transforming Commandsはイベントを集計して表に変えるコマンド群
  • toprareで値の頻度上位・下位を素早く確認できる
  • statsは集計関数+by句で自在に集計できる中心的コマンド
  • 時系列はtimechart、クロス集計はchartが便利