こんにちは、ロジカル・アーツの井川です。
SiteWise では取り込んだ機器データに対してしきい値を設定し、しきい値に達したときにアラートを通知することができます。この記事では産業機器に見立てた EC2 インスタンスから取り込んでいる CPU 使用率が 90%を超えたときにアラーム状態と見なすことにします。
はじめに
SiteWise では取り込んだ機器データに対してアラームを作成し、データの状態を監視できます。定義できるアラームは「AWS IoT Events アラーム」と「外部アラーム」の 2 種類ありますが、この記事では「AWS IoT Events アラーム」を使用します。IoT Events アラームでは、アラームの状態が変化したときに他の AWS サービスへのアクション*1を定義できます。今回は SNS を使用してメール通知を行います。
以下の記事の設定が完了している前提で進めていきます。
なお、OPC UA サーバについては asyncua
でも node-opcua
でもどちらでも構いません。
また、SNS トピックの作成・設定手順についてはここでは扱いません。手順については以下の記事を参照してください。
アラームの定義
モデルに対してアラームを定義します。その際にしきい値が必要なので、まず属性としてしきい値を定義します。
SiteWise のコンソール画面で対象のモデルをクリックします。
モデルの詳細画面で「編集」をクリックします。
「属性の定義」で下記のように入力します。
項目 | 値 | 備考 |
---|---|---|
名前 | CPU_Threshold | |
デフォルト値 | 90 | アセット毎に上書き可能 |
データ型 | 整数 |
画面下までスクロールして「保存」をクリックします。
次にアラームを定義します。
モデルの詳細画面から「定義」のアラームタブをクリックし、「アラームを追加」をクリックします。
「アラームタイプのオプション」は「AWS IoT Events アラーム」を選択し、「アラーム名」に High_CPU_Usage_Alarm
と入力します。
「しきい値の定義」の項目を以下のように選択します。
項目 | 値 |
---|---|
プロパティ | CPU |
演算子 | > より大きい |
値 | CPU_Threshold |
「詳細設定」をクリックし、「状態アクションの設定 - オプション」をクリックします。さらに「アクションの編集」をクリックします。
「SNS メッセージを送信」を選択し、SNS トピックの ARN を指定します。 ペイロードはデフォルトを選択して「保存」をクリックします。
最後に「アラームを追加」をクリックします。
アラームが作成されたら CPU 使用率を上げ、動作を確認してみます。
動作検証
インスタンスに接続して以下のコマンドを実行し、CPU に負荷をかけます。
yes > /dev/null &
CPU 使用率が 90%を超えるよう、必要であれば複数回実行します。CPU 使用率は top
コマンドで確認できます。
以下のような本文のメールが通知されればうまくいっています*2。
※見やすいように整形しています。
{ "alarmModelName": "High_CPU_Usage_Alarm_assetModel_6b40d695-1405-448c-b294-06ea3acbc37e", "alarmModelVersion": "1", "alarmState": { "stateName": "ACTIVE", "ruleEvaluation": { "simpleRule": { "inputProperty": 100.0, "operator": "GREATER", "threshold": 90 } } }, "keyValue": "3f3c87a4-d3cd-4798-b214-b67aed672b95", "stateUpdateTime": 1685063263945 }
検証が完了したら、バックグラウンドで実行されている yes
コマンドを終了させます。
jobs
コマンドでジョブ番号を確認し、kill %1 %2
のように終了したいジョブ番号を指定して kill
コマンドを実行します。
例えば、以下のように表示されたら kill %1 %2 %3
と実行します。
$ jobs [1] Running yes > /dev/null & [2]- Running yes > /dev/null & [3]+ Running yes > /dev/null &
おわりに
機器データの監視をしたいとなった際、SiteWise では比較的簡単にその仕組みを導入できると思います。さらに、アラームの状態が変化した際に連携できるサービスは複数あるので、用途に応じてカスタマイズができます。例えば、今回の設定だとアラームの状態が変わる度に通知が来るので、 SNS の代わりに Lambda に連携し、アラーム状態になったときだけ Lambda から SNS にメッセージを発行するといったことができます。