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

3-2 フィールドの利用

1. フィールドとは何か

フィールドとは、イベント(1件のログ)の中から抽出された 「名前と値のペア」のことです。 たとえばWebアクセスログの1行から、 status=404clientip=10.0.0.5method=GET といった項目が取り出されます。このstatusclientipが「フィールド名」、 40410.0.0.5が「値」です。

前節のキーワードサーチが「文字が含まれているか」を見るのに対し、 フィールドを使うと「どの項目が、どんな値か」という切り口で正確に絞り込めます。 Splunkはサーチのたびにフィールドを抽出する動的スキーマを採用しているため、 あらかじめ項目を定義しておかなくても、多くのフィールドが自動で使えるようになっています。

2. field=valueで絞り込む

フィールドを条件に使う最も基本的な書き方はフィールド名=値です。 たとえば「HTTPステータスが404(Not Found)のイベント」だけを見たいなら、次のように書きます。

SPL ― フィールドで絞り込む
index=web status=404

status=404と書くと、statusフィールドの値が正確に404のイベントだけが対象になります。 単に404というキーワードで探すと、URLや別の項目にたまたま「404」を含むイベントまで 拾ってしまうことがありますが、フィールド指定ならそうした誤検出を防げます。

フィールド名は大文字・小文字を区別します(statusStatusは別物)。 一方で値の側は、ソースタイプの設定によって区別されない場合があります。まずは表示されている名前をそのまま使いましょう。

複数のフィールド条件を並べれば、キーワードと同じくANDで絞り込めます。 否定したい場合はNOT!=を使います。

SPL ― 複数条件と否定
index=web status=404 method=GET
        index=web status!=200

3. 比較演算子で範囲を指定する

値が数値のフィールドには、比較演算子を使って範囲で絞り込めます。 たとえば「ステータスが400以上(=クライアントエラーやサーバーエラー)」を見たいときは次のようになります。

SPL ― 比較演算子
index=web status>=400
        index=web bytes>10000 status=200
演算子 意味
= / != 等しい / 等しくない status=404
> / >= より大きい / 以上 bytes>=10000
< / <= より小さい / 以下 response_time<1

4. フィールドパネルの使い方

サーチ結果画面の左側のフィールドパネルには、 抽出されたフィールドが2つのグループに分かれて表示されます。

  • Selected Fields(選択されたフィールド) ― 各イベントの下に常に表示される、注目中のフィールド。既定ではhostsourcesourcetypeが含まれます。
  • Interesting Fields(興味深いフィールド) ― Splunkが「多くのイベントに登場する」と判断した、その他の候補フィールド。

フィールド名をクリックすると、そのフィールドに登場する値の一覧と割合が表示されます。 値をクリックすれば、その値でサーチを絞り込む条件が自動でサーチバーに追加されます。 SPLを手で書かなくても、クリック操作だけで絞り込み条件を組み立てられます。

Interesting Fieldsに出てこないフィールドでも、値さえ分かっていれば field=valueの形で直接サーチできます。パネルに表示されるフィールドがすべてではありません。

5. まとめ

  • フィールドはイベントから抽出された「名前と値のペア」
  • field=valueで正確に絞り込め、キーワードより誤検出が少ない
  • 数値フィールドは> < >=などの比較演算子で範囲指定できる
  • 左のフィールドパネルから、クリックだけで絞り込み条件を追加できる