Splunk Observability CloudのメトリクスをSplunk Coreに取り込む

## はじめに

Splunk Core（Enterprise / Cloud）を使っていて、Observability Cloud（以下o11y cloud）も利用している、その時にCore側のダッシュボードでo11y cloudのデータも一緒に表示したいなと思ったときの方法です。

1. Infrastructure Monitoring Add-on
SPLからo11y cloudのメトリクスを取得する方法です。Data inputとしても動作させられるので、一時的 or Index化のどちらも可能です。

1. Dashboard Studio
最近追加された機能で、Dashboard Studioからo11y cloud上のメトリクスを簡単に選択、取得することができます。


それでは見ていきましょう。


## Infrastructure Monitoring Add-on

### 事前準備

まずAdd-onをインストールします。

https://splunkbase.splunk.com/app/5247

その後にAdd-onを開き、設定 > Connect an Accountからo11y cloudのRealmとAccess Token（API）を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/334a928d-24ba-3f08-1fb8-f85b311a71dc.png)

無事登録されればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/c0557563-c7f0-310f-9576-b52d333c859c.png)


### 取り込んでみよう（simコマンド）

Add-onをインストールすると`|sim`コマンドが使えるようになります。
これは、o11y cloudのSignalFlow（後述）をSPLで実行することができるものです。

https://docs.splunk.com/Documentation/SIMAddon/latest/Install/Commands

こちらでo11y cloud上のメトリクス、もしくはDetectorで発行されたアラートも取得できます。


#### SignalFlowとは？

メトリクスの分析に特化したo11y cloudで使われる言語です。

一番簡単な例はこちらで、cpu.utilizationというメトリクスを表示する、というものはこうなります。

```
data("cpu.utilization").publish();
```

これに対してフィルターや関数をかける場合は以下のようになります。

```
data("cpu.utilization"), filter=filter('demo_customer', 'zibobodesign.net')).max().publish(label='A')
```

詳細はこちら。

https://dev.splunk.com/observability/docs/signalflow/


#### 既存のチャートからSignalFlowの取得

ただし、一からSignalFlowを組むことはあまりありません。
代わりに既存のチャートから簡単にSignalFlowを取得することができます。

まずチャートのタイトルをクリックしてエディターを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/9571b877-a502-2294-dea6-1db48b4ca0ef.png)

Veiw SignalFlowをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/636859b5-63c9-b69c-ec68-8b40897bd0e1.png)

するとSignalFlowが出力されます。これをコピーすればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/1b6cefca-5d2a-0cc1-a8e2-7e4078b093f4.png)


### |simコマンドで取得する

`|sim`コマンドの内、flowを使います。
諸々オプションはありますが、もっともシンプルには以下でOKです。

```
| sim flow query="SignalFlow"
```

コピーしたもので試してみましょう。

```
| sim flow query="A = data('demo.trans.latency').max().publish(label='A')
B = data('demo.trans.latency').percentile(pct=50).publish(label='B')
C = data('demo.trans.latency').min().publish(label='C')"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/1102519c-ec0a-f327-c80e-fb643d4ce318.png)

このようにSplunkからo11y cloudへクエリを投げ、メトリクスを取得できました。
後は通常のSPLで処理できます。


### Data Inputで取得する

`|sim`コマンドはIndexに蓄えることはありません。
もしIndexに保存したい場合はData Inputを使えます。

設定 > データ入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/dcf1ceda-b6f5-b8ff-c3ae-d9e2b160beb1.png)

「Splunk Infrastructure Monitoring Data Streams」を開きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/8b3bdb40-50d6-b142-6d0f-1ac2672d1da3.png)

いくつかサンプルがありますね。今回は新しく作ってみましょう。「新規」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/143398f0-5f56-2d98-fd96-779e83830c62.png)


適当に名前を付け、SignalFlow ProgramにSignalFlowをコピペ。
複数行ある場合は`;`で区切りましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/20269b20-6636-1cd7-2663-559d05ba486b.png)


どこのIndexに保存されるの？という疑問は、その他の設定の中にあります。
Add-onインストール時に作成される`sim_metrics`というMetric Indexです。
もちろん他のIndexに変更することもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/a778f2ba-d242-e1cd-e11b-5c71236341aa.png)

次へを押すと設定完了です。
ただし、まだ有効化されていないのが注意です。

もう一度Data Inputを開き（ブラウザバックがお勧め）、「有効化」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/55ac6b8d-fb54-ddac-8907-5057c7638804.png)


時間が経つといい感じに取れました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/a0f3ba7d-4066-5f58-5121-a841d843d7fa.png)

Metricsなので`| mstats`系を使うか、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/8806d203-0e7d-f87c-603f-2e86ddda4929.png)


「アナリティクス」機能を使いましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/ea6cc332-5a54-1c73-9f8d-5c02c3686781.png)




## Dashboard Studio (現状Splunk Cloudのみ)

Splunk Cloudユーザーはもう少しお手軽なことができます。
Dashboard Studioで直接メトリクス名を指定してグラフを作ることができます。

### 事前準備

Appの`Discover Splunk Observability Cloud`を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/d7756184-02c5-5e60-2bd4-c1fddd02d292.png)


RealmとAccess Token（API）を入力して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/88409862-8ebe-44b3-cb94-32c5eb2ddfb2.png)


### Dashboard Studio

Dashboard Studioでラインチャートなど置いてみると、データソースに「Splunk Observability Cloud metric search」というメニューが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/97045f8a-9a4b-edf4-7cfd-08ce51dac46f.png)


Search for metric or metadataに取得したいメトリクス名を入力すると検索されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/d4ee6d1c-4468-dfbd-39e3-cbd4aa85e8e0.png)

フィルタ条件、関数も適用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/d3768f8a-fbb5-d6ec-d11d-e94d5b121f91.png)

「適用して閉じる」をするとグラフが作られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/9775e5b8-1ac6-5887-9dfd-24f97c9f1478.png)


既存のo11y cloudのチャートを丸ごとコピーしたい場合、Content importをクリックして

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/51f243bc-f2e3-aeb5-2f80-8f65b98a9432.png)

ChartのURL（タイトルをクリックして開くページ）を貼り付け、Importします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/a4c6cb06-c841-af8f-c6ac-11e8afc78984.png)

すると各フィルタ条件などを引き継いでチャートが作られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1218403/cfa25e7d-acb7-461c-e690-5acf72960e6d.png)

※注意としてOOTBのダッシュボードの場合はChartを開くとコピー状態になり、そのURLだとうまくいきません。一旦自分のダッシュボードに張り付けてから改めてURLを取得する必要があります。


## おわりに

o11y cloudのメトリクスを取得する方法をまとめました。
Splunkで何でも集めて可視化しちゃいましょう。

Happy Splunking!