2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS IoT SiteWiseとAmazon Managed Grafanaの連携は超簡単

Posted at

AWS IoT SiteWiseとAmazon Managed Grafanaを連携させてみます。

本手順の前提条件

  • AWS SSOのユーザが既に作成されていること
  • Managed Grafanaのバージョン:8.4

IoT Sitewise

まず、デモデータを用意します。
AWSマネジメントコンソールのIoT SiteWiseを開きます。
ランディングページでボタン1発で数日間利用可能なデモデータを生成することができます。
作成すると以下のように風力発電のアセットが確認できます。
image.png

Managed Grafana

初期設定

Amazon Managed Grafanaを開き、ランディングページにて「ワークスペースを作成」をクリックします。
image.png

認証に利用できるのはAWS SSOか、SAMLかのいずれかです。
今回は、AWS SSOユーザでマネジメントコンソールにログインしているため、SSOを選択します。
(なお、本例のAWS SSOは親アカウントのバージニア北部リージョンで設定されています。一方、SiteWiseやGrafanaは東京リージョンです)
「アクセス許可タイプ」は、今回は「サービスマネージド」を選択します。
image.png

「IAMアクセス許可アクセス設定」は「現在のアカウント」が選択されているので、そのままにします。

image.png

「データソースと通知チャネル」は「AWS IoT SiteWise」を選択します。
これにより、Grafana用のIAMロールに、IoT SiteWiseへのReadonlyポリシーが付与されます。
image.png

「通知チャネル」はAmazon SNSを選択します。
これにより、Grafana用のIAMロールに、AWS SNSの「grafana*」がついたトピックへのPublish可能なポリシーが付与されます。
image.png

確認画面がでますので、「ワークスペースを作成」をクリックします。

image.png

ワークスペースが作成されたら、Grafanaへのログインユーザの設定をしていきます。
対象のワークスペースの「認証」タブの「AWS SSO」より、「新しいユーザーまたはグループの割り当て」をクリックします。
image.png

ここでリストアップされるユーザはAWS SSOから取得されたものだと思われます。
いまマネジメントコンソールにログインしているSSO用のユーザが表示されたので、それを選択し「ユーザーとグループを割り当て」をクリックします。
image.png

割り当てたユーザを管理者に変更します。
image.png

AWS SSO

AWS SSOのログインURLにアクセスすると、Grafana用のアイコンが作成されているのでクリックします。
image.png

Managed Grafana コンソール

Grafanaにログインできました。
image.png

データソースの設定

データソースを設定していきます。
左ペインの「AWS」アイコンから、AWS Data Sourcesとして、「AWS services」を選択します。
image.png

データソースのサービスに「IoT SiteWise」を選択します。
image.png

参照したい SiteWiseがデプロイされているリージョンを選択し、「Add data source」をクリックします。
image.png

「Go to settings」をクリックします。
image.png

「Settings」タブでは、デフォルトのまま「Save & test」をクリックします。
image.png

GrafanaがIoT Sitewiseに正常に接続できると、「OK」が表示されます。
image.png

ダッシュボードの作成

左の+メニューをクリックし、[Add a new panel]を選択します。

image.png

デフォルトではGrafanaのサンプルデータが選択されています。

image.png

「Data source」を選択し、該当リージョンの IoT SiteWiseを選択します。
「Query type」の選択肢から「Get property value aggregates(集計値)」を選択してみます。

このように、実際のデータを選択する前に「データの取り方」を先に選択するのが、ちょっとトリッキーに感じました。
実際のデータを見てからでないと、集計したいかどうかなんて決定できないですし。
後述しますがSiteWiseのAPI仕様に基づくものなので、致し方ないですね。

image.png

このQuery typeは、データソース毎に異なるようです。
https://grafana.com/docs/grafana/latest/panels/query-a-data-source/about-queries/
RDBMSなどであれば普通にSQL文として解釈できるQueryTypeになるようですが、今回はIoT Sitewiseがデータソースなので、SiteWiseのデータ取得関数にあわせたクエリタイプになっています。

Quety type 意味 詳細(SiteWiseの関数仕様)
Get property value aggregates 集計の値 https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html
Get property value history 過去の値 https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html
Get property value 現在の値 https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html
List assets SiteWiseアセットのリスト https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html
List asset models SiteWiseアセットモデルのリスト https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html

では、「Asset」の選択肢から「Demo Wind Farm Asset」を選択してみます。
これはSiteWiseにおける「アセット」としてデモデータが作成したデータです。

image.png

先程選択した「アセット」の「プロパティ」(このへんもSiteWiseの概念)として、実際のデータとして発電量の合計値を選択します。

image.png

また、QuetyTypeで集計値を選択したので、[Aggregate]という選択項目が出現しています。
とりあえずグラフを表示したいだけなので、[Average]を選択してみますが、値の数(Count)、最大値(Max)、最小値(Min)、合計値(sum)、標準偏差(Stddev)などが選択できるようです。

この集計単位もSiteWiseで定義された集計機能に基づくもののようです。
https://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/query-industrial-data.html#aggregates
https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Aggregates.html

image.png

Aggregateの右側に[Resolution]という項目があり、ここで集計範囲を指定できます。

日時分が指定できますが、[Auto]の場合は「時間枠に基づいて解像度を選択します。1分 を超える解像度が必要な場合は、生データに切り替えます」ということらしいです。表示の目盛りにあわせてくれるということでしょうかね?今度検証してみようと思います。

image.png

グラフ右上に表示する時間範囲を指定できます。
今回はデモデータを作成したばかりで、デフォルトの範囲だと何も表示されなかったので、1時間にしてみました。

image.png

対象のグラフが出てきました。

image.png

料金体系について

Grafanaの課金はユーザ数単位になっており、AWSでいうとQuickSightに似ています。
サーバレスなのでインスタンスやクラスタの料金はかかりません。

所感

AWSの時系列グラフ化サービスでは、これまでAmazon OpenSearch Service(旧Amazon ElasticSearch Service)が使われるケースがありましたが、OpenSearchはデータの腹持ちができるかわりにクラスタの料金が高額だったり、データ投入にあたりインデックス等の概念を理解しないといけなかったり、kibanaの認証設定が難解だったりと、素早く可視化を行うには不便な点が多くありました。

Managed Grafanaは、データソースに簡単に連携できるようになっていますし、本例でみたようにAWS SSOであれば非常に簡単に認証ができます。

いっぽう、Grafanaはデータの腹持ちができないためのでデータソースとして別途高速なデータストアが必要な点は注意が必要になりそうです。
GrafanaはWeb上に日本語の情報が少ないことも注意が必要です。日本語書籍も出ていないように見えますので、割と自力で学習する必要があります。

また、本家のGrafana Cloudでは「Grafana Incident」というインシデント管理機能がリリースされています。

image.png

この機能はサーバ障害のインシデント対応のみならず、工場のラインの停止(通称チョコ停・ドカ停)の分析にも役立つのではと、個人的に大変期待しており、Amazon Managed Grafanaへの実装を激しく待ち望んでいます。

以上です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?