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

4-7 マクロの作成と管理

1. サーチマクロとは

サーチマクロ(Search Macro)とは、よく使うSPLの断片に名前を付けて再利用できるようにする仕組みです。 同じような条件やコマンドの並びを何度も書いていると、タイプミスが増え、あとから直すのも大変になります。 その共通部分をマクロとして一度定義しておけば、名前を呼び出すだけで展開されるため、 サーチの共通化と保守性の向上に役立ちます。

2. マクロの定義と呼び出し

マクロは「設定 > 高度なサーチ > サーチマクロ」から作成します。 定義するのは、名前と、そこに展開されるSPLの文字列(定義)です。

たとえば、Webエラーだけを抜き出す条件を web_errors という名前で定義するとします。

マクロ定義 ― web_errors
index=web status>=400

サーチの中では、マクロ名をバッククォートで囲んで呼び出します。 呼び出した箇所は、実行時に定義した文字列へそのまま置き換えられます。

SPL ― マクロの呼び出し
`web_errors` | stats count by status

このサーチは、実行時には index=web status>=400 | stats count by status と同じ意味になります。

マクロは単なる文字列の置き換えです。index指定やコマンド、evalの式など、SPLのどの部分でも切り出してマクロにできます。

3. 引数付きマクロ

マクロには引数を持たせ、呼び出すたびに値を変えることもできます。 定義側では、受け取る値を $引数名$ の形で埋め込みます。

たとえば、指定したホストのエラー件数を数えるマクロを考えます。

マクロ定義 ― errors_by(host)
index=web host="$host$" status>=400 | stats count

呼び出すときは、マクロ名のうしろにカッコを付けて値を渡します。

SPL ― 引数を渡して呼び出す
`errors_by(web01)`

これは実行時に index=web host="web01" status>=400 | stats count へ展開されます。

引数付きマクロは、名前に引数の数を添えて管理されます。上の例は引数が1つなので、設定画面上の名前は errors_by(1) となります。同じ errors_by でも引数の数が違えば別のマクロとして扱われます。

4. まとめ

  • サーチマクロはよく使うSPLの断片に名前を付けて再利用する仕組み
  • 定義は「設定 > 高度なサーチ > サーチマクロ」、呼び出しはバッククォートで囲む
  • 引数付きマクロは定義側で $引数名$ で受け、名前(値) の形で渡す
  • 引数付きは errors_by(1) のように引数の数を添えて管理される