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サーチコマンド > stats、chart、timechart
Tips
9 分程度

Splunkサーチコマンド > stats、chart、timechart

Splunkを使用し始めた方向けに、Splunkのサーチコマンド(stats, chart, timechart)を紹介します。このブログを読めば、各サーチコマンドのメリットをよく理解し、使い分けることができます。また、BY句を指定するときのstats、chart、timechartコマンドの違いについてご説明します。
Dashboard Studio:タブ形式のダッシュボード
Tips
5 分程度

Dashboard Studio:タブ形式のダッシュボード

Splunk Cloud Platform 9.2.2406のDashboard Studioでは、ダッシュボードの設計作業を効率化および改善するさまざまな新機能が追加されました。
ダッシュボード設計:視覚オブジェクトの選択と設定
Tips
6 分程度

ダッシュボード設計:視覚オブジェクトの選択と設定

ダッシュボードを初めて作成する場合でも、最新のベストプラクティスをお探しの場合でも、こちらのブログをぜひご覧ください。データからインサイトを引き出す効果的なSplunkダッシュボードを設計して作成する方法を学べます。視覚オブジェクトの選択と設定についての役に立つヒントもご紹介します。