| 1 | [[PageOutline]] |
| 2 | |
| 3 | = はじめに = |
| 4 | このドキュメントは、J-PARC加速器向けにインストールしたArchiver Appliance (AA)の運用メモです。適宜読み替えて下さい。 |
| 5 | |
| 6 | AAを運用するには、[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]を使うか、 |
| 7 | [https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html Business Process Logics (BPL)]と呼ばれるAPIを使います。 |
| 8 | * BPLを使ったスクリプトの例が次のURLにあります |
| 9 | {{{ |
| 10 | https://github.com/slacmshankar/epicsarchiverap/tree/master/docs/samples |
| 11 | }}} |
| 12 | |
| 13 | J-PARC加速器向けのBPLを使ったスクリプトはMercurialでバージョン管理していて、リポジトリは |
| 14 | {{{ |
| 15 | /jk/dev/operation_app/jkControl/ArchiverAppliance/mgmt/ |
| 16 | }}} |
| 17 | に置かれています |
| 18 | * 必要に応じてツールが増えていくことでしょう |
| 19 | * 2018年8月現在、リポジトリはJ-PARCの加速器制御ネットワーク内からのみアクセス可能です |
| 20 | |
| 21 | = AAにアーカイブするレコードを登録する = |
| 22 | == スクリプトからレコードを登録する == |
| 23 | archivePV.pyを走らせて、複数のレコードをAAに登録することができます ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /archivePV を使う]) |
| 24 | * -p オプションでサンプリング間隔を指定できます |
| 25 | * -s オプションをつけるとScanになります(デフォルトはMonitorです) |
| 26 | * -n オプションをつけると、登録直後に/skipAliasCheckを呼びます[[Archiver Appliance 運用メモ#AAとレコードのaliasと古いIOC|(後述)]] |
| 27 | * -h オプションをつけるとhelpが表示されます |
| 28 | {{{ |
| 29 | % archivePV.py -h |
| 30 | usage: archivePV.py [-h] [-u URL] [-p NUM] [-s] [-n] pv [pv ...] |
| 31 | |
| 32 | positional arguments: |
| 33 | pv list of PVs |
| 34 | |
| 35 | optional arguments: |
| 36 | -h, --help show this help message and exit |
| 37 | -u URL This is the URL to the mgmt bpl interface of the appliance cluster. |
| 38 | [Default: http://jkjarchiver-ap.mr.jkcont:17665/mgmt/bpl] |
| 39 | -p NUM Set sampling period to NUM secs [default: 1.0] |
| 40 | -s Set to SCAN mode [default: MONITOR] |
| 41 | -n Skip alias check |
| 42 | }}} |
| 43 | |
| 44 | == AAの管理画面からレコードを登録する == |
| 45 | 1. webブラウザで[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]にアクセスします |
| 46 | 2. テキストボックスにレコード名を入力します |
| 47 | [[Image(AA-archivePV-01.png,500px)]] |
| 48 | 3. Archive (specify sampling period)をクリックするとSampling period等の入力画面に切り替わります |
| 49 | 4. Sampling mode (Monitor/Scan)とSampling periodを入力します。その他の設定は入力しないでおきます |
| 50 | [[Image(AA-archivePV-02.png,500px)]] |
| 51 | 5. OKをクリックします |
| 52 | 6. 数分待ってCheck statusをクリックし、statusの欄が'Being archived'になったことを確認します |
| 53 | |
| 54 | == Channel Archiverの設定からアーカイブするレコードをimportする == |
| 55 | AAはChannel Archiverの設定からアーカイブするレコードをimportすることができます |
| 56 | 1. Integration をクリック(http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/integration.html にforwardされる) |
| 57 | 1. Upload Channel Archiver Configuration の"参照"ボタンをクリック |
| 58 | 1. ダイアログにChannel Archiverのxmlファイルを指定してOKをクリック |
| 59 | 1. "Upload"ボタンを押す |
| 60 | 1. 既にアーカイブされているレコードの設定(sampling method, sampling mode)を変えることはできません |
| 61 | 1. [[Archiver Appliance 運用メモ#AAとレコードのaliasと古いIOC|/skipAliasCheck]]は指定できません |
| 62 | |
| 63 | = アーカイブを停止する = |
| 64 | AAからレコードを削除すると、保存してあるデータも削除されてしまいます。 |
| 65 | * アーカイブを停止した後もデータを読み出したい場合は、AAからレコードを削除してはいけません。 |
| 66 | * アーカイブを停止した後もデータを読み出したい場合は、AAからレコードを削除してはいけません。 |
| 67 | |
| 68 | == スクリプトから停止する == |
| 69 | pausePV.pyを使うと、複数のレコードのアーカイブを停止できます ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /pauseArchivingPV を使う]) |
| 70 | * -h オプションをつけるとhelpが表示されます |
| 71 | {{{ |
| 72 | % ./pausePV.py -h |
| 73 | usage: pausePV.py [-h] [-u URL] pv [pv ...] |
| 74 | |
| 75 | positional arguments: |
| 76 | pv list of PVs |
| 77 | |
| 78 | optional arguments: |
| 79 | -h, --help show this help message and exit |
| 80 | -u URL This is the URL to the mgmt bpl interface of the appliance cluster. For |
| 81 | example, http://jkjarchiver-ap.mr.jkcont:17665/mgmt/bpl |
| 82 | }}} |
| 83 | |
| 84 | == AAの管理画面から停止する == |
| 85 | 1. webブラウザで[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]にアクセスします |
| 86 | 2. テキストボックスにアーカイブを停止したいレコード名を入力します |
| 87 | * レコード名にはワイルドカードが使えます |
| 88 | [[Image(AA-pausePV-01.png,500px)]] |
| 89 | 3. Check Statusをクリックすると、マッチしたレコードの一覧が表示されます |
| 90 | [[Image(AA-pausePV-02.png,500px)]] |
| 91 | 4. 各レコードのDetailをクリックし、レコードの詳細情報を表示します |
| 92 | [[Image(AA-pausePV-03.png,500px)]] |
| 93 | 5. Pause archivineをクリックすると、アーカイブが停止します |
| 94 | [[Image(AA-pausePV-04.png,500px)]] |
| 95 | |
| 96 | = AAの運用状況を確認する = |
| 97 | == AAのログを確認する == |
| 98 | {{{ |
| 99 | find /opt/archappl -wholename '*/logs/*' | xargs grep xception |
| 100 | find /opt/archappl -wholename '*/logs/*' | xargs grep FATAL |
| 101 | find /opt/archappl -wholename '*/logs/*' | xargs grep OutOfMemoryError |
| 102 | }}} |
| 103 | |
| 104 | == レコードの状態を確認する == |
| 105 | === スクリプトから === |
| 106 | * checkNeverConnectedPVs.py |
| 107 | * checkCurrenctlyDisconnectedPVs.py |
| 108 | * checkPausedPVs.py |
| 109 | * checkTypeChangedPVs.py |
| 110 | * getPVsByDroppedEventsBuffer.py |
| 111 | |
| 112 | === ブラウザから === |
| 113 | 1. webブラウザで[http://jkjarchiver-ap.mr.jkcont:17665/mgmt/ui/index.html 管理用webapp]にアクセスします |
| 114 | 1. テキストボックスにレコード名を入力します |
| 115 | 1. Check statusをクリックします |
| 116 | 1. 各レコードのDetailsをクリックすると、より詳細な情報が表示されます |
| 117 | * レコード名にはワイルドカード(*)が使えます |
| 118 | * アーカイブされている場合はstatus欄が'Being archived'になります |
| 119 | * レコードを登録してから数分間、AAはレコードの情報を収集します。その間はstatusの欄が'Initial sampling'になります |
| 120 | * レコードが見つかるまで、statusは'Initial sampling'のままです |
| 121 | * 登録されていないレコードや、古いIOCでレコード名が長すぎる場合は'Not being archived'になります |
| 122 | [[Image(AA-archivePV-03.png,500px)]] |
| 123 | |
| 124 | = AAの落とし穴 = |
| 125 | |
| 126 | == レコードタイプが変わった場合 == |
| 127 | アーカイブしているレコードの型が変わった場合、AAはそのレコードのアーカイブを停止するようになっています(参考: [https://slacmshankar.github.io/epicsarchiver_docs/admin.html https://slacmshankar.github.io/epicsarchiver_docs/admin.html])。 |
| 128 | * checkTypeChangedPVs.py でレコードタイプが変わったためにアーカイブが停止しているレコードを調べます ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /getPVsByDroppedEventsTypeChange を使う]) |
| 129 | |
| 130 | アーカイブを再開するには、次の以下の2つの方法があります: |
| 131 | * アーカイブ内のレコード名を変える |
| 132 | 1. 現行のレコードをpauseする |
| 133 | 1. 新しい名前に変える ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /renamePV を使う]) |
| 134 | 1. 旧名のレコードを削除する |
| 135 | 1. 新規にアーカイブに追加する |
| 136 | * アーカイブのレコードタイプを変える |
| 137 | 1. レコードのアーカイブをpauseする |
| 138 | 1. consolidateDataForPV.pyでconsolidateする ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /consolidateDataForPV を使う]) |
| 139 | 1. 過去データのpbファイルを全て書き換えるので、pbファイルをバックアップしておくのが望ましい |
| 140 | 1. バックアップ先は、例えば /localdata/archappl/backup-typechange/YYYYMMDD/ にしておく |
| 141 | 1. Channel Archiverから変換したデータもバックアップするか、退避してデータタイプを指定して再度変換する |
| 142 | 1. changeTypeForPV.py でレコードタイプを変える ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /changeTypeForPV を使う]) |
| 143 | * [http://slacmshankar.github.io/epicsarchiver_docs/api/org/epics/archiverappliance/config/ArchDBRTypes.html 指定できるレコードタイプの一覧] |
| 144 | 1. アーカイブを再開する ([https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /resumeArchivingPV を使う]) |
| 145 | |
| 146 | == AAとレコードのalias(と古いIOC) == |
| 147 | * AAに登録したレコードがaliasの場合、AAは本名でアーカイブしようとします |
| 148 | * レコード名とNAME$フィールドが異なる場合は、NAME$フィールドの文字列を本名として扱います |
| 149 | * NAME$フィールドがない場合は、NAMEフィールドを使います |
| 150 | * 名前が40文字以上のレコードが3.14.10かそれ以前のIOCにある場合、AAへの登録に失敗します |
| 151 | * IOCのepics baseが3.14.10或いはそれ以前の場合、NAME$フィールドはありません |
| 152 | * レコード名が40文字以上の場合、NAMEフィールドは39文字に切り詰められます。そのため、本名のレコードを見つけることができません |
| 153 | * 登録直後に[https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html /skipAliasCheck?pv=...]を呼ぶと、aliasのチェックを省略します |
| 154 | |
| 155 | == Aliasのみのレコード登録(路川@東日技研) == |
| 156 | * skipAliasCheckを付けてAAに登録すると、そのレコードは通常の方法では設定の変更/削除が不可能になる。(最新版で確認済) |
| 157 | * アーカイブ条件の変更、pause等の操作が効かない。→ Aliasの本名のレコードを操作しようとしてエラーになる。 |
| 158 | * 登録を削除するためには、pauseしないと削除できない。→ 削除しようとするのはAlias。 |
| 159 | * 操作を受け付けるようにするには、DBのPVAliasesに登録されている該当レコードを直接削除して、AAを再起動。 |
| 160 | * この操作を行うと、AAはAliasレコードではないと判断するようで、通常の操作を受け付けるようになる。 |
| 161 | * '''動作の保証はできないので、自己責任で。''' |
| 162 | |
| 163 | = 参考 = |
| 164 | * [https://slacmshankar.github.io/epicsarchiver_docs/admin.html Archiver Appliance Administration Guide] |
| 165 | * [https://slacmshankar.github.io/epicsarchiver_docs/api/mgmt_scriptables.html Business Process Logics for scripting] |