IROHA2装置管理サーバー
=================================
.. contents:: 目次:
:depth: 3
.. _secure_login_enable:
セキュアログインの有効化
#################################
連携データベースおよび試料管理データベースと接続し、後述するユーザーの課題情報および持ち込み試料情報を取得するためには装置管理サーバーにおいてセキュアログインを有効化する必要がある。
セキュアログインを有効化する手順を以下に示す。
暗号化通信用のPythonモジュールのインストール
---------------------------------------------------
- バージョン2.8以降の場合
:ref:`pip_requirements_v211+` を参照のこと。
- SCLのPython3.6を利用している場合
.. code-block:: sh
$ source /opt/rh/rh-python36/enable
$ sudo yum install cmake
$ sudo /opt/rh/rh-python36/root/usr/bin/pip3 install -–upgrade pip
$ sudo /opt/rh/rh-python36/root/usr/bin/pip3 uninstall pycrypto
$ sudo yum erase python-crypto
$ sudo yum install pycrypto
$ sudo /opt/rh/rh-python36/root/usr/bin/pip3 install cx_Oracle
- Python2.7の場合
.. code-block:: sh
$ sudo yum install cmake
$ sudo pip install -–upgrade pip
$ sudo pip uninstall pycrypto
$ sudo yum erase python-crypto
$ sudo yum install pycrypto
$ sudo pip install cx_Oracle
.. _create_crypto_key:
暗号キーの作成と登録
---------------------------------------------------
公開鍵 ``public.pem`` および秘密鍵 ``private.pem`` を作成する。
.. code-block:: sh
$ cd /opt/mlfsoft/iroha2/iroha-settings/management/key/
$ ./keygen.sh
``iroha-settings/management/database/setting.xml`` に暗号キーのディレクトリ情報を追加する。
.. code-block:: xml
/opt/mlfsoft/iroha2/iroha-settings/management/key
公開鍵および秘密鍵を移動した場合は ``iroha-settings/management/database/setting.xml`` の ``keyDir`` の値を変更する。
起動
#################################
手動起動
---------------------------------
装置管理サーバーがインストールされたディレクトリにおいて以下のコマンドを実行する。
.. code-block:: sh
$ cd /opt/mlfsoft/iroha2/iroha-management-server
$ ./run.sh
コンソールにはアクセスログ(POST/GETなど)が出力される。
サービスとしての起動
---------------------------------
装置管理サーバーをサービスとして登録している場合、systemctlコマンドによるサーバーの起動・停止の管理が可能である。
.. code-block:: sh
# 起動
$ sudo systemctl start irhmngsrv
# 状態確認
$ sudo systemctl status irhmngsrv
# 再起動
$ sudo systemctl restart irhmngsrv
# 停止
$ sudo systemctl stop irhmngsrv
サービスとして起動した場合、サーバーへのアクセス(POST/GETなど)を記録するアクセスログが出力される。
バージョン2.6までは ``/tmp`` に上書きで保存され、ファイル名のフォーマットは以下の通りである。
``irhmngsrv.{ポート番号}.log``
バージョン2.7からは起動時の日時をファイル名に付与して ``/tmp`` に保存する。ファイル名のフォーマットは以下の通りである。
``irhmngsrv.{ポート番号}.YYYYmmdd-HHMMSS.log``
Web UIへのアクセス
---------------------------------
サーバーを起動しているマシンからアクセスする場合、Webブラウザで以下のURLにアクセスする。
**http://localhost:8086**
サーバー外のマシンからアクセスする場合、localhostをサーバーのIPアドレスに変更する。
URLにアクセスすると装置管理サーバーのログイン画面が表示される。
なお、セキュアログインが有効化されている場合、Loginボタンの表記が **Login (protected)** になる。
.. figure:: images/irhmngsrv/login.jpg
:scale: 60
:alt: Alternative Text
:name: login_irhmngsrv_detail
装置管理サーバーのログイン画面
初期状態では管理者のアカウントのみが登録されている。
Web UI
#################################
管理者ログインとホーム画面
---------------------------------
管理者としてログインに成功すると装置管理サーバーのホーム画面が表示される。装置管理サーバーの画面構成を :numref:`home_irhmngsrv_detail` に示す。
.. figure:: images/irhmngsrv/home_menu.jpg
:scale: 40
:alt: Alternative Text
:name: home_irhmngsrv_detail
装置管理サーバーのホーム画面
装置管理サーバーのWeb UIはシステムステータスバー、メニューおよびメニューに依存して表示されるメインコンテンツで構成されている。
システムステータスバー
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
システムステータスバーは常に表示され、システム状態を表示する。
.. csv-table:: システムステータスバー
:header-rows: 1
:widths: 8, 17, 75
:name: system_status_bar_irhmngsrv_detail
項番, 項目, 説明
1, 装置名, デフォルトでは、Management Serverと表示される。Settingsメニューで変更できる。
2, デバイス状態, "装置名の右横に表示される。登録されたデバイス制御サーバー上にあるデバイスのうち、測定に使用する構成デバイスの統合された状態を表示する。状態は以下のプライオリティで表示される。
| Unknown:デバイス構成にデバイスが含まれていない状態
| Error:ひとつ以上のデバイス制御サーバーと通信できない状態
| Disconnect:ひとつ以上の構成デバイスがデバイス本体と通信できていない状態
| Connecting:ひとつ以上の構成デバイスがデバイス本体と接続中
| ParameterSetting:ひとつ以上の構成デバイスがパラメータ設定中
| InProgress:ひとつ以上の構成デバイスがパラメータ設置完了待ち
| Ready:すべての構成デバイスが測定可能または測定状態"
3, モニタリングデバイス状態, "デバイス状態の右横に表示される。登録されたデバイス制御サーバー上にあるモニタリングデバイスの統合された状態を表示する。状態は以下のプライオリティで表示される。
| Unknown:デバイス構成にデバイスが含まれていない状態
| Error:ひとつ以上のデバイス制御サーバーと通信できない状態
| Disconnect:ひとつ以上の構成デバイスがデバイス本体と通信できていない状態
| Connecting:ひとつ以上の構成デバイスがデバイス本体と接続中
| ParameterSetting:ひとつ以上の構成デバイスがパラメータ設定中
| InProgress:ひとつ以上の構成デバイスがパラメータ設置完了待ち
| Ready:すべての構成デバイスが測定可能または測定状態"
4, DAQ状態, "DAQ M/W の統合状態を表示する
| UNKNOWN:状態を取得中
| ERROR:DAQ
| M/W のDAQ
| Operator と通信できていない状態
| FATAL:ひとつ以上のDAQ コンポーネントがFATAL
| PAUSED:ひとつ以上のDAQ コンポーネントがPAUSED
| CONFIGURED:ひとつ以上のDAQ コンポーネントがCONFIGURED
| LOADED:ひとつ以上のDAQ コンポーネントがLOADED
| FINISHED:ひとつ以上のDAQ コンポーネントがFINISHED
| RUNNING:すべてのDAQ コンポーネントがRUNNNING"
5, 予約ボタン, "システムを予約して、他のユーザが使用できないようにする。
| NOT RESERVED:システムは誰にも予約されておらず、予約可能
| RESERVERD for :システムは<User>に予約され使用中"
6, ログインユーザ名, ログインしているユーザ名を表示する
7, Logout, ログアウトボタン:押下するとログアウトする
8, Help, ヘルプ画面を表示する
メニュー
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. csv-table:: メニュー
:header-rows: 1
:widths: 8, 17, 75
:name: menu_irhmngsrv_detail
項番, 項目, 説明
1, Home, ログイン直後の画面で測定の概要を表示する
2, Measurement, 測定のための設定及び簡易測定制御を行う画面
3, Configuration, 登録されたデバイス制御サーバーから使用するデバイスの組み合わせを選択する画面
4, Run Information, Run情報のディレクトリリスト及び指定Run番号のRun情報を表示するための画面
5, Message Log, 測定のためのAPI 通信など測定に関係するメッセージの送受信が記録されるメッセージログを表示する。本メニューは管理者ログイン時のみ表示される。
6, Servers, デバイス制御サーバーを登録・編集する画面。本メニューは管理者ログイン時のみ表示される。
7, Users, 装置管理サーバーユーザの登録・編集画面。本メニューは管理者ログイン時のみ表示される。
8, Theme, 実験課題の選択画面。本メニューはセキュアログイン時かつ管理者ログイン時のみ表示される。
9, Settings, 装置管理サーバーの基本的な設定を行う画面。本メニューは管理者ログイン時のみ表示される。
10, Configuration Log, デバイス制御サーバーの登録やデバイス構成の変更などのシステムの構成変更操作が記録される構成ログを表示する。本メニューは管理者ログイン時のみ表示される。
11, Authentication Log, ユーザのログイン、ログアウトや登録削除などが記録される認証ログを表示する。本メニューは管理者ログイン時のみ表示される。
12, Development, 開発者用の情報表示画面
.. _server_settings_page:
初期設定:Settings
---------------------------------
初期設定はSettingsメニューで行う。この設定は通常運用中には変更しない項目である。
この画面は管理者のみに表示される。
.. figure:: images/irhmngsrv/server_settings.jpg
:scale: 60
:alt: Alternative Text
:name: server_settings_irhmngsrv_detail
Settings画面
.. csv-table:: Settingsの設定内容
:header-rows: 1
:widths: 8, 17, 75
:name: settings_irhmngsrv_detail
項番, 項目, 説明
1, srvName, サーバー名。システムステータスバーおよびWebページタイトルとして保存される。
2, instCode, 3文字の装置コード。測定結果の出力等に使用される。DAQ M/W で設定している値と同一の値にする。
3, medPassword, MLF実験データベースから出力されるユーザファイルの出力先を指定する。未登録のユーザでもこのファイルに登録されていれば、ログイン時にインポートされる。
4, outputBasePath, "runInfoやログなどの測定結果を出力するディレクトリのベースパスを設定する。測定結果は以下のように出力される。
| <ベースパス>/<装置コード>/<装置コード><RUN#>_YYYYMMDD/params/run.xml
| 例) ``/opt/mlfsoft/data/SIK/SIK012345_20140205/params/run012345.xml`` "
5, logConf, 構成ログの保存パスを指定する。
6, logAuth, 認証ログの保存パスを指定する。
7, logMsg, メッセージログの保存パスを指定する。
8, runInfoPageMax, "Run Informationメニューでの1ページあたりの表示数を設定する。
| ★admin 以外のユーザはユーザフィルタのため表示が著しく遅くなる可能性があるため、ページングされない。最新のRun情報の1ページ分が表示される。"
9, retryMax, デバイス制御サーバー接続時のリトライ回数を設定する。リトライ回数を超えて接続できない場合は、該当サーバーへの接続はResetされるまで再試行されない。0に設定すると無限に接続を試みる。
10, authSrv, 統合認証サーバーのURIを設定する。セカンダリーサーバーを登録する場合は、スペースで区切って設定する。
11, authSrvBaseDn, 統合認証サーバーアクセス時のBaseDnを設定する。
12, authSrvSearchOu, 統合認証サーバーアクセス時のOuを設定する。
13, infoSrv, 連携データベースのIPアドレスを設定する。セカンダリーサーバーを登録する場合は、スペースで区切って設定する。セキュアログイン時のみ表示される。
14, infoSrvUsr, 連携データベースのユーザーを設定する。セキュアログイン時のみ表示される。
15, infoSrvPass, 連携データベースのパスワードを設定する。セキュアログイン時のみ表示される。
16, SMDB, 試料管理データベースのIPアドレスを設定する(バージョン2.10以降)。セキュアログイン時のみ表示される。
17, SMDBToken, 試料管理データベースのアクセストークンを設定する(バージョン2.10以降)。セキュアログイン時のみ表示される。
18, databeseUsed, 連携データベース(infoSrvDB)か試料管理データベース(SMDB)のどちらを使用するか、またはデータベースを使用しないか(None)を選択する(バージョン2.10以降)。セキュアログインしていない場合はNoneに固定される。
19, Allowed Hosts, Web APIのアクセスを許可するホスト名またはIPアドレスを設定する(バージョン2.10以降)。
20, measdirPermission, 測定フォルダのパーミッションを設定する。Owner、Owner and owner's group、Everyoneから選択する。デフォルトはOwnerである(バージョン2.10以降)。
21, keyDir, "RSA 鍵の作成ディレクトリを設定する。本項目は、Web UI からは参照できないため、以下のファイルをエディタで編集する必要がある。
| ``iroha-settings/management/database/settings.xml`` "
.. _system_dir:
想定システムディレクトリ構成
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
outputBasePathの設定で想定されているディレクトリ構成は以下の通りである。
* ``/opt/mlfsoft/iroha2/iroha-device-server`` :デバイス制御サーバー(ライブラリ用)
* ``/opt/mlfsoft/iroha2/iroha-management-server`` :装置管理サーバー
出力測定結果
* ``/opt/mlfsoft/data////yesと設定してLoggingディレクトリが既に存在した場合でもFATALとならないようにしておく必要がある。
ユーザ登録および編集:Users
---------------------------------
:guilabel:`Users` メニューでは管理者パスワードの変更、一般ローカルユーザの登録、削除、パスワード変更および強制ログアウトを行うことができる。
この画面は管理者のみに表示される。
ローカルユーザを追加するには、 :guilabel:`new User` にユーザ名を入力、 :guilabel:`new Password` にパスワードを設定して、 :guilabel:`Add` ボタンを押下する。
この画面から登録されたユーザの :guilabel:`Type` はLocalとなる。
登録済みユーザの削除は該当ユーザの右にある :guilabel:`Delete` を押下する。
ユーザパスワードの変更は該当ユーザの右にある :guilabel:`Password` を入力して :guilabel:`Change Password` ボタンを押下する。
統合認証サーバーの認証でログインしたユーザーの :guilabel:`Type` はLDAPとなり、パスワードの変更および削除は行えない。
MLF実験データベース(MED)のパスワードファイルからのユーザインポートは
MEDパスワードファイルに登録されたユーザがログインするタイミングで実行される。
Type MED としてインポートされ、その後の扱いは一般ユーザと同じである。
:guilabel:`Status` にはログイン中のユーザ状態(On Line)とともに接続セッション数(異なるホストやブラウザでアクセスしているセッション数)が表示される。
:guilabel:`Logout` ボタンは接続中の該当ユーザセッションをすべて切断する。
.. figure:: images/irhmngsrv/users.jpg
:scale: 60
:alt: Alternative Text
:name: users_irhmngsrv_detail
Users画面
デバイス制御サーバーの登録:Servers
----------------------------------------
:guilabel:`Servers` メニューからデバイス制御サーバーを登録する。この画面は管理者のみに表示される。
.. figure:: images/irhmngsrv/server_devsrv.jpg
:scale: 60
:alt: Alternative Text
:name: server_devsrv_irhmngsrv_detail
Servers画面におけるデバイス制御サーバーの登録
デバイス制御サーバーを登録するにはデバイス制御サーバーのIPアドレスとポート番号、サービス名を入力して :guilabel:`Add` ボタンを押下する。
デバイス制御サーバーのデフォルトポート番号は8085、サービス名は変更していなければirhdevsrvである。
また、 :guilabel:`Monitor` のラジオボタンをOnにすることでこのデバイス制御サーバーをモニタリング対象とすることができる。
追加後、 :guilabel:`Status` 欄の表示がErrorとなった場合はデバイス制御サーバーとの通信ができていないことを示す。
IPアドレスやデバイス制御サーバーが起動しているかを確認を行う。
Error状態ではデバイス制御サーバーの監視は停止している。
設定確認後 :guilabel:`Reset` ボタンを押下すると再度接続を試みる。
Readyとなれば正常である(この画面の :guilabel:`Status` は自動更新されないので、Webブラウザの更新ボタンを押下する)。
paramiko(pythonによるsshログイン)がインストールされているマシンでは :guilabel:`Control` ボタンがアクティブになり、
押下すると該当サーバーのデバイス制御サーバーを起動、停止、状態取得できる。
.. figure:: images/irhmngsrv/server_control.jpg
:scale: 60
:alt: Alternative Text
:name: server_control_irhmngsrv_detail
Servers画面におけるデバイス制御サーバーの制御
Server Root Passwordを入力して :guilabel:`Start Service` で起動、 :guilabel:`Stop Service` で停止、 :guilabel:`Status` で起動状態が表示される。
.. note::
このパスワードは該当メニューから移動するまで保持される。
使用後は別なメニューに移動するか、ログアウトする必要がる。
DAQ M/Wの設定:Servers
----------------------------------------
:guilabel:`Servers` メニューの下部にはDAQ M/Wの設定がある。
DAQ OperatorのIPアドレスなどを設定する。
この画面は管理者のみに表示される。
.. figure:: images/irhmngsrv/server_daqmw.jpg
:scale: 60
:alt: Alternative Text
:name: server_daqmw_irhmngsrv_detail
Servers画面におけるDAQ M/Wの設定
.. csv-table:: DAQ M/Wの設定内容
:header-rows: 1
:widths: 8, 17, 75
:name: setting_daqmw_irhmngsrv_detail
項番, 項目, 説明
1, host, DAQ OperatorのIPアドレスを設定する。
2, urlCnt, DAQ M/Wの制御スクリプトのパスを設定する。
3, inPathConfig, 測定開始時に ``config.xml`` の書き換えを行う場合に入力となる ``config.xml`` のパスを設定する。入力しない場合はこの処理は行われない。
4, outPathConfig, 測定開始時に ``config.xml`` の書き換えを行う場合に出力先となる ``config.xml`` のパスを設定する。入力しない場合はこの処理は行われない。
5, inPathCondition, 測定開始時に ``condition.xml`` の変換を行う場合に入力元となる ``condition.xml`` のパスを設定する。入力しない場合はこの処理は行われない。またRun情報にcondition情報が記録されない。
6, outPathCondition, 測定開始時に ``condition.xml`` の変換を行う場合に出力先となる ``condition.json`` のパスを設定する。未入力の場合はこの処理は行われない(本機能を利用するにはpythonのlxmlモジュールが必要)。
7, daqCntRetry, DAQ M/W 制御時のタイムアウト回数を指定する。バージョン2.9.0以前では、Begin/Endコマンド送信後、DAQ M/W がRUNNING/CONFIGUREDとなるまで1秒×daqCntRetryだけ待つ。バージョン2.9.0以降では最大のリトライ回数である(詳細は後述)。
8, daqWaitRetry, リトライ時の待ち時間を指定する(バージョン2.9.0以降)。
9, kickerCompName, Kickerコンポーネントの名称を指定する。
バージョン2.9.0以降における測定のリトライ機能
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DAQ M/Wの一時的な問題等でBeginに失敗した場合、以下の手順で自動的にコマンドの再送信を行う。
1. リトライ回数をカウントアップする
- リトライ回数がdaqCntRetryを超えた場合、Beginのリトライを停止し、エラー処理に入る
2. DAQ M/WにUnconfigureのコマンドを送信する
- 送信に失敗した場合、定周期処理で再試行する
- daqWaitRetryを超過した場合、1.に戻る
3. DAQ M/Wの状態がLOADEDに移行したことを確認する
- LOADEDに移行しない場合、定周期処理で再確認する
- daqWaitRetryを超過した場合、1.に戻る
4. DAQ M/WにConfigureのコマンドを送信する
- 送信に失敗した場合、定周期処理で再試行する
- daqWaitRetryを超過した場合、1.に戻る
5. DAQ M/Wの状態がCONFIGUREDに移行したことを確認する
- CONFIGUREDに移行しない場合、定周期処理で再確認する
- daqWaitRetryを超過した場合、1.に戻る
6. DAQ M/WにBeginのコマンドを送信する
- 送信に失敗した場合、定周期処理で再試行する
- daqWaitRetryを超過した場合、1.に戻る
また、Endに失敗した場合は以下の手順で自動的にコマンドの再送信を行う。
1. リトライ回数をカウントアップする
- リトライ回数がdaqCntRetryを超えた場合、Endのリトライを停止し、エラー処理に入る
2. DAQ M/WにEndのコマンドを送信する
- 送信に失敗した場合、定周期処理で再試行する
- daqWaitRetryを超過した場合、1.に戻る
デバイス構成の作成:Configuration
----------------------------------------
登録されたデバイス制御サーバー上にあるデバイスのうち、測定に使用するデバイスを選択してまとめたものをデバイス構成と呼ぶ。
:guilabel:`Configuration` 画面では、複数のデバイス構成を作成できる。
デバイス構成はユーザ毎に作成され、Public属性を持つものは他のユーザも使用できる(構成の変更・削除はできない)。
Publicでないデバイス構成(Private)は管理者以外の他のユーザから参照することはできない。
.. figure:: images/irhmngsrv/configuration.jpg
:scale: 60
:alt: Alternative Text
:name: configuration_irhmngsrv_detail
Configuration画面
デバイス構成を追加するには、まずデバイス構成名を設定し追加する。
デバイス構成名にはアルファベット、数字、_(アンダースコア)が使用できる。
デバイス構成追加時に :guilabel:`All Device` チェックボックスをONにしておくと登録されているデバイス制御サーバーから取得されたすべてのデバイスをデバイス構成に追加する。
:guilabel:`Public` チェックボックスをONにしておくと公開構成となる。
デバイス構成の詳細は該当デバイス構成の :guilabel:`Edit` ボタンを押下すると編集できる。
.. figure:: images/irhmngsrv/configuration_edit.jpg
:scale: 60
:alt: Alternative Text
:name: configuration_edit_irhmngsrv_detail
Configuration編集画面
編集画面では各デバイスを以下の3つのカテゴリに分類することができる。
.. csv-table:: Configurationにおけるデバイスのカテゴリ
:header-rows: 1
:widths: 8, 22, 70
:name: configuration_category_irhmngsrv_detail
項番, カテゴリ, 説明
1, Use Device, 監視および制御対象とするデバイス
2, Monitor Device, 監視のみ行うデバイス。このデバイスがError状態となっても測定には影響が出ない。
3, Not Use Device, 監視および制御を行わないデバイス
デバイス構成は複数作成できる。
測定に使用するデバイス構成は測定予約した後、 :guilabel:`Activate` ボタンを押下して有効化する。
測定予約していない状態ではActivateできない。
測定予約
----------------------------------------
測定を同時に実行できるユーザは一人である。
このため、測定を行うには測定予約をする必要がある。
測定予約はシステムステータスバーの :guilabel:`NOT RESERVED` となっているボタンを押下する。
NOT RESERVED以外の時には測定予約を行うことができない。
測定予約を解除するには、測定予約をしているユーザが :guilabel:`RESERVED for <User>` となっているボタンを押下して測定予約を解除する。
管理者は他のユーザの測定予約を解除することができる。
一般ユーザは他のユーザの測定予約を解除することはできない。
また、測定予約状態はログアウトやサーバーの再起動では解除されない。
測定画面:Measurement
----------------------------------------
測定画面ではコメントなどの測定設定と簡易測定制御を行うことができる。
測定画面は管理者には測定予約なしで表示されるが、一般ユーザには測定予約しないと表示されない。
測定制御は測定予約ユーザがいない状態では無効化されている。
測定予約をすると測定予約ユーザまたは管理者が測定制御を行える。
.. figure:: images/irhmngsrv/measurement.jpg
:scale: 60
:alt: Alternative Text
:name: measurement_irhmngsrv_detail
Measurement画面
:guilabel:`Run No` および :guilabel:`Experiment ID` はadminユーザに対してのみ表示される。
装置管理サーバーからBeginしたときに :guilabel:`Application Name` および :guilabel:`Application Version` がブランクの場合は
:guilabel:`Application Name` にirhmngsrv、 :guilabel:`Application Version` に装置管理サーバーバージョンが入る。
測定制御:Measurement
----------------------------------------
デバイスの設定などを含む高度な測定はExperiment Schedulerなどの測定制御アプリケーションで行うことが想定されているため、
装置管理サーバーではサポートされていない。装置管理サーバーでは、測定開始、停止などの簡易測定制御を行うことができる。
簡易測定では次の処理を行う。
* 測定開始(Begin)
* デバイス構成およびDAQ M/W の状態確認(ERROR でない)
* 測定結果用ディレクトリの作成、測定結果(runInfo)の準備
* デバイス制御サーバーの測定ログパス変更と測定ログの取得開始
* DAQ M/W の状態リセット(他の状態にあってもCONFIGURED 状態になります)
* DAQの開始
* 測定の中断及び再開(Pause/Resume)
* DAQ のPAUSE(一時停止)およびRESUME(再開)
* 測定終了(End)
* DAQ の停止
* デバイス制御サーバーの測定ログ停止
* 測定結果の出力
* リセット(Reset)
* 全デバイス制御サーバーへのリセット送信
* 装置管理サーバー上のデバイス制御サーバー通信状態のリセット
* 測定状態のリセット(装置管理サーバー上の状態リセット)
* DAQ M/W をCONFIGUREDとする
.. note::
Reset 時にはRun No はインクリメントされない
Recent Run情報は最近実行された測定または実行中の測定情報を表示する。
この情報は装置管理サーバーが起動している状態で管理されているため、
装置管理サーバーを再起動すると次回測定まで表示されない(ファイルには保存されていない)。
ログフィルターの設定(バージョン2.7以降)
##########################################
Message Log画面、Configuration Log画面、Authentication Log画面では :guilabel:`Filter` でログの種類を絞って表示することができるが、
加えて特定の文字列を含むメッセージを非表示にすることができる。
``iroha-settings/management/database/log_msg_filter.json`` にフィルターする文字列を定義する。
Message Logの設定
---------------------------------
`msg_log` キーのリストに文字列を追加する。文字列は正規表現に対応している。
複数の文字列を登録する場合にはカンマ(,)区切りで追加していく。
.. code-block::
{
...
"msg_log": [
"message a",
"message b"
]
}
Configuration Logの設定
---------------------------------
`conf_log` キーのリストに文字列を追加する。文字列は正規表現に対応している。
複数の文字列を登録する場合にはカンマ(,)区切りで追加していく。
.. code-block::
{
"conf_log": [
"It was failed to import cx_Oracle module.*",
"It was failed to import python pycrypt module.*"
],
...
}
Authentication Logの設定
---------------------------------
`auth_log` キーのリストに文字列を追加する。文字列は正規表現に対応している。
複数の文字列を登録する場合にはカンマ(,)区切りで追加していく。
.. code-block::
{
...
"auth_log": [
"message c",
"message d"
],
...
}
Run情報へのユーザー定義情報の追加
#################################
測定時に出力されるRun情報ファイル( :ref:`system_dir` で説明されている ``run<Run 番号>.xml`` )にユーザー定義の情報を追加することができる。
設定ファイル ``database/measurement.xml`` にある要素に任意の要素を追加することで、その要素がRun情報ファイルに追加される。
例えば、Run情報ファイルに要素名「udef」、値「123」を追加したい場合、装置管理サーバー停止後に以下の様に記述する。
.. code-block::
123
装置管理サーバーを起動して測定を行うと、Run情報ファイルには以下の様にユーザー定義情報が記述される。
.. code-block::
...Protected123
Web UIによる設定(バージョン2.7以降)
----------------------------------------
バージョン2.7以降ではWeb UIによるユーザー定義情報の表示と更新が可能になった。
設定ファイル ``database/measurement.xml`` にユーザー定義情報が記述されている場合、
ホーム画面およびMeasurement画面にユーザー定義情報が表示される。
また、Measurement画面ではユーザー定義情報の値の更新が可能である。
.. figure:: images/irhmngsrv/measurement_user_option.jpg
:scale: 60
:alt: Alternative Text
:name: measurement_user_option_irhmngsrv_detail
Measurement画面におけるユーザー定義情報の表示
.. note::
ユーザー定義情報は複数の要素を設定可能である。
ただし、Web UI上で表示・更新するためには、userOption要素の直下の階層に定義されていなければならない。
階層をより深くした場合、
(例えば、123456 とした場合)
Run情報ファイルに情報は記述されるが、Web UIでは正しく表示されない。
統合制御サーバーとの連携機能
#################################
統合制御サーバーの :guilabel:`Measurment` パネルは、統合制御サーバーのWebUIから測定制御やシーケンス制御を行うことを目的としている。
このパネルは2つの測定モード(簡易測定モード、シーケンスモード)を備えており、モード切り替えによっていずれかのモードを選択して使用する。
測定モード切替
---------------------------------
:guilabel:`Simple` ボタンで簡易測定モード、 :guilabel:`Sequence` ボタンでシーケンスモードに切り替わる。
:guilabel:`Begin` ボタン(シーケンスモードでは :guilabel:`Start` ボタン)を押下した後は、開始した処理が終了するまでモードの切り替えは不可となる(両モード共通)。
.. figure:: images/irhintsrv/measpanel_switch_mode.jpg
:scale: 40
:alt: Alternative Text
:name: intsrv_switch_mode_irhmngsrv_detail
測定モード切替ボタン
簡易測定モード
---------------------------------
簡易測定モードはRunInfoサマリーパネルを拡張した機能を備えている。
装置管理サーバーに対して測定制御コマンド(BeginやEnd等)を送信する機能や、
装置およびRun情報を取得して表示する機能はRunInfoサマリーパネルと同様であるが、
測定終了条件としてKicker数または測定経過時間を指定することができる。
.. figure:: images/irhintsrv/measpanel_simple.jpg
:scale: 60
:alt: Alternative Text
:name: intsrv_simple_irhmngsrv_detail
Measurementパネル(簡易測定モード)
簡易測定モードの機能は以下の通りである。
* Run情報の閲覧
* 装置管理サーバーへのコマンド送信
* 測定終了条件の設定
* コメントの編集
* ユーザー持ち込み試料の選択
.. _intsrv_simple_runinfo_sec_irhmngsrv_detail:
Run情報の閲覧
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run情報は自動的に定周期配信Jsonデータから取得され、パネル上に表示される。
更新間隔は :guilabel:`Settings` メニューの :guilabel:`System` タブにおける、 :guilabel:`Polling Interval of Web Browser` で設定する(adminでログインした場合のみ設定可能)。
表示されるRun情報を :numref:`intsrv_simple_runinfo_irhmngsrv_detail` に示す。
.. csv-table:: User Accessタブでの設定項目
:header-rows: 1
:widths: 5, 30, 55
:name: intsrv_simple_runinfo_irhmngsrv_detail
No., 項目, 内容
1, Theme ID, 実験課題番号
2, Theme Title, 実験課題名
3, Inst, ビームライン番号と装置コード
4, Run No, ランナンバー
5, Status, 測定状態
6, System User, 予約ユーザー名
.. note::
装置管理サーバーにおいてユーザー持ち込み試料情報の取得設定を行っている場合、試料情報の表示/選択を行う項目が追加される。
装置管理サーバーへのコマンド送信
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:guilabel:`Measurement` パネルには4つの制御ボタンが配置されており( :numref:`intsrv_simple_irhmngsrv_detail` の赤枠)、
それぞれのボタンを押下することで、ボタンに対応するコマンドが装置管理サーバーに送信される。
各ボタンの機能は次のとおりである。
* :guilabel:`Begin` ボタン
指定した終了条件( :ref:`meas_end_cond_irhmngsrv_detail` )で、装置管理サーバーに測定開始命令を送信する。
測定状態(Run情報のStatus)がReservedの場合のみ使用可能になる。
* :guilabel:`Pause` ボタン
測定を開始すると使用可能になる。装置管理サーバーに測定の一時停止命令を送信する。
測定状態がMeasuringの場合に使用可能になる。
* :guilabel:`Resume` ボタン
測定の一時停止中に使用可能になる。装置管理サーバーに測定の再開命令を送信する。
測定状態がPausingの場合に使用可能になる。
* :guilabel:`End` ボタン
測定中または、一時停止中に使用可能になる。装置管理サーバーに測定終了命令を送信する。
測定状態がMeasuringまたはErrorの場合に使用可能になる。
.. _meas_end_cond_irhmngsrv_detail:
測定終了条件の設定
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
測定を開始するときは、次の3つの中から測定終了条件を選択する( :numref:`intsrv_simple_irhmngsrv_detail` の緑枠)。
* :guilabel:`None`
測定終了条件を指定しない。測定終了命令を送信するまで測定が継続する。
* :guilabel:`Kicker`
測定を終了するkicker countを入力する。
指定したkicker countに達すると自動的に測定が終了する。
* :guilabel:`Time`
測定を行う時間を秒単位で入力する。測定開始から指定した時間が経過したのち、自動的に測定が終了する(一時停止中は経過時間に含まれない)。
:guilabel:`Measurement` パネルの下部に測定終了までの推定残り時間が表示される。
.. _edit_comment_irhmngsrv_detail:
コメントの編集
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RunInfoサマリーパネルと同様の機能を持つ。
:guilabel:`Measurement` パネルのコメント欄( :numref:`intsrv_simple_irhmngsrv_detail` の青枠)に、装置管理サーバーに設定されている測定のコメントが表示される。
コメントを編集後、:guilabel:`Apply` ボタンを押下することで、コメントを更新できる。
コメントを編集後、更新せずに :guilabel:`Reset` ボタンを押下すると、コメントを編集前の状態に戻すことができる。
ユーザー持ち込み試料の選択
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:ref:`infosrv_if_sec` における説明を参照のこと。
シーケンスモード
---------------------------------
シーケンスモードについては :doc:`irhseqsrv` を参照のこと。
ユーザー持ち込み試料情報の入力I/F
#################################
連携データベースおよび試料管理データベースから実験課題番号およびそれに紐づいたユーザー持ち込み試料情報を取得し、
測定のメタデータとして保存する機能およびユーザーインターフェースについて説明する。
主な機能は以下の通りである。
* データベースから取得した実験課題番号を用いて実験ユーザーアカウントを作成する機能
* データベースから実験課題番号に紐づいたユーザー持ち込み試料情報を取得し、測定時に保存されるメタデータ( ``params/run.xml`` )に情報を追加する機能
冒頭でも説明した通り、セキュアログインを有効化する必要がある。
a. 連携データベースとの連携セットアップ
----------------------------------------
連携データベースを使用する場合は以下の手順でセットアップを行う。
Oracleモジュールの入手
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
以下のOracleモジュールを入手する。
* oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
* oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
* oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
Oracleモジュールインストール
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: sh
$ sudo rpm -ihv oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
$ sudo rpm -ihv oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
$ sudo rpm -ihv oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
b. 試料管理データベースの設定
----------------------------------------
試料管理データベースを利用する場合、試料管理データベースのAPIにアクセスするためのアクセストークンを取得する必要がある。
トークンの取得については、試料管理データベースの管理者に問い合わせること。
装置管理サーバーにおける入力インターフェースの使用方法
------------------------------------------------------
データーベース接続情報の設定
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:ref:`server_settings_page` においてデータベースへの接続情報を設定する。
まず、連携データベースか試料管理データベースのどちらを使用するのか、設定項目の :guilabel:`databaseUsed` で選択する。
次にデータベースへアクセスするための設定を行う。
a. 連携データベースを用いる場合の設定項目は以下の通りである。
* infoSrv
* infoSrvUsr
* infoSrvPass
b. 試料管理データベースを用いる場合の設定項目は以下の通りである。
* SMDB
* SMDBToken
それぞれの設定項目の詳細は :numref:`settings_irhmngsrv_detail` を参照のこと。
取得課題IDリストから未登録のIROHA2アカウントを作成
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. 装置管理サーバーにadminでログインし、 :guilabel:`Theme` 画面を開く。
2. 実験年度を選択し、 :guilabel:`Get Proposal No. and Title of Experiment` ボタンを押下する。
3. アカウントを作成する課題IDを選択し、 :guilabel:`Create User` ボタンを押下する。
4. ユーザーが作成されると :guilabel:`Users` 画面に遷移し、課題IDと同じ名前のユーザーが作成される(パスワードはユーザー名と同じである)。
.. figure:: images/irhmngsrv/theme.jpg
:scale: 50
:alt: Alternative Text
:name: theme_irhmngsrv_detail
Theme画面における実験ユーザーアカウント作成
課題IDに紐づいた試料IDおよび試料名から複数を選択
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. 新規作成した実験ユーザーアカウントで装置管理サーバーにログインする。
2. 画面上部の :guilabel:`Not Reserved` ボタンを押下し、予約ユーザーとなる。
ホーム画面にプロポーザル番号(課題ID)と実験タイトルが表示される(:numref:`home_theme_irhmngsrv_detail`)。
3. :guilabel:`Measurement` 画面に移動する。
4. 表示された試料の一覧から測定対象とする試料をチェックボックスで選択し、画面下部の :guilabel:`Save` ボタンを押下する(:numref:`samples_irhmngsrv_detail`)。
試料の情報が ``database/measurement.xml`` に記録される。
5. :guilabel:`Home` 画面に移動すると試料情報が表示されるようになる(:numref:`home_samples_irhmngsrv_detail`)。
6. 予約を解除すると試料情報はクリアされる。
.. figure:: images/irhmngsrv/home_theme.jpg
:scale: 50
:alt: Alternative Text
:name: home_theme_irhmngsrv_detail
ホーム画面における実験課題名の表示
.. figure:: images/irhmngsrv/samples.jpg
:scale: 50
:alt: Alternative Text
:name: samples_irhmngsrv_detail
測定画面における試料の選択
.. figure:: images/irhmngsrv/home_samples.jpg
:scale: 50
:alt: Alternative Text
:name: home_samples_irhmngsrv_detail
ホーム画面における試料情報の表示
.. _infosrv_if_sec:
統合制御サーバーにおける試料情報の入力インターフェースの使用方法
-------------------------------------------------------------------
測定サマリーパネルで課題IDに紐づいた試料IDおよび試料名から複数を選択する。
1. 装置管理サーバーに実験ユーザーアカウントでログインし、予約ユーザーになる。
2. 統合制御サーバーを起動し、実験ユーザーアカウントでログインする。
サマリーパネルに実験IDとタイトルおよび装置管理サーバーで設定した試料の一覧が表示される。
3. 測定対象とする試料をチェックボックスで選択し、試料一覧の右にある :guilabel:`Applyボタン` を押下する。
確認ダイアログで :guilabel:`OK` ボタンを押下すると装置管理サーバーに選択した試料の情報が送信される。
.. figure:: images/irhmngsrv/intsrv_samples.jpg
:scale: 50
:alt: Alternative Text
:name: intsrv_samples_irhmngsrv_detail
統合制御サーバーにおける試料の選択
外部サービス向けAPI(バージョン2.10以降)
##########################################
装置管理サーバーおよび統合制御サーバーは、測定に関する情報を外部サービスから取得するためのWeb APIを提供する。
取得可能な情報は以下の通りである。
- 現在の測定のRun No
- 現在の測定の状態
- 指定したRun Noにおける測定の開始時刻および終了時刻
簡便に取得できるように認証は不要であるが、IPによるアクセス制限を設定することができる。
IPによるアクセス制限の設定
----------------------------------------
1. adminユーザーでログインし、 :guilabel:`Settings` 画面を開く。
2. Web APIによるアクセスを許可するIPアドレス(IPv4)を :guilabel:`Allowed Hosts` 欄に入力する。複数のIPアドレスを設定する場合は1行に1つのIPアドレスを入力する。また、192.168.1.1/24 のようにCIDR表記で入力することもできる。
3. :guilabel:`Update` ボタンを押下する
.. figure:: images/irhmngsrv/api_ip_restriction.jpg
:scale: 20
:alt: Alternative Text
:name: api_ip_restriction_irhmngsrv_detail
Web APIのアクセス制限設定画面
.. note::
Web を統合制御サーバーから利用する場合には許可するIPに127.0.0.1を追加する必要がある。
Web APIの使用方法
----------------------------------------
APIの一覧を以下に示す。
.. csv-table:: Web APIの一覧
:header-rows: 1
:widths: 5, 10, 30, 55
:name: web_api_list_irhmngsrv_detail
No., メソッド, URI, 説明
1, GET, /apiopen/RunNo, 現在の測定のRun Noを取得する。
2, GET, /apiopen/Status, 現在の測定の状態を取得する。
3, GET, /apiopen/RunInfo/, 指定したRun Noにおける測定の開始時刻および終了時刻を取得する。
例えば、curlコマンドでlocalhostの装置管理サーバーから情報を取得する場合の例を示す。
.. code-block:: sh
# 現在の測定のRun Noを取得する
$ curl http://localhost:8086/apiopen/RunNo
# 現在の測定の状態を取得する
$ curl http://localhost:8086/apiopen/Status
# Run No 12345の測定の開始時刻および終了時刻を取得する
$ curl http://localhost:8086/apiopen/RunInfo/12345
レスポンスはXMLで返される。
- 現在の測定のRun Noを取得する場合のレスポンス例
.. code-block:: xml
RunNo
OK
0
809
- 現在の測定の状態を取得する場合のレスポンス例
.. code-block:: xml
Status
OK
0
Reserved
- 指定したRun Noの測定の開始時刻および終了時刻を取得する場合のレスポンス例
.. code-block:: xml
RunInfo
OK
0
2023-10-01T12:00:00+09:00
2023-10-01T12:30:00+09:00
アクセス許可されていないIPアドレスからアクセスした場合は以下のようなレスポンスが返される。
.. code-block:: xml
RunNo
NG
0
Access Denied