Splunk: ワークフローの使い方


###### 実施環境： Splunk Free 8.2.2

### 0. 概要

 Splunk には、ワークフローという機能があります。
これは stats コマンド等を使用しない単純な検索時に使用できる機能で、フィールドの値を Splunk の内部/外部に受け渡すことができます。
この機能を利用すると、例えば発見したエラーメッセージをそのまま検索したり、問題のありそうなホストに絞ってログを調査したりすることが可能です。
今回はこのワークフローという機能について紹介します。

### 1. ワークフローの種類

ワークフローには大きくわけて3つの種類があります。

* 外部への受け渡し
    *  GET ： URL の末尾にパラメータを入れる
    *  POST ： 「メッセージボディ」にパラメータを入れる
* 内部への受け渡し
    *  Search ： SPL にパラメータを入れる

 GET / POST の細かい説明はここでは省きます。
詳しく知りたい方は、「 HTTPリクエスト」等のキーワードで検索してください。
今回は、 GET と Search について作成してみます。

### 2. 外部への受け渡し

まずは、外部への受け渡しを行うワークフローを作成してみます。
今回は GET で作成してみましょう。

「設定」⇒「フィールド」を選択します。

![WS000442.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/40908505-5ffc-5252-10d0-6274b6617851.jpeg "設定")

「ワークフローアクション」を選択します。

![WS000443.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/22170a37-2047-3a3e-4136-16547179b9d6.jpeg "フィールド")

ワークフローの一覧が開くので、右上の「新しいワークフローアクション」を押します。

![WS000444.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3177a7b4-3dd2-6749-35c0-43c0b6924725.jpeg "ワークフロー一覧")

すると、ワークフローの作成画面が開きます。

![WS000445.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a7739824-4a7b-1134-ce7f-58a4d4929b0a.jpeg "ワークフロー作成")

今回は、以下のように指定して作成してみます。
なお、`$`で囲っている箇所には、そこで指定したフィールドの値が代入されます。

|項目|値|
|:-|:-|
|宛先App | search |
|名前| test_post |
|ラベル| `Google Search for : $reason$` |
|アクションの表示先|イベントメニュー|
|アクションタイプ|リンク|
| URL | `https://www.google.co.jp/search?q=$reason$` |
|リンクの表示先|新規ウィンドウ|
|リンク方法| GET |

一覧に先ほど作成したワークフローが表示されます。

![WS000500.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ac182a59-3993-00cd-b8f1-979465a01cc5.jpeg "ワークフロー作成確認")

さて、実際に作成したワークフローを使用してみましょう。
 App 「 Search & Reporting 」で以下の SPL を実行します。

```Splunk:Splunk
index="_internal" source="*splunkd.log"
| where isnotnull(reason)
```

検索されたデータの1つを開いてみます。

![WS000502.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/068aba3a-3da8-ba6a-c40e-af5cb795f4e3.jpeg "検索結果")

「イベントアクション」を選択すると、先ほど作成したワークフローのラベルが表示されていることがわかります。

![WS000503.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b1a304ca-9577-5b89-d722-d15b91e981a4.jpeg "イベントアクション1")

これをクリックすると、以下のように Google でエラーメッセージを検索できました。

![WS000504.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f41ec938-d5fc-769c-b978-fc7df7a319e5.jpeg "GET")

 POST の場合は、「リンク方法」を「 POST 」に変えるだけであとはほぼ同様に作成、利用可能です。

### 3. 内部への受け渡し

次に、内部への受け渡しを行うワークフローを作成してみます。
以下のように指定してワークフローを作成します。

|項目|値|
|:-|:-|
|宛先App | search |
|名前| test_search |
|ラベル| `Splunk Search for : $host$` |
|アクションの表示先|イベントメニュー|
|アクションタイプ|サーチ|
|サーチ文字列| `index="_internal" source="*metrics.log" host="$host$"` |
|サーチの実行|新規ウィンドウ|

先ほどと同じ SPL を実行して「イベントアクション」を開くと、以下のように先ほど作成したラベルが表示されます。

![WS000506.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cedaf69f-139a-1082-9e27-bfd3f3f6b91a.jpeg "イベントアクション2")

これをクリックすると、以下のように該当ホストの metrics.log を検索することができました。

![WS000507.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/530de154-dd90-a973-bf17-3b805eb48baa.jpeg "Search")

### 4. 表示場所の変更

ちなみに上記では「イベントアクション」からワークフローを実行していますが、「アクションの表示先」を「フィールドメニュー」に変更すると「アクション」から実行することができます。

![WS000505.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/8061d73a-a8b0-4675-0fbd-6e049233d352.jpeg "フィールドメニュー")