【Splunk】searchはログを検索する

searchコマンドの説明を書きます。
以下の記事の派生記事です。
canada-lemon.hatenablog.com

searchはその名の通りログを検索するコマンドです。

SPLを実行するとき、先頭に他のコマンドがない場合は、暗黙的にsearchコマンドが使われています。 例えば、| search index=_internalと入力してSPLを実行すると、最初のsearch部分が自動的に省略されてindex=_internalになります。

構文例
| search (検索したい条件)

使用例1:内部ログを検索する

以下のようなSPLを入力することで、Splunk自体のログを検索できます。

index=_internal sourcetype=splunkd "INFO"

上の例では、indexとsourcetypeを指定した上で、"INFO"という文字列を含むログを検索しています。

使用例2:生徒名で検索する

searchを使って生徒を検索してみます。

以下のSPLを実行してダミーデータを用意します。
4人の生徒の英数国の点数です。
makeresultsってなんぞや?という方は以下の記事をご参照ください。
canada-lemon.hatenablog.com

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
Class Name English Math Japanese
2年1組 Alfred 90 60 70
2年1組 Gascoigne 80 80 80
2年2組 Gehrman 60 100 50
2年2組 Ludwig 70 70 90

ワイルドカードを使って、NameがAで始まる生徒を検索してみます。

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
| search Name=A*
Class Name English Math Japanese
2年1組 Alfred 90 60 70

このように、Alfredのみが表示されました。

ちなみに、whereを使って同様の検索をする場合はこうなります。

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
| where LIKE(Name,"A%")

searchのほうがシンプルに書けますね。

備考1:サブサーチでsearchコマンドを忘れないように

joinなどでサブサーチを行うとき、SPLの構造は以下のようになります。

サーチ文A
| join [サーチ文B]

このとき、サーチ文Aの先頭にはsearchが不要ですが、サーチ文Bには必要です。AとBをそれぞれ独立して検索し、後でサブサーチとして結合する書き方にしていると、うっかり忘れがちです。(10敗)

本記事ではsearchコマンドの説明をしました。
ここまで読んでいただき、ありがとうございました。

Splunk頻出SPLシリーズ