目次
はじめに
こんにちは、omkです。
前回はIoT SiteWiseでアラームを作成してダッシュボードに反映しました。
AWS IoT SiteWise Monitorのダッシュボードでアラームを可視化!!(前)
今回は包括的なアセットの確認やより上位階層視点での状態の確認が出来るように個々で存在するアセットを親アセットに紐づけてダッシュボード化します。
シリーズ
- PythonでOPC UAで通信してみた
- AWS IoT SiteWiseとOPC UAサーバをセルフホストゲートウェイで連携!!
- AWS IoT SiteWise Monitorのダッシュボードでアラームを可視化!!(前)
- AWS IoT SiteWise Monitorのダッシュボードでアラームを可視化!!(後) ←今ここ
やってみた
前回までは以下のデータ構造で各機器のリソース使用状況が連携されます。
Client_A、Client_Bはそれぞれ同一のモデルに紐づいたアセットとして作成しています。
root/
├─ Client_A
│ ├─ CPU_USAGE
│ ├─ MEM_USAGE
│ └─ SWAP_USAGE
│
└─ Client_B
├─ CPU_USAGE
├─ MEM_USAGE
└─ SWAP_USAGE
今回は実現したい内容に合わせてOPC UAサーバから以下のデータ構造に変更しました。
変更しなくてもSiteWise上だけで対応できそうでしたが一応揃えておきました。
root/
└── Clients
├─ Client_A
│ ├─ CPU_USAGE
│ ├─ MEM_USAGE
│ └─ SWAP_USAGE
│
└─ Client_B
├─ CPU_USAGE
├─ MEM_USAGE
└─ SWAP_USAGE
今までのデータ構造ではClient_A、Client_Bを個別にしか確認することは出来ませんでした。
今回はClients配下に各クライアントが所属する構造に変更することで、Clientsに各Clientを集約して包括的に管理出来るようにします。
また、この構造の変更に合わせてSiteWise側でアセットのエイリアスも変更しています。
親モデルの作成
階層構造を表現するのに親となるモデルを作成します。
今回はClient_A、Client_Bが利用する個別のClient用のモデルは既に作成していますのでClients(親)用のモデルを新規に作って、Client(子)用のモデルを関連付けます。
テキトーにモデルを作成して階層に子モデルを紐づけます。
親アセットの作成
作成した親モデルを利用して親アセットを作成します。
アセットの作成後、関連付けられたアセットを追加し、子アセットを紐づけます。ここではClient_A、Client_Bが対象です。
ダッシュボードの作成
通常のダッシュボードと同じように、プロジェクトに親アセットを紐づけることで配下まるごとダッシュボードで管理出来ます。
Client_AとClient_Bの複合されたダッシュボードを作成しました。
親アセットでの集計
上ではClient_AとClient_Bをそれぞれ表示出来るようにしましたが集計して全体として見たいケースがあると思います。
今回はClient_AとClient_Bのメモリ使用率の平均を取ることでシステム全体のメモリ使用率を集計してみます。
以下の流れで親モデルで集計メトリクスを作成することができます。
- 子モデルでメトリクスを作成
- 親モデルで子モデルのメトリクスを用いてメトリクスを作成
このとき注意点としては親子モデルでメトリクスのタイムウィンドウを揃える必要があります。
タイムゾーンとか間隔とかその辺ですね。
ということで子モデルで以下の式で5分間のメモリ使用率の平均を取るメトリクスを「AVG_MEM_USAGE」として作成しました。
avg({MEM_USAGE})
各アセットの値を平均して集計する際の親モデルのメトリクスは以下のような式になります(Clientは階層名です)。
avg({Client->AVG_MEM_USAGE})
これをダッシュボードに反映して確認しましたがいい感じに平均できてそうでした。
これに対してもアラームを設定することが出来るので包括的に監視できますね。
おわりに
親子構造でモデルを表現してダッシュボードにする流れを解説しました。
次はSiteWiseにデータが連携された際にLambdaの処理を実行するようにしてみます。
引き続き見ていってくださいな。
アーキテクト課のomkです。
AWSについて雑多に取り組んだ内容を発信しています!!