1. フィールドとは何か
フィールドとは、イベント(1件のログ)の中から抽出された
「名前と値のペア」のことです。
たとえばWebアクセスログの1行から、
status=404、clientip=10.0.0.5、method=GET
といった項目が取り出されます。このstatusやclientipが「フィールド名」、
404や10.0.0.5が「値」です。
前節のキーワードサーチが「文字が含まれているか」を見るのに対し、 フィールドを使うと「どの項目が、どんな値か」という切り口で正確に絞り込めます。 Splunkはサーチのたびにフィールドを抽出する動的スキーマを採用しているため、 あらかじめ項目を定義しておかなくても、多くのフィールドが自動で使えるようになっています。
2. field=valueで絞り込む
フィールドを条件に使う最も基本的な書き方はフィールド名=値です。
たとえば「HTTPステータスが404(Not Found)のイベント」だけを見たいなら、次のように書きます。
index=web status=404
status=404と書くと、statusフィールドの値が正確に404のイベントだけが対象になります。
単に404というキーワードで探すと、URLや別の項目にたまたま「404」を含むイベントまで
拾ってしまうことがありますが、フィールド指定ならそうした誤検出を防げます。
フィールド名は大文字・小文字を区別します(statusとStatusは別物)。
一方で値の側は、ソースタイプの設定によって区別されない場合があります。まずは表示されている名前をそのまま使いましょう。
複数のフィールド条件を並べれば、キーワードと同じくANDで絞り込めます。
否定したい場合はNOTや!=を使います。
index=web status=404 method=GET
index=web status!=200
3. 比較演算子で範囲を指定する
値が数値のフィールドには、比較演算子を使って範囲で絞り込めます。 たとえば「ステータスが400以上(=クライアントエラーやサーバーエラー)」を見たいときは次のようになります。
index=web status>=400
index=web bytes>10000 status=200
| 演算子 | 意味 | 例 |
|---|---|---|
= / != |
等しい / 等しくない | status=404 |
> / >= |
より大きい / 以上 | bytes>=10000 |
< / <= |
より小さい / 以下 | response_time<1 |
4. フィールドパネルの使い方
サーチ結果画面の左側のフィールドパネルには、 抽出されたフィールドが2つのグループに分かれて表示されます。
- Selected Fields(選択されたフィールド) ― 各イベントの下に常に表示される、注目中のフィールド。既定では
host・source・sourcetypeが含まれます。 - Interesting Fields(興味深いフィールド) ― Splunkが「多くのイベントに登場する」と判断した、その他の候補フィールド。
フィールド名をクリックすると、そのフィールドに登場する値の一覧と割合が表示されます。 値をクリックすれば、その値でサーチを絞り込む条件が自動でサーチバーに追加されます。 SPLを手で書かなくても、クリック操作だけで絞り込み条件を組み立てられます。
Interesting Fieldsに出てこないフィールドでも、値さえ分かっていれば
field=valueの形で直接サーチできます。パネルに表示されるフィールドがすべてではありません。
5. まとめ
- フィールドはイベントから抽出された「名前と値のペア」
field=valueで正確に絞り込め、キーワードより誤検出が少ない- 数値フィールドは
><>=などの比較演算子で範囲指定できる - 左のフィールドパネルから、クリックだけで絞り込み条件を追加できる