はじめに
このドキュメントは、J-PARC加速器向けにインストールしたArchiver Appliance (AA)の運用メモです。適宜読み替えて下さい。
AAを運用するには、管理用webappを使うか、 Business Process Logics (BPL)と呼ばれるAPIを使います。
- BPLを使ったスクリプトの例が次のURLにあります
https://github.com/slacmshankar/epicsarchiverap/tree/master/docs/samples
J-PARC加速器向けのBPLを使ったスクリプトはMercurialでバージョン管理していて、リポジトリは
/jk/dev/operation_app/jkControl/ArchiverAppliance/mgmt/
に置かれています
- 必要に応じてツールが増えていくことでしょう
- 2018年8月現在、リポジトリはJ-PARCの加速器制御ネットワーク内からのみアクセス可能です
AAにアーカイブするレコードを登録する
スクリプトからレコードを登録する
archivePV.pyを走らせて、複数のレコードをAAに登録することができます (/archivePV を使う)
- -p オプションでサンプリング間隔を指定できます
- -s オプションをつけるとScanになります(デフォルトはMonitorです)
- -n オプションをつけると、登録直後に/skipAliasCheckを呼びます(後述)
- -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の管理画面からレコードを登録する
- webブラウザで管理用webappにアクセスします
- テキストボックスにレコード名を入力します
- Archive (specify sampling period)をクリックするとSampling period等の入力画面に切り替わります
- Sampling mode (Monitor/Scan?)とSampling periodを入力します。その他の設定は入力しないでおきます
- OKをクリックします
- 数分待ってCheck statusをクリックし、statusの欄が'Being archived'になったことを確認します
Channel Archiverの設定からアーカイブするレコードをimportする
AAはChannel Archiverの設定からアーカイブするレコードをimportすることができます
- Integration をクリック(http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/integration.html にforwardされる)
- Upload Channel Archiver Configuration の"参照"ボタンをクリック
- ダイアログにChannel Archiverのxmlファイルを指定してOKをクリック
- "Upload"ボタンを押す
- 既にアーカイブされているレコードの設定(sampling method, sampling mode)を変えることはできません
- /skipAliasCheckは指定できません
アーカイブを停止する
AAからレコードを削除すると、保存してあるデータも削除されてしまいます。
- アーカイブを停止した後もデータを読み出したい場合は、AAからレコードを削除してはいけません。
- アーカイブを停止した後もデータを読み出したい場合は、AAからレコードを削除してはいけません。
スクリプトから停止する
pausePV.pyを使うと、複数のレコードのアーカイブを停止できます (/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の管理画面から停止する
- webブラウザで管理用webappにアクセスします
- テキストボックスにアーカイブを停止したいレコード名を入力します
- レコード名にはワイルドカードが使えます
- Check Statusをクリックすると、マッチしたレコードの一覧が表示されます
- 各レコードのDetailをクリックし、レコードの詳細情報を表示します
- Pause archivineをクリックすると、アーカイブが停止します
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
ブラウザから
- webブラウザで管理用webappにアクセスします
- テキストボックスにレコード名を入力します
- Check statusをクリックします
- 各レコードのDetailsをクリックすると、より詳細な情報が表示されます
- レコード名にはワイルドカード(*)が使えます
- アーカイブされている場合はstatus欄が'Being archived'になります
- レコードを登録してから数分間、AAはレコードの情報を収集します。その間はstatusの欄が'Initial sampling'になります
- レコードが見つかるまで、statusは'Initial sampling'のままです
- 登録されていないレコードや、古いIOCでレコード名が長すぎる場合は'Not being archived'になります
AAの落とし穴
レコードタイプが変わった場合
アーカイブしているレコードの型が変わった場合、AAはそのレコードのアーカイブを停止するようになっています(参考: https://slacmshankar.github.io/epicsarchiver_docs/admin.html)。
- checkTypeChangedPVs.py でレコードタイプが変わったためにアーカイブが停止しているレコードを調べます (/getPVsByDroppedEventsTypeChange を使う)
アーカイブを再開するには、次の以下の2つの方法があります:
- アーカイブ内のレコード名を変える
- 現行のレコードをpauseする
- 新しい名前に変える (/renamePV を使う)
- 旧名のレコードを削除する
- 新規にアーカイブに追加する
- アーカイブのレコードタイプを変える
- レコードのアーカイブをpauseする
- consolidateDataForPV.pyでconsolidateする (/consolidateDataForPV を使う)
- 過去データのpbファイルを全て書き換えるので、pbファイルをバックアップしておくのが望ましい
- バックアップ先は、例えば /localdata/archappl/backup-typechange/YYYYMMDD/ にしておく
- Channel Archiverから変換したデータもバックアップするか、退避してデータタイプを指定して再度変換する
- changeTypeForPV.py でレコードタイプを変える (/changeTypeForPV を使う)
- アーカイブを再開する (/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文字に切り詰められます。そのため、本名のレコードを見つけることができません
- 登録直後に/skipAliasCheck?pv=...を呼ぶと、aliasのチェックを省略します
Aliasのみのレコード登録(路川@東日技研)
- skipAliasCheckを付けてAAに登録すると、そのレコードは通常の方法では設定の変更/削除が不可能になる。(最新版で確認済)
- アーカイブ条件の変更、pause等の操作が効かない。→ Aliasの本名のレコードを操作しようとしてエラーになる。
- 登録を削除するためには、pauseしないと削除できない。→ 削除しようとするのはAlias。
- 操作を受け付けるようにするには、DBのPVAliasesに登録されている該当レコードを直接削除して、AAを再起動。
- この操作を行うと、AAはAliasレコードではないと判断するようで、通常の操作を受け付けるようになる。
- 動作の保証はできないので、自己責任で。
参考
Last modified 4 months ago
Last modified on 09/06/24 12:08:55