BigQuery に格納したセンサーデータを Amazon Managed Grafana で可視化してみた
前回、AWS IoT SiteWise のデータを Amazon Managed Grafana で可視化してみました。
Grafana のプラグインによっては データソースとして SiteWise をサポートしていないものがあったので、今回は BigQuery をデータソースとした可視化を試してみました。
基本的には下記のドキュメントに沿った作業となりますが、一部うまくできない箇所があったので、ダッシュボードの作成まで実際に行った手順を紹介したいと思います。
全体の構成と前提
今回の全体構成は下記のとおりです。本記事では SiteWise ゲートウェイを使って工場の設備機器のデータが BigQuery に格納されていることを前提としています。
また、本記事では データの収集手順や BigQuery へのデータ格納手順などは紹介していません。記事の最後に参考記事を紹介していますので、他の設定手順等についてはそちらをご参照ください。
BigQuery に入っているデータは次のようなものになります。
サービスアカウントの準備
まず最初に、Managed Grafana が BigQuery にアクセスするためのサービスアカウントを作成します。
GCP のコンソールより「IAM と管理」を選択して「サービスアカウント」をクリックします。
次に画面の上側にある「サービスアカウントを作成」をクリックします。
最初の「①サービスアカウントの詳細」では、アカウント名などを設定します。
- サービスアカウント名:適当なものをセット
- サービスアカウントID:適当なものをセット
- アカウント名を入力すると自動的に入力されます
- サービスアカウントの説明:適当な説明を入力
「②サービスアカウントにプロジェクトへのアクセスを許可する」では、アカウントに付与する権限を指定します。今回は下記の2つをセットします。
- BigQuery ジョブユーザー
- BigQuery データ閲覧者
次の「ユーザーにこのサービスアカウントへのアクセスを許可」では下記の通り作成するサービスアカウントをセットしました。
サービスアカウントが作成できたら次にキーを作成するので、作成したサービスアカウントをクリックします。
「キー」タブを開きます。
「鍵を追加」をクリックして「新しい鍵を作成」を選択します。
「キーのタイプ」は「JSON」を選んで「作成」をクリックしてください。
ローカル PC の適当な場所を指定してキーを保存します。(保存できたらウィンドウを閉じます)
Managed Grafana の設定
GCP 側の作業が完了したので、次は Managed Grafana 側の設定を行います。
(事前に Managed Grafana のワークスペースが作成済みでログインできるものとします)
メニューの「設定」アイコンから「Data sources」を選択します。
「Data sources」タブで「Add data source」 をクリックします。
検索窓で BigQuery を探してクリックします。
開いた画面をスクロールすると認証設定の箇所があります。
「Authentication Type」に「Google JWT File」(デフォルト)を選択して、テキストエリアに先程ダウンロードした JSON キーファイルの中身をコピペします。
コピペすると以下のような表示に変わります。
問題なければ「Save & test」をクリックして BigQuery にアクセスできるかテストします。
問題なくアクセスできれば下記のように「Successfully queried the BigQuery API.」というメッセージを確認できます。
権限不足や GCP 側の設定が間違っていればエラーメッセージが表示されるので、ここで出力内容をしっかり確認しましょう。
無事に BigQuery に接続できることが確認できたら、ダッシュボードを作成していきます。
パネルを新規に追加します。
新しいパネルの編集画面が開いたら「Data source」に「Google BigQuery」を選択します。
クエリは BigQuery 内のデータに合わせてセットします。今回は下記の様にしました。
- FROM
- GCP プロジェクト名、データセット、テーブルを指定
- 入力しようとすると候補がサジェストされるので簡単に入力できます
- Time column
- BigQuey 上のデータで時刻データを持つカラムを指定します。
- これも候補から選択します。
- Metric column
- 表示するメトリックカラムを指定します。
- 今回はSiteWise の プロパティエイリアス の値を可視化したいので該当カラムの
propertyAlias
を選択します。
- 今回はSiteWise の プロパティエイリアス の値を可視化したいので該当カラムの
- 表示するメトリックカラムを指定します。
- SELECT
- 表示したいデータ値を持つカラムを指定
- WHERE
Macro: $__timeFilter
(デフォルト)- 追加で「温度」データのプロパティエイリアスだけ表示するように指定
- 今回は「1つのクエリだけで」全てのプロパティエイリアスの温度データを表示したかったので
LIKE 句
を使っています。propertyAlias LIKE '%Temperature'
最終的に下記のようなグラフとなり、無事に BigQuery 上のデータを Managed Grafana で可視化することができました。
最後に
前回に続いて Managed Grafana を試してみました。
データソースとしてサポートしているものが多く、可視化の表現方法も数多くあるので引き続き色々と試しみようと思います。
今回は BigQuery をデータソースとしましたが、まだ個人的に GCP に不慣れなので今回の設定が間違っているかもしれません。もし不備などあればご指摘いただけると幸いです。