【Splunk】lookupはExcelのルックアップみたいなことをしてくれる
lookupコマンドの説明を書きます。
以下の記事の派生記事です。
canada-lemon.hatenablog.com
lookupはExcelのルックアップと同じようなことをやってくれるコマンドです。
構文例
| lookup (ルックアップ名) <元データで基準にするフィールド> OUTPUT <追加するフィールド>
使用例1:HTTPステータスコードのメッセージを参照する
今まで紹介したコマンドとは異なり、lookupコマンドを使うには前準備としてルックアップ定義を作成する必要があります。
1.ルックアップ用のファイルを作成する
2.ファイルをSplunkにアップロードする
3.ルックアップ定義を作成し、ルックアップ用のファイルと関連付ける
1.ルックアップ用のファイルを作成する
以下のcsvファイルを用意します。
これは、HTTPステータスコードとそのメッセージ内容の対応表です。
status,message 200,OK 403,Forbidden 505,HTTP Version Not Supported
2.ファイルをSplunkにアップロードする
設定>ルックアップ>ルックアップテーブルファイル
から新規追加を選びます
宛先Appはそのまま、ファイルを選択
から先ほど作成したファイルをアップロードします。
宛先ファイル名は、今回はHTTPstatus.csv
とします。
3.ルックアップ定義を作成し、ルックアップ用のファイルと関連付ける
設定>ルックアップ>ルックアップ定義
から新規追加を選びます
宛先Appはそのままで、名前はHTTPstatus
とします。
タイプはファイルベースで、ルックアップファイルには先ほどのHTTPstatus.csv
を選び、保存します。
ここまでが前準備です。
作成したルックアップ定義を使ってみましょう。
以下のSPLを実行してダミーデータを用意します。
makeresults
ってなんぞや?という方は以下の記事をご参照ください。
canada-lemon.hatenablog.com
| makeresults format=csv data="status,count 200,100 401,50 403,20 504,70 505,10" | table status count
HTTPのステータスコードと、その件数を想定しています。
status | count |
---|---|
200 | 100 |
401 | 50 |
403 | 20 |
504 | 70 |
505 | 10 |
このままだと、ステータスコードに詳しくない人は、それぞれの数字が何を意味しているのかわかりません。
そこで、ルックアップコマンドを使います。
前準備で作成したルックアップファイルでは、ステータス200,403,505の説明が記載されていたはずです。
| makeresults format=csv data="status,count 200,100 401,50 403,20 504,70 505,10" | table status count | lookup HTTPstatus status OUTPUT message | table status message count
status | message | count |
---|---|---|
200 | OK | 100 |
401 | 50 | |
403 | Forbidden | 20 |
504 | 70 | |
505 | HTTP Version Not Supported | 10 |
このように、ステータス200,403,505の説明が追加されました。
備考1:ルックアップ定義に漏れはないように
ルックアップ定義に漏れがあると空欄が発生します。
今回だと、ステータス401,504はルックアップファイルに記載がないため、message列が空欄になっています。
単にtableコマンドを使った場合は空欄であることがわかりますが、statsなどの統計コマンドを使うとどうなるでしょうか。
| makeresults format=csv data="status,count 200,100 401,50 403,20 504,70 505,10" | table status count | lookup HTTPstatus status OUTPUT message | stats max(count) by status,message
status | message | max(count) |
---|---|---|
200 | OK | 100 |
403 | Forbidden | 20 |
505 | HTTP Version Not Supported | 10 |
statsの集計フィールドにmessageを使った結果、message列が空欄だったステータス401,504のデータが消えてしまいました。
今回のSPLは短いのでわかりやすいですが、長くて複雑なSPLになると、ルックアップ定義に漏れがあることで、気付かない間にデータがロストしてしまう可能性があります。
ルックアップ定義を作るときは要注意です。
本記事ではlookupコマンドの説明をしました。
ここまで読んでいただき、ありがとうございました。
Splunk頻出SPLシリーズ