コンテンツにスキップ

4.1 エンジン機能の全体像

ここでは、エンジン機能の全体像について説明します。 この節は、内部の処理について、詳しく知りたい場合にご参照ください。 次の図は、SpeeDBee Synapseの構成となります。

4.1.1 機能一覧#

ここでは、構成図に示した内容について解説します。

4.1.1.1 コア#

コアは、SpeeDBee Synapseの中心で、各機能の制御を行っている部分です。 コアは次の機能を提供します。

項目 説明
コア制御
インター
フェース
SpeeDBee Synapseの各機能を制御します。WEBUIからの要求を受け付けて処理します。ユーザーが直接使用することはありません。
コンポーネントAPI コンポーネントが使用するAPIを提供します。コンポーネント開発者は、これらのAPIを利用してプログラミングを行う必要があります。
コンポーネント
制御
コンポーネント(データの収集、加工、分析、送信などを実現するモジュール群)の処理を制御します。コアが内部で自動的に処理します。
データベース
制御
SpeeDBee Synapseに搭載されている時系列データベースを制御します。コアが内部で自動制御します。
ライセンス制御 ライセンスに関する制御を行います。正しいライセンスのもとSpeeDBee Synapseが利用できるよう制御します。
SQL Web-API SpeeDBee Synapseに搭載されている時系列データベースに対し、SQLを実行できるWeb-APIを提供します。
詳細は「DBクエリ(SQL)」「DBクエリサービス」をご覧ください。

4.1.1.2 コンポーネント#

コンポーネントは、SpeeDBee Synapseにおいて、任意の処理を行うモジュール群です。 コンポーネントを使用することで、以下のことが可能です。

項目 説明
データ収集 特定の対象からデータを収集することができます。
詳細は「コレクタ」 をご覧ください。
データ分析 収集したデータを分析することができます。
詳細は「ロジック(リアルタイム分析)」をご覧ください。
イベント 収集したデータに応じたイベントを処理します。
詳細は「ロジック(イベント)」をご覧ください。
データ加工 データを特定のフォーマットに加工することができます。
詳細は「シリアライザ」をご覧ください。
データ出力・送信 データを特定の対象に出力・送信することができます。
詳細は「エミッタ」をご覧ください。
アクション 任意のアクションを実行します。例えば、OSコマンドの実行やメール送信などが可能です。詳細は「アクション」をご覧ください。
システム システムに関連する機能を提供します。初期状態で配置されており、ユーザーが新しいインスタンスを追加することはできません。詳細は「システムコンポーネント」をご覧ください。
カスタム ユーザー自身でコンポーネントを開発することができます。
詳細は「カスタムコンポーネントの作成・利用」の「概要」をご覧ください。

4.1.1.3 WEBUI#

WEBUIは、ユーザーが操作するSpeeDBee Synapseの画面を提供します。 WEBUIは、次の機能を提供します。

項目 説明
認証・ロール SpeeDBee Synapseを正当なユーザーが利用できるよう、認証機能を提供します。また、ユーザーの権限に合わせたロール(ロール)を割り当てることができます。
詳細は、「ユーザー管理」をご覧ください。
コアプロセス
制御
コアプロセスの制御を行います。ユーザーの操作およびコアプロセスの異常時に、プロセス制御を行います。
ダッシュボード データ収集フローを視覚的に表示し、インタラクティブにカスタマイズできるインターフェースです。詳細は、「パネル」をご覧ください。
設定情報管理 SpeeDBee Synapseの設定情報を管理することができます。ユーザーの入力した情報は、設定ファイルとして管理されます。
稼働情報可視化   SpeeDBee Synapseおよびコンポーネントの稼働状態を表示します。
詳細は、「ステータス一覧」をご覧ください。
ステータス履歴 コンポーネントの稼働状態の履歴を表示します。
詳細は、「ステータスタイムライン」をご覧ください。
制御Web-API SpeeDBee Synapseを制御するWeb-APIを提供します。
詳細は、「制御プログラムとの連携」をご覧ください。
データモニタ 収集したデータをモニタで閲覧することができます。
詳細は、「データモニタ」をご覧ください。
グラフ連携 収集したデータをもとに、グラフを作成することができます。
詳細は、「grafana連携」をご覧ください。

4.1.1.4 データベース#

SpeeDBee Synapseには、時系列データベースが搭載されています。 時系列データベースは、次の機能を提供します。

項目 説明
データベースAPI 時系列データベースを操作するAPIを提供します。SpeeDBee Synapseにおいて、ユーザーがこのAPIを意識する必要はありません。
SQL 時系列データベースに対して、SQLを実行することができます。
詳細は「DBクエリ(SQL)」をご覧ください。
時系列データ処理
(登録、検索、削除、永続化)
収集したデータを登録、検索、削除、永続化することができます。コアによって、これらは制御されます。

4.1.2 動作仕様#

本項では、SpeeDBee Synapseの動作仕様について説明します。

4.1.2.1 基本動作#

SpeeDBee Synapseの基本動作仕様は次の通りです。

上記フロー図で行われる処理の詳細を下表に示します。

  • 基本動作
処理 説明
WEBUI起動 SpeeDBee SynapseのWEBUIを起動します。内部的にはHTTPサーバーが動作します。
制限・利用可能機能の構成読み込み 構成情報を読み込みます。有効な機能や各種制限値に関する情報が対象です。
基本的には、ユーザーが準備・設定などを行うものではありません。
スタートアップ処理 コアプロセスの起動およびSpeeDBee Synapseを使用可能にするための処理を行います。詳細は後述します。
コアプロセス監視
開始
コアプロセスの監視処理を起動します。コアプロセスの状態監視を行い、異常発生時には、コアプロセスの再起動を行います。異常が続く場合は、コアプロセスを起動せずにセーフモードへ遷移します。
シグナル受付 OSからのシグナルを受け付けます。停止シグナルを受信すると、終了処理へ移行します。
WEBUI停止 WEBUIを停止します。コアプロセス監視などの終了処理や各処理の後始末を行います。
  • スタートアップ処理(詳細)
処理 説明
コアプロセス起動 SpeeDBee Synapseのデータエンジンとなるコアプロセス(バックグランドプロセス)を起動します。詳細は後述します。
ライセンスキー登録 SpeeDBee Synapseのライセンスキー登録します。WEBUIで、設定されたライセンスキーが適用され、使える機能などが制御されます。
環境パラメータ設定 WEBUIで設定されたデータベースのパラメータをコアプロセスへ適用します。
設定情報検証 WEBUIで設定されているコンポーネント等の情報を検証します。設定の矛盾がないか確認して整合性を保持します。
設定済みコンポーネント・フローリンク登録
要求
ユーザーの設定したコンポーネントおよびフローリンクをコアプロセスへ適用します。
モード判定 モード判定を行います。モードには次の種類があります。
・通常モード
 (スタートアップ処理内でコンポーネントの起動までを行う通常のモードです)
・セーフモード
 (異常時に全コンポーネントが起動できない場合のモードです)
全コンポーネント起動
要求
登録済みの全コンポーネント(自動起動無効のものを除く)を起動します。これによりデータ収集・加工・出力・送信等の処理が実行される状態となります。セーフモードではこの処理はスキップされます。

コアプロセス起動の処理詳細は次の通りです。

  • コアプロセス起動(詳細)

処理 説明
ステータスファイルへ記録 コアの起動・停止状態記録用のステータスファイルへ記録を書き込みます。
この段階では、ステータスは「Initializing」となります。
モジュール初期化・DBオープン
全コンポーネントの読み込み
コアモジュールの初期化を行います。初期内で、データベースのオープン、全コンポーネントの読み込みを行います。
この段階で、問題のあるコンポーネントは読み込みされません。配置はされているが、初期化が実施できないものが読み込み対象外となります。
コア制御IF
開始
コアプロセスを制御するためのインターフェースを有効にします。WEBUIからの要求を受信できる状態となります。
ステータスファイルへ記録 コアの起動・停止状態記録用のステータスファイルへ記録を書き込みます。この段階では、ステータスは「Running」となります。このステータスが記録されたことで正常に起動したことが判別できます。
コアメインループ開始 コアのメインループが開始されます。コア制御IFへの要求に応じて、各種処理を行います。
シグナル受付 OSからのシグナルを受け付けます。停止シグナルを受信すると、終了処理へ移行します。
ステータスファイルへ記録 コアの起動・停止状態記録用のステータスファイルへ記録を書き込みます。
この段階では、ステータスは「Finalizing」となります。このステータスが記録されたことで終了処理が行われたことが判別できます。ただし、終了処理が完全に終了した後に次のステータスが記録されるので、この状態のままステータスが残っている場合は異常と判断されます。
全コンポーネント停止 起動中の全コンポーネントを停止、破棄を行います。
コア制御IF
停止
コア制御IFを停止します。外部からの要求は受付できなくなります。
ステータスファイルへ記録 コアの起動・停止状態記録用のステータスファイルへ記録を書き込みます。
この段階では、ステータスは「Finished」となります。このステータスが記録されたことで終了処理が正常に完了したことが判別できます。次回コアプロセス起動時には、このステータスを参照して、前回起動時の異常診断を行います。「Finished」以外のステータスが記録されたことを検知すると、コアインターナルコンポーネントは異常状態をステータス登録します。異常があった場合の情報は、ステータスタイムラインで参照できます。

4.1.2.2 正常停止時#

正常停止時の動作について解説します。 下図は、コアプロセス起動(詳細)の抜粋となります。赤枠部分が重要な処理となります。

正常な停止処理が実行されることで、ステータスファイルへ正しい記録が行われます。 ステータスファイルへ「Finished」が記録されている状態が正しい停止が行われた事を示しています。 詳細は、コアプロセス起動(詳細)を参照して下さい。

4.1.2.3 異常停止時(電断など)#

異常時停止時の動作について解説します。 異常時とは、SpeeDBee Synapse稼働中に電断によりホストマシンが停止したなどを指します。

  • コアプロセスの異常停止診断

正常停止時の説明へ記載したように、稼働途中でSpeeDBee Synapseが停止した場合は、ステータスファイルへ正しい記録が行われません。次回コアプロセス起動時に、ステータスファイルの診断を行い、正常停止が確認できない場合は、コアインターナルのエラーステータスとして状態が登録されます。エラー情報については、ステータスタイムラインで参照できます。

  • データベース診断

データベース書き込み中に、SpeeDBee Synapseが異常停止を起こした場合、タイミングによっては データベース内のデータ欠損が起こる可能性があります。データ欠損とは、メモリ上に、保持していたデータをストレージへ書き出している際中に、電断などにより正常に書き込みが終了せず一部のデータが失わることを指します。この診断も、次回コアプロセス起動時に内部で診断されます。診断結果で、異常が見つかればコアインターナルのエラーステータスとして状態が登録されます。エラー情報については、ステータスタイムラインで参照できます。

4.1.2.4 データ収集に関連する動作仕様について#

SpeeDBee Synapseでは、コンポーネントのデータ収集を起点に処理を行います。ただし、設定や操作のタイミングによって注意すべき動作仕様があるため、以下に記載します。

コンポーネントの設定変更が適用されるタイミングについて

設定を変更した場合、それが即座に適用されるものと、一度コンポーネントを停止した後、再起動後に適用されるものがあります。また、適用タイミングが特殊な設定があります。

1.コンポーネント再起動後に、新しい設定が適用されるもの

  • コンポーネントそれぞれの固有設定

コンポーネント固有の設定項目は、再起動後に反映されます。
例えば、PLCコレクタなどでアドレスを追加して、設定を保存しても、そのままでは設定は適用されません。一度、PLCコレクタを停止して、再び起動することで新しい設定が反映された状態で動作します。

2.設定変更後、即座に新しい設定が適用されるもの

  • フローリンクのフィルタ
  • フローリンクの連結/削除
  • 入力ポート設定

3.設定変更後、特殊なタイミングで新しい設定が適用されるもの

  • 出力ポート

出力ポートに関しては、設定変更後にカラムが作成されることで、新しい設定が適用されます。
これは起動時に、カラムを作成するコンポーネントであれば再起動されるまで適用されませんが、正規表現などで設定をしている場合かつ特殊なタイミングでカラムを生成するコンポーネントの場合は、途中で反映される可能性があります。
例えば、MQTTコレクタなどはデータを受信して、始めてカラムを生成する事があります。この場合に、出力ポートの設定を正規表現などで指定していると、新しい設定が適用される可能性があります。
※確実に設定を適用したい場合は、該当コンポーネントを再起動して下さい。

フローリンク連結/削除時のデータの流れについて

データ収集を行うコンポーネントを起動後、別のコンポーネントへフローリンクを連結しても連結する前のデータは収集されません。
また、フローリンクを途中で削除すると、そのタイミングで連結先に該当データが流れなくなり、該当コンポーネントの処理するデータが変化します。これは設定を変更しなくても、流れるデータが変化するため動作しているコンポーネントの挙動が変化します。

例えば、PLCコレクタとModbus TCPコレクタをJSONシリアライザへフローリンクをそれぞれ連結しているとします。この時、PLCコレクタとJSONシリアライザのフローリンクを削除すると、JSONシリアライザが参照するデータが、途中でModbus TCPコレクタのデータのみとなります。

データの永続化について

データ収集するコンポーネントが取得したデータは、デフォルトではDBへ永続化しません。DBへ永続化すると、GrafanaやDBクエリサービスを使用して、永続化されている期間の過去データが参照できます。永続化していない場合は、現在メモリ上に保持しているデータのみが参照可能となります。

これら過去データ参照をするデータを永続化したい場合は、「出力ポート」「永続化の設定」の設定を行って下さい。

データ参照時の遅延時間について

入力ポートには、「遅延時間」という設定があります。
これはデータ参照時に、取得するデータの時間範囲を現在時刻に対して何秒遅らせて行うか設定するものです。
データ収集とデータ参照が非同期に並列で処理されるため、データ収集が完全に完了していないデータを取りこぼすのを防ぐ設定です。
データ収集に時間がかかるコンポーネントのデータを扱っている場合は、この遅延時間を調整してください。
コンポーネントによっては、データ収集の時間保証を行い、この遅延時間より短い間隔でデータ参照できる場合もあります。これは、SpeeDBee Synapse内部で自動で行われます。

遅延時間の設定を行うには、「入力ポート」を参照して下さい。

コンポーネント停止時のデータについて

コンポーネントを停止すると、その操作直近のデータは完全保証されません。

例えば任意のコレクタからシリアライザへフローリンクを連結している場合に、シリアライザの停止を行うと、シリアライザはなるべく早く停止するよう動作します。従って、停止中となったシリアライザは、データの参照を実行しないため、データは保証されません。
処理したいデータが流れている間、不用意にコンポーネントを停止しないで下さい。