wiki:epics/Archiver Appliance 運用メモ

Version 12 (modified by shuei, 3 months ago) (diff)

--

はじめに

このドキュメントは、J-PARC加速器向けに​インストールしたArchiver Appliance (AA)の運用メモです。適宜読み替えて下さい。

AAを運用するには、管理用webappを使うか、 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に登録することができます (/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の管理画面からレコードを登録する

  1. webブラウザで管理用webappにアクセスします
  2. テキストボックスにレコード名を入力します

  1. Archive (specify sampling period)をクリックするとSampling period等の入力画面に切り替わります
  2. Sampling mode (Monitor/Scan?)とSampling periodを入力します。その他の設定は入力しないでおきます

  1. OKをクリックします
  2. 数分待って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される)
  2. Upload Channel Archiver Configuration の"参照"ボタンをクリック
  3. ダイアログにChannel Archiverのxmlファイルを指定してOKをクリック
  4. "Upload"ボタンを押す
  5. 既にアーカイブされているレコードの設定(sampling method, sampling mode)を変えることはできません
  6. /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の管理画面から停止する

  1. webブラウザで管理用webappにアクセスします
  2. テキストボックスにアーカイブを停止したいレコード名を入力します
    • レコード名にはワイルドカードが使えます

  1. Check Statusをクリックすると、マッチしたレコードの一覧が表示されます

  1. 各レコードのDetailをクリックし、レコードの詳細情報を表示します

  1. 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

ブラウザから

  1. webブラウザで管理用webappにアクセスします
  2. テキストボックスにレコード名を入力します
  3. Check statusをクリックします
  4. 各レコードのDetailsをクリックすると、より詳細な情報が表示されます
    • レコード名にはワイルドカード(*)が使えます
    • アーカイブされている場合はstatus欄が'Being archived'になります
    • レコードを登録してから数分間、AAはレコードの情報を収集します。その間はstatusの欄が'Initial sampling'になります
    • レコードが見つかるまで、statusは'Initial sampling'のままです
    • 登録されていないレコードや、古いIOCでレコード名が長すぎる場合は'Not being archived'になります

AAの落とし穴

レコードタイプが変わった場合

アーカイブしているレコードの型が変わった場合、AAはそのレコードのアーカイブを停止するようになっています(参考: https://epicsarchiver.readthedocs.io/en/latest/sysadmin/admin.html)。

アーカイブを再開するには、次の以下の2つの方法があります:

  • アーカイブ内のレコード名を変える
    1. 現行のレコードをpauseする
    2. 新しい名前に変える ([https:epicsarchiver.readthedocs.io/en/latest/developer/mgmt_scriptables.html /renamePV を使う])
    3. 旧名のレコードを削除する
    4. 新規にアーカイブに追加する
  • アーカイブのレコードタイプを変える
    1. レコードのアーカイブをpauseする
    2. consolidateDataForPV.pyでconsolidateする (/consolidateDataForPV を使う)
    3. 過去データのpbファイルを全て書き換えるので、pbファイルをバックアップしておくのが望ましい
    4. バックアップ先は、例えば /localdata/archappl/backup-typechange/YYYYMMDD/ にしておく
    5. Channel Archiverから変換したデータもバックアップするか、退避してデータタイプを指定して再度変換する
    6. changeTypeForPV.py でレコードタイプを変える (/changeTypeForPV を使う)
    7. アーカイブを再開する (/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レコードではないと判断するようで、通常の操作を受け付けるようになる。
    • 動作の保証はできないので、自己責任で。

参考

Attachments (7)

Download all attachments as: .zip