これまで4回にわたってプランター菜園のモニタリングを綴ってきました。
M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.1(電源編)
M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.2(土壌センサー取り付け編)
M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.3(AWS IoT 編)
M5Stack Toughと土壌水分量センサーでプランター菜園をモニタリングするVol.4(データ蓄積編)
最後にAmazon Managed Grafana を利用した可視化をしてみましたので、書いていきたいと思います。
Amazon Managed Grafana (AMG) とは
各種ログやメトリクスなどのモニタリングを行うための人気のOSSであるGrafanaを、サーバーのメンテナンスなどに煩わされることなく手軽に使うためのマネージドサービスとしてAWSが提供しているサービスです。
構築には
- SAMLまたはAWS IAM Identity Center (旧AWS SSO) の準備
- ワークスペースの作成
- データソースの設定
- グラフなどの作成
ワークスペースの作成
今回の本筋ではないため割愛しますが、認証にはIAM Identity Center を利用しました。
AWS のマネジメントコンソールでワークスペースを作成をクリックします。
ワークスペース名を適当に入力します。Grafana バージョンはこのブログの執筆時点では8.4と9.4が選べましたが、特に8.4を選ぶ理由もないため9.4で進めました。
設定を構成の画面で認証アクセスにて AWS IAM ID センター(AWS SSO の後継) を選択します。この時、有効となることを確認します。ただし、AWS Organizations配下のアカウントで子アカウントを利用している場合は権限不足でそのままでは有効化することが出来ません。その為、その下のアクセス許可タイプでカスタマーマネージドを選択した上で他のAWSアカウントのデータを取り込むための権限を個別に設定する必要があります。これに関してはまた別途纏めようと思います。今回はサービスマネージドで構成していきます。それ以外はデフォルトのまま次へをクリックします。
サービスマネージド型のアクセス許可設定でデータソースにてAmazon TimeStreamを選択し、次へをクリックします。
確認画面でワークスペースを作成をクリックします。
完了するまで3分ほど待ちます。
完了したらAmazon Managed Grafanaを利用できるユーザーまたはグループを設定するため、新しいユーザーまたはグループの割り当てをクリックします。その後、ユーザーまたはグループからAWS IAM Identity Centerで設定されているユーザーから選択してユーザーとグループを割り当てをクリックします。
追加したユーザーを選択し、アクションのプルダウンから "管理者を作成する"、"エディタを作成する"、"閲覧者を作成する"のいずれかを選択して権限を変更します。
権限毎の動作の違いは下記に記載があるので参照してください。
以上で、Amazon Managed Grafana のワークスペースの作成は完了です。
ログイン
ワークスペースの画面にて、Grafana ワークスペースURLに記載されているURLにアクセスします。
Sign in with AWS IAM Identity Center をクリックします
IAM Identity Center で作成したユーザー名とパスワードでログインします。
データソースの設定
左上の「三」の形のアイコンをクリックし、Apps - AWS Data Sources をクリックします
AWS services タブ内の Timestream をクリックします。
Default region のプルダウンから作成した Timestream のデータベースが存在するリージョンを選択し、Add data source をクリックします。ここでは US East (N. Virginia) を選択しています。!
"Add data source" クリック後に表示されるデータソース横の Go to settings をクリックします。
Settings タブの各値を下記のように設定していきます。設定が終わったら、 Save & test をクリックします。
Connection Details
設定項目 | 設定値 |
---|---|
Authentication Provider | Workspace IAM Role |
Assume Role ARN | 設定無し |
External ID | 設定無し |
Endpoint | 設定無し |
Default Region | us-east-1 |
Timestream Details
設定項目 | 設定値 |
---|---|
Database | "demo-db" |
Table | "demo-table" |
Measure | 設定無し |
Connection success と表示されれば成功です。失敗する場合は、上表の設定やIAM Role の権限に不足が無いか確認してみてください。
ダッシュボードの設定
ダッシュボードの画面に移り、New のプルダウンから New Dashboard をクリックします。
時系列折れ線グラフの表示
Add a new panel をクリックします。
画面右上で Time series を選択します。
Query の項目で下記のように設定していきます
設定項目 | 設定値 | 内容 |
---|---|---|
Data source | m5t_demo_data_source | 上記で作成した取り込み対象の Grafana のデータソース |
Database | "demo-db" | Timestream のデータベース |
Table | "demo-table" | センサーデータが格納されている Timestream のテーブル |
Measure | 任意 | 本来は $__measure というマクロ文字列でMeasureで指定したカラムが読み取られるようです |
また、クエリの文字列は下記のように設定します。
SELECT time, measure_value::double as "地中温度" FROM $__database.$__table WHERE measure_name = 'temperature' AND deviceid = 'm5t01'
+Query をクリックすることで、1つのグラフ内に複数種類のデータを追加することが出来ます。上で温度を設定したので、ここでは水分量を追加で描画することにします。
クエリ文字列は下記のように設定します
SELECT time, measure_value::bigint as "水分量" FROM $__database.$__table WHERE measure_name = 'moisture' AND deviceid = 'm5t01'
そうすることで、下図のようにグラフが表示されます
パネル設定
温度と水分量は次元が異なるため、例えば下のように温度と水分量を別々の軸で表現してあげるとよさそうです。また、見やすくするため色を変えたりなどしていこうと思います。
パネル設定の最下部の Add field override をクリックします
プルダウンから Fields with name を選択します。
地中温度と水分量を分けたいので、ここでは水分量を別軸で表すことにします。Fields with name のプルダウンから水分量 を選択します。
Add override property をクリックし、Axis > Placement を選択します
Right を選択します。
すると、水分量の軸が右側に移り、温度と水分量の変動がそれぞれ明確にわかるようになりました。
あとは、同様にグラフを見やすくするため、グラフの色を変えたり、単位をつけたりしていきます。
水分量
設定項目 | 設定値 |
---|---|
Axis > Placement | Right |
Standard options > Unit | Number |
Standard options > Color scheme | Single color |
最後に設定が終わったら右上の Apply をクリックしてパネルを保存します。
これで1つ目のパネルが出来上がりました。
同様にもう一つのセンサーのデータについても設定していきますが、設定が面倒なのでパネルごとコピーします。パネル右上のアイコンをクリックして More... > Duplicate をクリックします。
パネル右上をクリックして Edit で編集します。
クエリ文字列の deviceid をもう一つのセンサーのデバイスIDに書き換えます。パネル名も忘れずに変えましょう。
最後にダッシュボードを保存します。ダッシュボード右上のフロッピーディスクのアイコンをクリックして保存します。
ダッシュボード名の入力画面が出るので、適当な名前を付けて Save をクリックします。
その他
観測期間を変更したり、グラフを変えてみたり等データのいろいろな表現方法を試しながら、好みの表現に改良していくと良いかと思います。私は24時間表示でこの折れ線グラフがしっくりきました。
最後に
ここまで電源設置から最後の可視化まで長い道のりでようやくプランター菜園のモニタリングが出来るようになりました。無事作物が育つかどうかはこれからですが、まずはデータを貯めてみて、何かわかることが無いか調べてみようと思います。