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

4-4 基本的なTransforming Commands(top/rare/stats)

本章では、基本的なSPLコマンドの中から、Transforming Commandと呼ばれるタイプのいくつかのコマンドについて説明します。

1. Transforming Commandとは

イベントをテーブルフォーマットに変換(Transform)するSPLコマンドをTransforming Commandと言います。 Transformingコマンドには、前章で説明したtable,の他、top, rare, statsといったコマンドが含まれます。

SPLコマンドには次の6種類のコマンドタイプがあり、Transforming Commandはそのうちの一つです。 各コマンドタイプの詳細は、初学者のうちはそこまで深く理解する必要はありません。 最初のうちは、このような分類が存在していることだけ把握できれば十分です。

  • Distributable Streamingコマンド
  • Centralized Streamingコマンド
  • Transformingコマンド
  • Generatingコマンド
  • Orchestratingコマンド
  • Dataset processingコマンド

SPLのコマンドタイプについて詳しく知りたい場合は公式ドキュメントを参照してください。 https://docs.splunk.com/Documentation/Splunk/latest/Search/Typesofcommands

2. 代表的なTransforming Command

次に、代表的なTransforming Commandについて説明します。

top

指定したフィールドの値ごとにイベント数を集計し、出現頻度が多い順にソートして、値の件数と全体に占めるパーセンテージを表示するコマンドです。

SPL: topの例
index=main sourcetype=access_combined_wcookie action=purchase
| top limit=5 productId

上記は、得られたイベントからproductIdフィールドの値を集計し、出現頻度が多い順に上位5件の件数とパーセンテージを表示します。 売上上位の製品などを分析する用途に使います。

rare

指定したフィールドの値ごとにイベント数を集計し、出現頻度が低い順にソートして、値の件数と全体に占めるパーセンテージを表示するコマンドです。

SPL: rareの例
index=main sourcetype=access_combined_wcookie action=purchase
| rare limit=5 productId

上記は、得られたイベントからproductIdフィールドの値を集計し、出現頻度が低い順に下位5件の件数とパーセンテージを表示します。 不正なログインをしているユーザーがいないかを分析する用途などに使います。

stats

イベントに対してさまざまな統計処理を行うコマンドです。 statsのあとに関数を指定し、平均(avg)、件数(count)、合計(sum)などの統計値を計算したり、イベントの処理順序や時系列をもとに最初や最後のイベントを取得したりできます。 用途が非常に多く、使う機会も多いため、しっかり学習しておく必要があります。

SPL: stats(count)の例
index=main sourcetype=access_combined_wcookie
| stats count BY status method

上記は、得られたイベントからstatus, methodフィールドの値の組み合わせ一覧を作成し、それに一致するイベント数をカウントしてテーブルフォーマットで出力します。

SPL: stats(dc)の例
index=main sourcetype=access_combined_wcookie action=purchase
| stats dc(clientip) AS unique_clients

上記は、得られたイベントからclientipフィールドの値の一覧を作成し、重複したイベントを除いてunique_clientsというフィールド名で出力します。

3. まとめ

  • Transforming Commandはイベントをテーブルフォーマットに変換するコマンドで、table, top, rare, statsなどが含まれる
  • topは出現頻度が多い順、rareは少ない順に、フィールド値ごとの件数とパーセンテージを表示する
  • statsは関数(avg, count, sumなど)を指定してさまざまな統計処理を行うコマンドで、用途が多く使用頻度も高い