BigQuery に格納したセンサーデータを Amazon Managed Grafana で可視化してみた

Amazon Managed Grafana で BigQuery も可視化できるんやで。
2022.08.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

前回、AWS IoT SiteWise のデータを Amazon Managed Grafana で可視化してみました。

Grafana のプラグインによっては データソースとして SiteWise をサポートしていないものがあったので、今回は BigQuery をデータソースとした可視化を試してみました。

基本的には下記のドキュメントに沿った作業となりますが、一部うまくできない箇所があったので、ダッシュボードの作成まで実際に行った手順を紹介したいと思います。

全体の構成と前提

今回の全体構成は下記のとおりです。本記事では SiteWise ゲートウェイを使って工場の設備機器のデータが BigQuery に格納されていることを前提としています。

00-BigQuery-Managed-Grafana

また、本記事では データの収集手順や BigQuery へのデータ格納手順などは紹介していません。記事の最後に参考記事を紹介していますので、他の設定手順等についてはそちらをご参照ください。

BigQuery に入っているデータは次のようなものになります。

25-bigquery-data

サービスアカウントの準備

まず最初に、Managed Grafana が BigQuery にアクセスするためのサービスアカウントを作成します。
GCP のコンソールより「IAM と管理」を選択して「サービスアカウント」をクリックします。

01-gcp-iam

次に画面の上側にある「サービスアカウントを作成」をクリックします。

02-make-service-account

最初の「①サービスアカウントの詳細」では、アカウント名などを設定します。

  • サービスアカウント名:適当なものをセット
  • サービスアカウントID:適当なものをセット
    • アカウント名を入力すると自動的に入力されます
  • サービスアカウントの説明:適当な説明を入力

03-detail-service-account

「②サービスアカウントにプロジェクトへのアクセスを許可する」では、アカウントに付与する権限を指定します。今回は下記の2つをセットします。

  • BigQuery ジョブユーザー
  • BigQuery データ閲覧者

04-add-roles

次の「ユーザーにこのサービスアカウントへのアクセスを許可」では下記の通り作成するサービスアカウントをセットしました。

05-allow-access

サービスアカウントが作成できたら次にキーを作成するので、作成したサービスアカウントをクリックします。

06-click-service-account

「キー」タブを開きます。

07-select-key-tab

「鍵を追加」をクリックして「新しい鍵を作成」を選択します。

08-add-make-key

「キーのタイプ」は「JSON」を選んで「作成」をクリックしてください。

09-select-json-format

ローカル PC の適当な場所を指定してキーを保存します。(保存できたらウィンドウを閉じます)

10-download-json-key

Managed Grafana の設定

GCP 側の作業が完了したので、次は Managed Grafana 側の設定を行います。
(事前に Managed Grafana のワークスペースが作成済みでログインできるものとします)

メニューの「設定」アイコンから「Data sources」を選択します。

11-select-datasource

「Data sources」タブで「Add data source」 をクリックします。

12-add-data-source

検索窓で BigQuery を探してクリックします。

13-select-bigquery

開いた画面をスクロールすると認証設定の箇所があります。
「Authentication Type」に「Google JWT File」(デフォルト)を選択して、テキストエリアに先程ダウンロードした JSON キーファイルの中身をコピペします。

14-paste-json-key

コピペすると以下のような表示に変わります。

15-after-paste-json

問題なければ「Save & test」をクリックして BigQuery にアクセスできるかテストします。

16-save-test

問題なくアクセスできれば下記のように「Successfully queried the BigQuery API.」というメッセージを確認できます。
権限不足や GCP 側の設定が間違っていればエラーメッセージが表示されるので、ここで出力内容をしっかり確認しましょう。

17-success-query-api

無事に BigQuery に接続できることが確認できたら、ダッシュボードを作成していきます。

20-make-dashboard

パネルを新規に追加します。

21-add-new-panel

新しいパネルの編集画面が開いたら「Data source」に「Google BigQuery」を選択します。

22-select-bigquery

クエリは BigQuery 内のデータに合わせてセットします。今回は下記の様にしました。

  • FROM
    • GCP プロジェクト名、データセット、テーブルを指定
    • 入力しようとすると候補がサジェストされるので簡単に入力できます
  • Time column
    • BigQuey 上のデータで時刻データを持つカラムを指定します。
    • これも候補から選択します。
  • Metric column
    • 表示するメトリックカラムを指定します。
      • 今回はSiteWise の プロパティエイリアス の値を可視化したいので該当カラムの propertyAlias を選択します。
  • SELECT
    • 表示したいデータ値を持つカラムを指定
  • WHERE
    • Macro: $__timeFilter(デフォルト)
    • 追加で「温度」データのプロパティエイリアスだけ表示するように指定
    • 今回は「1つのクエリだけで」全てのプロパティエイリアスの温度データを表示したかったので LIKE 句を使っています。
      • propertyAlias LIKE '%Temperature'

23-set-query

最終的に下記のようなグラフとなり、無事に BigQuery 上のデータを Managed Grafana で可視化することができました。

24-bigquery-grafana-dashboard

最後に

前回に続いて Managed Grafana を試してみました。
データソースとしてサポートしているものが多く、可視化の表現方法も数多くあるので引き続き色々と試しみようと思います。

今回は BigQuery をデータソースとしましたが、まだ個人的に GCP に不慣れなので今回の設定が間違っているかもしれません。もし不備などあればご指摘いただけると幸いです。

参考リンク