[[PageOutline]] = はじめに = このドキュメントは、J-PARC加速器向けに​インストールしたArchiver Appliance (AA)の運用メモです。適宜読み替えて下さい。 AAを運用するには、[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]を使うか、 [https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html Business Process Logics (BPL)]と呼ばれるAPIを使います。 * BPLを使ったスクリプトの例が次のURLにあります {{{ https://github.com/archiver-appliance/epicsarchiverap/tree/master/docs/docs/source/samples }}} * が、python2向けなのでpython3向けに修正する必要があります J-PARC加速器向けのBPLを使ったスクリプトはMercurialでバージョン管理していて、リポジトリは {{{ /jk/dev/operation_app/jkControl/ArchiverAppliance/mgmt/ }}} に置かれています * 必要に応じてツールが増えていくことでしょう * 2024年8月現在、リポジトリはJ-PARCの加速器制御ネットワーク内からのみアクセス可能です = AAにアーカイブするレコードを登録する = == スクリプトからレコードを登録する == archivePV.pyを走らせて、複数のレコードをAAに登録することができます ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/archivePV を使う]) * -p オプションでサンプリング間隔を指定できます * -s オプションをつけるとScanになります(デフォルトはMonitorです) * -n オプションをつけると、登録直後に/skipAliasCheckを呼びます[[Archiver Appliance 運用メモ#AAとレコードのaliasと古いIOC|(後述)]] * -h オプションをつけるとhelpが表示されます {{{ % archivePV.py -h usage: archivePV.py [-h] [-u URL] [-p NUM] [-s] [-n] pv [pv ...] positional arguments: pv list of PVs optional arguments: -h, --help show this help message and exit -u URL This is the URL to the mgmt bpl interface of the appliance cluster. [Default: http://jkjarchiver-ap.mr.jkcont:17665/mgmt/bpl] -p NUM Set sampling period to NUM secs [default: 1.0] -s Set to SCAN mode [default: MONITOR] -n Skip alias check }}} == AAの管理画面からレコードを登録する == 1. webブラウザで[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]にアクセスします 2. テキストボックスにレコード名を入力します [[Image(AA-archivePV-01.png,500px)]] 3. Archive (specify sampling period)をクリックするとSampling period等の入力画面に切り替わります 4. Sampling mode (Monitor/Scan)とSampling periodを入力します。その他の設定は入力しないでおきます [[Image(AA-archivePV-02.png,500px)]] 5. OKをクリックします 6. 数分待ってCheck statusをクリックし、statusの欄が'Being archived'になったことを確認します == Channel Archiverの設定からアーカイブするレコードをimportする == AAはChannel Archiverの設定からアーカイブするレコードをimportすることができます 1. Integration をクリック(http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/integration.html にforwardされる) 1. Upload Channel Archiver Configuration の"参照"ボタンをクリック 1. ダイアログにChannel Archiverのxmlファイルを指定してOKをクリック 1. "Upload"ボタンを押す 1. 既にアーカイブされているレコードの設定(sampling method, sampling mode)を変えることはできません 1. [[Archiver Appliance 運用メモ#AAとレコードのaliasと古いIOC|/skipAliasCheck]]は指定できません = アーカイブを停止する = AAからレコードを削除すると、保存してあるデータも削除されてしまいます。 * アーカイブを停止した後もデータを読み出したい場合は、AAからレコードを削除してはいけません。 * アーカイブを停止した後もデータを読み出したい場合は、AAからレコードを削除してはいけません。 == スクリプトから停止する == pausePV.pyを使うと、複数のレコードのアーカイブを停止できます ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/pauseArchivingPV を使う]) * -h オプションをつけるとhelpが表示されます {{{ % ./pausePV.py -h usage: pausePV.py [-h] [-u URL] pv [pv ...] positional arguments: pv list of PVs optional arguments: -h, --help show this help message and exit -u URL This is the URL to the mgmt bpl interface of the appliance cluster. For example, http://jkjarchiver-ap.mr.jkcont:17665/mgmt/bpl }}} == AAの管理画面から停止する == 1. webブラウザで[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]にアクセスします 2. テキストボックスにアーカイブを停止したいレコード名を入力します * レコード名にはワイルドカードが使えます [[Image(AA-pausePV-01.png,500px)]] 3. Check Statusをクリックすると、マッチしたレコードの一覧が表示されます [[Image(AA-pausePV-02.png,500px)]] 4. 各レコードのDetailをクリックし、レコードの詳細情報を表示します [[Image(AA-pausePV-03.png,500px)]] 5. Pause archivineをクリックすると、アーカイブが停止します [[Image(AA-pausePV-04.png,500px)]] = AAの運用状況を確認する = == AAのログを確認する == {{{ find /opt/archappl -wholename '*/logs/*' | xargs grep xception find /opt/archappl -wholename '*/logs/*' | xargs grep FATAL find /opt/archappl -wholename '*/logs/*' | xargs grep OutOfMemoryError }}} == レコードの状態を確認する == === スクリプトから === * checkNeverConnectedPVs.py * checkCurrenctlyDisconnectedPVs.py * checkPausedPVs.py * checkTypeChangedPVs.py * getPVsByDroppedEventsBuffer.py === ブラウザから === 1. webブラウザで[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]にアクセスします 1. テキストボックスにレコード名を入力します 1. Check statusをクリックします 1. 各レコードのDetailsをクリックすると、より詳細な情報が表示されます * レコード名にはワイルドカード(*)が使えます * アーカイブされている場合はstatus欄が'Being archived'になります * レコードを登録してから数分間、AAはレコードの情報を収集します。その間はstatusの欄が'Initial sampling'になります * レコードが見つかるまで、statusは'Initial sampling'のままです * 登録されていないレコードや、古いIOCでレコード名が長すぎる場合は'Not being archived'になります [[Image(AA-archivePV-03.png,500px)]] = AAの落とし穴 = == レコードタイプが変わった場合 == アーカイブしているレコードの型が変わった場合、AAはそのレコードのアーカイブを停止するようになっています(参考: [https://epicsarchiver.readthedocs.io/en/latest/sysadmin/admin.html|https://epicsarchiver.readthedocs.io/en/latest/sysadmin/admin.html])。 * checkTypeChangedPVs.py でレコードタイプが変わったためにアーカイブが停止しているレコードを調べます ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/getPVsByDroppedEventsTypeChange を使う]) アーカイブを再開するには、次の以下の2つの方法があります: * アーカイブ内のレコード名を変える 1. 現行のレコードをpauseする 1. 新しい名前に変える ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/renamePV を使う]) 1. 旧名のレコードを削除する 1. 新規にアーカイブに追加する * アーカイブのレコードタイプを変える 1. レコードのアーカイブをpauseする 1. consolidateDataForPV.pyでconsolidateする ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/consolidateDataForPV を使う]) 1. 過去データのpbファイルを全て書き換えるので、pbファイルをバックアップしておくのが望ましい 1. バックアップ先は、例えば /localdata/archappl/backup-typechange/YYYYMMDD/ にしておく 1. Channel Archiverから変換したデータもバックアップするか、退避してデータタイプを指定して再度変換する 1. changeTypeForPV.py でレコードタイプを変える ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/changeTypeForPV を使う]) * [http://slacmshankar.github.io/epicsarchiver_docs/api/org/epics/archiverappliance/config/ArchDBRTypes.html 指定できるレコードタイプの一覧] 1. アーカイブを再開する ([https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|/resumeArchivingPV を使う]) == AAとレコードのalias(と古いIOC) == * AAに登録したレコードがaliasの場合、AAは本名でアーカイブしようとします * レコード名とNAME$フィールドが異なる場合は、NAME$フィールドの文字列を本名として扱います * NAME$フィールドがない場合は、NAMEフィールドを使います * 名前が40文字以上のレコードが3.14.10かそれ以前のIOCにある場合、AAへの登録に失敗します * IOCのepics baseが3.14.10或いはそれ以前の場合、NAME$フィールドはありません * レコード名が40文字以上の場合、NAMEフィールドは39文字に切り詰められます。そのため、本名のレコードを見つけることができません * 登録直後に[https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html|/skipAliasCheck?pv=...]を呼ぶと、aliasのチェックを省略します == Aliasのみのレコード登録(路川@東日技研) == * skipAliasCheckを付けてAAに登録すると、そのレコードは通常の方法では設定の変更/削除が不可能になる。(最新版で確認済) * アーカイブ条件の変更、pause等の操作が効かない。→ Aliasの本名のレコードを操作しようとしてエラーになる。 * 登録を削除するためには、pauseしないと削除できない。→ 削除しようとするのはAlias。 * 操作を受け付けるようにするには、DBのPVAliasesに登録されている該当レコードを直接削除して、AAを再起動。 * この操作を行うと、AAはAliasレコードではないと判断するようで、通常の操作を受け付けるようになる。 * '''動作の保証はできないので、自己責任で。''' = 参考 = * [https://epicsarchiver.readthedocs.io/en/latest/sysadmin/admin.html Archiver Appliance Administration Guide] * [https://epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html|Business Process Logics for scripting]