GrafanaからSnowflakeに接続しよう！


この記事は[Snowflake Advent Calendar 2023](https://qiita.com/advent-calendar/2023/snowflake)シリーズ2の5日目です。  
アドベントカレンダーがみつしりだ！  

## Grafanaとは

GrafanaはGrafana Labs社が開発しているデータ可視化ツールです。  
時系列データを可視化してダッシュボードとして表示することが得意で、しばしばシステムの監視ツールとして用いられています。  

Grafanaには以下のようなサービスがあります。  

- 無料で使えるオープンソースソフトウェアであるGrafana OSS
- 強力な機能が解禁されるGrafana Enterprise
- Grafana Labs社が提供しているフルマネージドサービス、Grafana Cloud
- AWSが提供しているフルマネージドサービス、Amazon Managed Grafana

## Snowflake data source for Grafana

GrafanaからSnowflakeに接続するためのデータソースプラグインが用意されています。  
このプラグインは**Grafana Enterpriseで**利用できるEnterprise pluginというものの一つです。  

https://grafana.com/docs/plugins/grafana-snowflake-datasource/latest/

## 検証の準備

前述の通り、Snowflake data source for GrafanaはEnterprise pluginなのですが、Grafana CloudをCloud Proで契約すればEnterprise pluginを1つだけ無料で使うことが可能です。  
そしてCloud Proには14日間の無料トライアルがある…！  
さっそく登録してみましょう。  

![Preparation](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/9b67c21e-9d1a-3860-acbb-c3a6cbadad11.png)

準備完了！

## インストールと接続

Grafana Cloudは2023年12月現在はUIが日本語化されていませんが、そこまで難しいところはないので困らないでしょう。  
まず、```Connections```から新規接続していきます。```Snowflake```で検索するとデータソースプラグインが表示されます。  

![Plugin1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/86c7e650-3bf8-82e6-da44-5d6b3d254a91.png)

データソースプラグインの詳細ページを確認すると、```Install via grafana.com```というボタンがあるのでこれをクリック。  

![Plugin2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/4c71adaf-af65-22b6-3cdb-f1097972b7c1.png)

新しいタブでgrafana.comが開くので、ここで```Install plugin```をクリック。すぐにインストールが完了します。  

![Plugin3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/6dc0b66b-6a43-5f07-c5ee-ea4d06ac692b.png)
![Plugin4](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/06b9a82a-edde-9a56-fb42-3e5397db5b5d.png)

Grafana Cloudに戻れば先ほどインストールしたデータソースプラグインを選択できるようになっているはずなのですが、自分で検証したときはここでなぜか選択できなくて少しまりました…が、タブをリロードすると無事に選択できるように。  

![Datasources1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/d08555a3-8d51-f934-a1a5-4c6295c12f3b.png)

データソースプラグインを選択するともうデータソースを追加できるようです。  

![Datasources2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/32d7df9c-3b42-ea13-13a1-0fda4219f0a6.png)

データソースの設定画面ですが、ここはあまり困らないでしょう。細かい説明もポップアップするようになっています。  

![Datasources3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/387aa4c7-ca54-43cc-8b4f-411c6ae0abaf.png)

```Account```には```xx12345.ap-northeast-1.aws```のような値を設定します。  
分からない方は、Snowsightで```アカウントURLをコピー```したときにクリップボードにコピーされるURLから抜き出してきましょう。  

![Copy account URL](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/3dbae755-9429-1d79-7c75-3b6992022f1b.png)

最後に```Save & Test```をクリックして```Data source is working```のようなメッセージが表示されればOKです。

![Datasources4](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/11c0bfcf-f851-cb40-813d-589db7cc3ef7.png)

ダッシュボードに追加してみます。  

![Dashboard1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/8f21a6bd-d451-5585-3cec-cf35406e3b7b.png)
![Dashboard2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/8dfb2e29-1eeb-4d3c-c79e-568d957e5a5c.png)

なお、ダッシュボードに表示できるものは時系列のデータをクエリした結果です。  
具体的には、日時カラムを```as time```として命名してあげる必要があるようです。  

![Dashboard3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/ad19f33c-7b38-c44c-addd-168c6976dce4.png)

デフォルトのSnowflake Queryを参考に次のようなクエリを書いてみました。  
QUERY_HISTORYでクエリ実行時間を可視化するクエリです。  

```sql:Snowflake Query
SELECT 
	 $__timeGroup(START_TIME, $__interval) as time,
	 TOTAL_ELAPSED_TIME
 FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
 WHERE $__timeFilter(time)
```

無事にクエリ実行時間を確認することができました！  

![Result](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/27885465-4ad4-c845-9f3d-8c57c17c3a18.png)

## 感想

Grafana Enterpriseであれば非常に手軽にSnowflakeとGrafanaを接続することが可能です。  
例えば、Exporterで収集したシステムの稼働状況と、Snowflakeに流れてくる自社の売上データを一つのダッシュボードにまとめる…なんてことができるかもしれませんね！