Splunk Appを作成してダッシュボードをまとめよう


## 概要

ダッシュボードやレポートなどを作成していくと、ダッシュボード一覧から目的のダッシュボードを見つけるのに面倒になってきたので、SplunkAppを作ってまとめてみました。
意外と簡単にできて、しかも他の環境にも持ち運びが簡単にできるのでおすすめです。


## 早速開始

### Splunk App の作成
まずは、Appの新規作成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/4e148a8e-113d-f54f-976d-bd343bd12190.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/1415f57b-cdf9-2867-4310-0bc763f57838.png)

適当に Appの名前と $SPLUNK_HOME/etc/apps に作られるフォルダー名を作成します。
それ以外は任意設定です。テンプレートは barebones だとサンプルダッシュボードなどがないシンプルなものができます。こちらで問題ありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/04b3c4e3-a420-7f78-8a49-5057fcd5fa5c.png)

### Splunk Appの完成

なーんと、これだけでAppの完成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/e699e8b0-4e3e-f754-534d-13b091971d58.png)

ただこれだけだとつまらないので、上のバーのところをカスタマイズして目的のダッシュボードなどにすぐに飛べるように設定したいと思います。

こちらのデフォルトバーを変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/062e7d48-9b40-c25a-fb9c-5416227d6038.png)


### バーの編集

「設定」ー「ユーザーインターフェース」ー「ナビゲーションメニュー」ー「myapp の default を選択」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/c9020fa8-c4f9-aa21-9f17-8520a6d2605c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/b058294e-77cd-4cc6-c67f-ac8e2738c956.png)

対象アプリ(myapp)をリストから選択します。

すると、下のような編集画面が現れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/6c77e711-ce9a-bf9d-1600-5089c0f4c1fc.png)


こちらを下記のように編集します。

```
<nav search_view="search" >
   <view name="search" default='true' />
   <a href="myapptest" >MyApp Dashboard</a>
   <collection label="定義ファイル">
         <a href="sub_link_1">Sub Link 1</a>
         <a href="sub_link_2">Sub Link 2</a>
   </collection>
   <collection label="Default Menu">
       <view name="reports" />
       <view name="alerts" />
       <view name="dashboards" />
   </collection>
   <a href="https://www.splunk.com/ja_jp">Splunk HP</a>
</nav>
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/420374bc-f3d6-cc7a-fcc1-1ba258c6f2d1.png)


保存して、再度 MyAppを見ると下記のようになってました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/76fd43d6-9514-2473-b138-c104f3b6988c.png)


(*注意) 
リンク先のダッシュボードは、作成されたアプリ(今回はmyapp)からアクセスできる権限がないといけないので、permision設定に注意ください。

#### 編集内容の説明

ここで一旦、どんな編集をしたかを整理します。

```
<a href="myapptest" >MyApp Dashboard</a>
```
こちらは、直接既存のダッシュボード (myapptest) に移動するリンクです。 href= のところに既存のdashboard idを記入してください。
通常は dashboard へのリンクの場合は 

```
<view name="myapptest" /> 
```
を使うようですが、表示をカスタマイズできなかったので、href の方法でやりました（もしやり方があれば教えてください）

また通常のHTMLと同じように、外部のサイトのURLなども記入が可能です。

```
<a href="https://www.splunk.com/ja_jp">Splunk HP</a>
```

ドロップダウンメニューのように、グループ化したい場合は下記のようにします。

```
   <collection label="定義ファイル">
         <a href="sub_link_1">Sub Link 1</a>
         <a href="sub_link_2">Sub Link 2</a>
   </collection>
```
すると、下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/e017f152-cbf9-05d7-3b82-a360864cf615.png)

その他、レポートの指定は下記のようにします。

```
<saved name="report1" />
```

詳細はこちらをご覧ください。
https://dev.splunk.com/enterprise/docs/developapps/addnavsplunkapp/


## 設定ファイルについて

先ほど設定したファイルは、 default.xml というファイルに保存されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/eafab39b-4d9f-eb30-ed5d-6df1ba0df7ff.png)

local フォルダー内の default.xml　が変更されます。また直接ファイルを編集可能ですが、その場合は splunkの再起動か設定ファイルの再読み込みが必要です。

``` :再起動なしで再読み込みする場合
http://YOUR_SERVER:8000/en-US/debug/refresh?entity=/data/ui/nav
```


## 作成したAppを package として export する場合

作成した Appは、他の環境に持ち出し可能です。

```
/opt/splunk/bin/splunk package app myapp
Splunk username: admin
Password:
App 'myapp' is packaged.
Package location: /opt/splunk/etc/system/static/app-packages/myapp.spl 
```
このmyapp.spl を通常のAppと同じようにSplunkに追加すればOKです。

(*) もし、一般公開する場合は設定ファイル類を local フォルダーから default フォルダー配下に移動しておく必要があります。

また、今回はダッシュボードをまとめるためだけにAppを作成しましたが、他にもAppには色々なものを含めることができます。詳細はこちらのマニュアルをご確認ください。
https://dev.splunk.com/enterprise/docs/developapps/createapps



## まとめ
これまで、Appを作るのって面倒かなと思ってましたが、作ってみると（今回のケースに関しては）めちゃくちゃ簡単にできました。
システム単位や部署単位などで Appにまとめておけば便利だし、なんで今までやらなかったのだろーかと後悔しました。まだ作った事がない方は是非トライしてみてください。