Splunkで演算子を使って効率アップ | evalコマンドおよびwhereコマンドでINを使う

Tips & Tricks Laura Stewart

Splunkからのグッドニュースです。同じフィールド内の異なる値をサーチするのが簡単になりました。

仮に「error_code」というフィールドがあり、その中でコード400、402、404、406だけを見つけるとしましょう。

同じフィールド内の値のリストをサーチするのに、フィールドと値のペアを何度も入力しなければならないのは、本当に面倒です。しかし、Splunkのバージョン6.6.0より前では、別々のOR条件としてフィールドと値のペアを1つ1つ指定しなければなりませんでした。

    ...error_code=400 OR error_code=402 OR error_code=404 OR error_code=406...

searchコマンドでINを使う

searchコマンドには大きな改善がいくつか加えられましたが、そのうちの1つがIN演算子です。 IN演算子を使用すれば、フィールドに対して値のリストを指定できます。次の例をご覧ください。

    ... error_code IN (400, 402, 404, 406) | ...

サーチ文字列の最初で search コマンドが暗示されているため、指定する必要があるのはフィールド名と値のリストのみです。構文は以下のようにシンプルです。

    field IN (value1, value2, ...)

注意:IN演算子は大文字で記述する必要があります。ワイルドカードを値のリストで使用して、似ている値をサーチすることもできます。次の例をご覧ください。

    ... error_code IN (40*) | ...

このサーチは、イベント内の error_code フィールドを調べて、40で始まるコードを持つすべてのイベントを返します。

便利ですね!

searchコマンドでは、この機能は「IN演算子」と呼ばれます。一方、evalコマンドと where コマンドでは「IN関数」として実装されます。

evalコマンドおよびwhereコマンドでINを使う

evalコマンドと where コマンドでINを使用するには、INをeval関数として使用する必要があります。Splunkのドキュメントでは、「IN関数」と呼ばれています。

また、searchコマンドの場合とは、構文と使い方が若干異なります。

サポートされている構文オプションは以下のとおりです。

    ...| eval new_field=if(IN(field,"value1","value2", ...), "value_if_true","value_if_false")
    ...| where field IN("value1","value2", ...)
    ...| where IN(field,"value1","value2", ...)

注意:IN関数は、IN演算子とは異なり、大文字と小文字のどちらでも指定できます。このブログの構文と例では、IN関数をわかりやすく大文字で書いています。

では、比較的単純な where コマンドから説明しましょう。

次の例では、whereコマンドを使用して、statusフィールドのいずれかの値がリスト内のいずれかの値と一致した場合にIN=TRUEが返されるようにしています。statusフィールドの値はHTTPステータスコードです。このコードは数値ではなく文字列値であるため、各値を引用符で囲む必要があります。

    ... | where status IN("400", "401", "403", "404", "406")

この例は、次のようにも記述できます。

    ... | where IN(status,"400", "401", "403", "404", "406")

evalコマンドでのIN関数の使い方は、whereコマンドでの使い方とは異なります。evalコマンドはブール値を受け取れないため、IN関数によって戻されるブール値を処理できる別の関数の中でIN関数を使用する必要があります。

IF関数の最初のパラメーターとしてIN関数を使用する例を見てみましょう。 サーチチュートリアルのデータに含まれているaccess.logファイルを使用します。

次の例では、IN関数をIF関数と一緒に使用してactionフィールドを評価し、続いてstatsコマンドを使用して計算を実行しています。

    sourcetype=access_combined_wcookie 
    | eval activity=if(IN(action, "addtocart","purchase"),"Purchase Related","Other") 
    | stats count by activity

このサーチでは次のことを行っています。

結果は [Statistics (統計)] タブに表示され、Purchase Relatedアクティビティが発生したイベントの数と、Otherに分類されるアクティビティが発生したイベントの数がわかります。

結果テーブルができました。これをグラフで表示することもできます。[Visualization (可視化)]タブに切り替えて、グラフの種類を[Pie Chart (円グラフ)]に変更してみましょう。

このサーチをダッシュボードパネルやレポートとして保存することもできます。

リソース

詳細については、以下のSplunkのドキュメントをご覧ください。

このブログはこちらの英語ブログの翻訳、庄司 大助によるレビューです。

関連記事

トラブルシューティングのヒント:Splunkナレッジベース(Knowledge Base)のご紹介
Tips
2 分程度

トラブルシューティングのヒント:Splunkナレッジベース(Knowledge Base)のご紹介

Splunkユーザーの皆様が日々の運用で直面する疑問や課題を、よりスムーズに解消するためのリソース「Splunkナレッジベース(Knowledge Base)」をご紹介します。
Dashboard Studio:Dashboard Studioでの表示/非表示とトークンの評価方法
Tips
4 分程度

Dashboard Studio:Dashboard Studioでの表示/非表示とトークンの評価方法

Dashboard Studioでトークンを評価し、条件に基づいて表示/非表示を切り替える方法とその例をご紹介します。
書籍「Splunkエンジニアのための教科書」発刊に寄せて
Tips
3 分程度

書籍「Splunkエンジニアのための教科書」発刊に寄せて

本書では、Splunkの基本的な使い方から、セキュリティイベントの検出、運用管理の効率化、さらにAIを活用した高度な技術に至るまで、幅広いトピックを扱います。本書を通じて、Splunkを利用してシステムの健全性を監視し、障害の早期発見と対応、セキュリティ強化の方法を習得することができます。Splunkをどのように活用するか詳細に解説します。