Draco
Draco の健全性チェック
Webブラウザで https://draco.example.com
を開いて、Draco GUI にアクセスします。
Draco GUI にログイン
Draco GU にログインするために、Webブラウザで https://draco.example.com/nifi
を開きます。
次に、Keyrock サインイン・ページにリダイレクトされます。
Draco GUI にログインすると、次のようなページが表示されます:
アクセス・ポリシを追加
コンポーネント・ツールバーの項目を選択できるようにするには、いくつかのアクセス・ポリシを追加する
必要があります。Operate
ウィンドウ内の Access Policies
ボタンをクリックして、Access Policies
ページを開きます。
view the component
、modify the component
および operate the component
で新しいポリシを作成します。
管理者の電子メールをユーザとして新しいポリシに追加します。
アクセス・ポリシを追加すると、コンポーネント・ツールバーの項目を選択できるようになります。
MongoDB へのコンテキスト・データの永続化
NiFi GUI の上部にあるコンポーネント・ツールバーに移動し、テンプレート・アイコンを見つけて、Draco ユーザ・スペース内に
ドラッグ・アンド・ドロップします。この時点で、使用可能なすべてのテンプレートのリストを含むポップアップが表示されます。
そして、ORION-TO-MONGO.xml
テンプレートを選択してください。
すべてのプロセッサを選択し (Shift キーを押してすべてのプロセッサをクリックします)、開始ボタンをクリックして開始します。 これで、各プロセッサのステータス・アイコンが赤から緑に変わったことがわかります。
コンテキストの変更をサブスクライブ
サブスクリプションを作成して、Draco にコンテキストの変更を通知し、それを MongoDB に保存します。
ngsi create \
--host orion.example.com \
--service openiot \
--path / \
subscription \
--description "Notify Draco of all context changes" \
--idPattern ".*" \
--uri "http://draco:5050/notify"
コンテキスト・データを作成
次のスクリプトを実行して、コンテキスト・データを生成します:
#!/bin/bash
set -eu
for i in {0..9}
do
echo $i
ngsi upsert \
--host orion.example.com \
--service openiot \
--path / \
entity \
--keyValues \
--data "{\"id\":\"device001\", \"type\":\"device\", \"temperature\":${RANDOM}}"
sleep 1
done
MongoDB から履歴データを読み取り
コマンドラインから MongoDB データを読み取るには、MongoDB コンテナ内にいる必要があります。
コマンド:
docker compose exec mongo bash
結果:
root@15101e538fde:/#
次に、MongoDB シェルを実行します:
コマンド:
mongo
結果:
MongoDB shell version v4.4.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("0a85a937-ea0d-4532-b43e-eca3105f7003") }
MongoDB server version: 4.4.8
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
https://community.mongodb.com
使用可能なデータベースのリストを表示するには、次のステートメントを実行します:
クエリ:
show dbs
結果:
admin 0.000GB
config 0.000GB
local 0.000GB
orion 0.000GB
orion-openiot 0.000GB
orionld 0.000GB
sth_openiot 0.000GB
アクセスするデータベースに切り替えます:
クエリ:
use sth_openiot
結果:
switched to db sth_openiot
データベース内のコレクションを一覧表示します:
クエリ:
show collections
結果:
sth_/_device001_device
sth_/_device001_device.aggr
次のクエリを実行して履歴データを読み取ります:
クエリ:
db["sth_/_device001_device"].find().limit(10)
結果:
{ "_id" : ObjectId("6183c90a39b98320cb0bfffd"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 16193, "recvTime" : ISODate("2021-11-04T11:50:33.734Z") }
{ "_id" : ObjectId("6183c90a39b98320cb0bfffe"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 28959, "recvTime" : ISODate("2021-11-04T11:50:34.721Z") }
{ "_id" : ObjectId("6183c90b39b98320cb0bffff"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 15080, "recvTime" : ISODate("2021-11-04T11:50:35.758Z") }
{ "_id" : ObjectId("6183c90c39b98320cb0c0000"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 5697, "recvTime" : ISODate("2021-11-04T11:50:36.795Z") }
{ "_id" : ObjectId("6183c90d39b98320cb0c0001"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 7126, "recvTime" : ISODate("2021-11-04T11:50:37.832Z") }
{ "_id" : ObjectId("6183c90e39b98320cb0c0002"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 5396, "recvTime" : ISODate("2021-11-04T11:50:38.869Z") }
{ "_id" : ObjectId("6183c90f39b98320cb0c0003"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 32231, "recvTime" : ISODate("2021-11-04T11:50:39.907Z") }
{ "_id" : ObjectId("6183c91039b98320cb0c0004"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 30974, "recvTime" : ISODate("2021-11-04T11:50:40.946Z") }
{ "_id" : ObjectId("6183c91139b98320cb0c0005"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 31005, "recvTime" : ISODate("2021-11-04T11:50:41.984Z") }
{ "_id" : ObjectId("6183c91339b98320cb0c0006"), "attrName" : "temperature", "attrType" : "Number", "attrValue" : 3404, "recvTime" : ISODate("2021-11-04T11:50:43.020Z") }
MySQL へのコンテキスト・データの永続化
NiFi GUI の上部にあるコンポーネント・ツールバーに移動し、テンプレート・アイコンを見つけて、Draco ユーザ・スペース内に
ドラッグ・アンド・ドロップします。この時点で、使用可能なすべてのテンプレートのリストを含むポップアップが表示されます。
そして、ORION-TO-MYSQL.xml
テンプレートを選択してください。
Draco GUI ユーザ・スペースの任意の部分を右クリックし、configure
をクリックします。
サンダー・アイコンをクリックしてプロセッサを有効にします。
そして、ENABLE
ボタンをクリックします。
次に、コントローラー構成ページを閉じます。
NGSToMySQL プロセッサのステータス・アイコンが赤くなります。
すべてのプロセッサを選択し (Shift キーを押してすべてのプロセッサをクリックします)、開始ボタンをクリックして開始します。 これで、各プロセッサのステータス・アイコンが赤から緑に変わったことがわかります。
コンテキストの変更をサブスクライブ
サブスクリプションを作成して、Draco にコンテキストの変更を通知し、それを MySQL に保存します:
ngsi create \
--host orion.example.com \
--service openiot \
--path / \
subscription \
--description "Notify Draco of all context changes" \
--idPattern ".*" \
--uri "http://draco:5050/notify"
コンテキスト・データを作成
次のスクリプトを実行して、コンテキスト・データを生成します:
#!/bin/bash
set -eu
for i in {0..9}
do
echo $i
ngsi upsert \
--host orion.example.com \
--service openiot \
--path / \
entity \
--keyValues \
--data "{\"id\":\"device001\", \"type\":\"device\", \"temperature\":${RANDOM}}"
sleep 1
done
MySQL から履歴データを読み取り
コマンド・ラインから MySQL データを読み取るには、MySQL コンテナ内にいる必要があります:
コマンド:
docker compose exec mysql bash
結果:
root@898cef135030:/#
Then, run the MySQL shell.
コマンド:
root@898cef135030:/# mysql -uroot -p
結果:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.7.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
使用可能なデータベースのリストを表示するには、次のステートメントを実行します:
クエリ:
show databases;
結果:
+--------------------+
| Database |
+--------------------+
| information_schema |
| idm |
| mysql |
| openiot |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
アクセスするデータベースに切り替えます:
クエリ:
use openiot;
結果:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
データベース内のテーブルを一覧表示します:
クエリ:
show tables;
結果:
+-------------------+
| Tables_in_openiot |
+-------------------+
| x002f |
+-------------------+
1 row in set (0.01 sec)
次のクエリを実行して履歴データを読み取ります:
クエリ:
SELECT * FROM openiot.x002f;
結果:
+---------------+---------------------+-------------------+-----------+------------+-------------+----------+-----------+--------+
| recvTimeTs | recvTime | fiwareServicePath | entityId | entityType | attrName | attrType | attrValue | attrMd |
+---------------+---------------------+-------------------+-----------+------------+-------------+----------+-----------+--------+
| 1643187726446 | 01/26/2022 09:02:06 | | device001 | device | temperature | Number | 30290 | [] |
| 1643187727478 | 01/26/2022 09:02:07 | | device001 | device | temperature | Number | 8769 | [] |
| 1643187728510 | 01/26/2022 09:02:08 | | device001 | device | temperature | Number | 4184 | [] |
| 1643187729539 | 01/26/2022 09:02:09 | | device001 | device | temperature | Number | 9946 | [] |
| 1643187730571 | 01/26/2022 09:02:10 | | device001 | device | temperature | Number | 17908 | [] |
| 1643187731599 | 01/26/2022 09:02:11 | | device001 | device | temperature | Number | 19044 | [] |
| 1643187732627 | 01/26/2022 09:02:12 | | device001 | device | temperature | Number | 435 | [] |
| 1643187733655 | 01/26/2022 09:02:13 | | device001 | device | temperature | Number | 10452 | [] |
| 1643187734683 | 01/26/2022 09:02:14 | | device001 | device | temperature | Number | 4405 | [] |
| 1643187735711 | 01/26/2022 09:02:15 | | device001 | device | temperature | Number | 24210 | [] |
+---------------+---------------------+-------------------+-----------+------------+-------------+----------+-----------+--------+
10 rows in set (0.00 sec)
PostgreSQL へのコンテキスト・データの永続化
NiFi GUI の上部にあるコンポーネント・ツールバーに移動し、テンプレート・アイコンを見つけて、Draco ユーザ・スペース内に
ドラッグ・アンド・ドロップします。この時点で、使用可能なすべてのテンプレートのリストを含むポップアップが表示されます。
そして、ORION-TO-POSTGRESQL.xml
テンプレートを選択してください。
Draco GUI ユーザ・スペースの任意の部分を右クリックし、configure
をクリックします。
サンダー・アイコンをクリックしてプロセッサを有効にします。
そして、ENABLE
ボタンをクリックします。
次に、コントローラー構成ページを閉じます。
NGSToMySQL プロセッサのステータス・アイコンが赤くなります。
すべてのプロセッサを選択し (Shift キーを押してすべてのプロセッサをクリックします)、開始ボタンをクリックして開始します。 これで、各プロセッサのステータス・アイコンが赤から緑に変わったことがわかります。
コンテキストの変更をサブスクライブ
サブスクリプションを作成して、Draco にコンテキストの変更を通知し、それを PostgreSQL に保存します。
ngsi create \
--host orion.example.com \
--service openiot \
--path / \
subscription \
--description "Notify Draco of all context changes" \
--idPattern ".*" \
--uri "http://draco:5050/notify"
コンテキスト・データを作成
次のスクリプトを実行して、コンテキスト・データを生成します:
#!/bin/bash
set -eu
for i in {0..9}
do
echo $i
ngsi upsert \
--host orion.example.com \
--service openiot \
--path / \
entity \
--keyValues \
--data "{\"id\":\"device001\", \"type\":\"device\", \"temperature\":${RANDOM}}"
sleep 1
done
PostgreSQL から履歴データを読み取り
コマンドラインから PostgreSQL データを読み取るには、PostgreSQL コンテナにいる必要があります:
コマンド:
docker compose exec postgres bash
結果:
root@72b468efeb11:/#
次に、psql シェルを実行します。
コマンド:
psql -U postgres
結果:
psql (11.13 (Debian 11.13-1.pgdg90+1))
Type "help" for help.
使用可能なデータベースのリストを表示するには、次のステートメントを実行します:
クエリ:
\l
結果:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
使用可能なスキーマのリストを表示するには、次のようにステートメントを実行します:
クエリ:
\dn
結果:
List of schemas
Name | Owner
---------+----------
openiot | postgres
public | postgres
(2 rows)
使用可能なテーブルのリストを表示するには、次のようにステートメントを実行します:
クエリ:
SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema ='openiot' ORDER BY table_schema,table_name;
結果:
table_schema | table_name
--------------+------------
openiot | x002f
(1 row)
次のクエリを実行して履歴データを読み取ります:
クエリ:
SELECT * FROM openiot.x002f;
結果:
recvtimets | recvtime | fiwareservicepath | entityid | entitytype | attrname | attrtype | attrvalue | attrmd
---------------+---------------------+-------------------+-----------+------------+-------------+----------+-----------+--------
1643187286219 | 01/26/2022 08:54:46 | | device001 | device | temperature | Number | 6367 | []
1643187287236 | 01/26/2022 08:54:47 | | device001 | device | temperature | Number | 27099 | []
1643187288272 | 01/26/2022 08:54:48 | | device001 | device | temperature | Number | 19884 | []
1643187289301 | 01/26/2022 08:54:49 | | device001 | device | temperature | Number | 24317 | []
1643187290334 | 01/26/2022 08:54:50 | | device001 | device | temperature | Number | 18696 | []
1643187291389 | 01/26/2022 08:54:51 | | device001 | device | temperature | Number | 27072 | []
1643187292420 | 01/26/2022 08:54:52 | | device001 | device | temperature | Number | 16981 | []
1643187293467 | 01/26/2022 08:54:53 | | device001 | device | temperature | Number | 25624 | []
1643187294499 | 01/26/2022 08:54:54 | | device001 | device | temperature | Number | 6011 | []
1643187295528 | 01/26/2022 08:54:55 | | device001 | device | temperature | Number | 17796 | []
(10 rows)
例
こちらの例を参照ください。