Changes between Version 3 and Version 4 of misc/botlog_pas


Ignore:
Timestamp:
08/20/18 18:32:24 (15 months ago)
Author:
michkawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/botlog_pas

    v3 v4  
    77KEKBで使用されているZlogの代替として、電子ログシステム(botlog)と画像ログシステム(!PrintAnyServer)を開発した。 
    88 
    9 == パッケージインストール == 
     9= パッケージインストール = 
    1010 
    1111このシステムのインストールやその運用は、サーバーシステム管理者でroot権限を持っていることが前提のシステムなので注意。 
    1212 
    1313 
    14 === インストール環境 === 
     14== インストール環境 == 
    1515 
    1616インストールするシステムは、 
     
    3434 
    3535 
    36 === パッケージ展開 === 
     36== パッケージ展開 == 
    3737 
    3838電子ログシステム関連のプログラムのほとんどは、{{{/opt/OperationLog}}}に置くようにしてある。[[br]] 
     
    6767}}} 
    6868 
    69 展開後、ライブラリパスを設定し、{{{/opt/OperationLog/lib}}}を使用可能にする。 
     69展開後、ライブラリパスを設定し、{{{/opt/OperationLog/local/lib}}}を使用可能にする。 
    7070 
    7171{{{ 
     
    8989}}} 
    9090 
    91 === 管理ユーザー設定 === 
     91== 管理ユーザー設定 == 
    9292 
    9393電子ログの管理ユーザーを設定する。[[br]] 
     
    9696展開した{{{/opt/OperationLog}}}以下のディレクトリは、所有者が{{{uid:501,gid:502}}}になっているので、ファイルは適切な所有者に変更すること。 
    9797 
    98 === PrintAnyServerの起動 === 
     98== PrintAnyServerの起動 == 
    9999 
    100100PrintAnyServerの本体は、httpdとは別のプロセスとして動作しているので、事前に起動させておく必要がある。[[br]] 
     
    114114}}} 
    115115 
    116 正常に起動できれば、以上のようなメッセージが表示される。 
    117  
    118  
    119 === 動作確認 === 
     116正常に起動できれば、以上のようなメッセージが表示される。[[br]] 
     117 
     118 
     119== 動作確認 == 
    120120 
    121121同一ネットワーク上のPCでWebブラウザを立ち上げて、それぞれ{{{http://(HOSTNAMEorIPADDR)/TEST/botlog/edit}}}と{{{http://(HOSTNAMEorIPADDR)/printView}}}にアクセスすると画面が表示されるはずである。[[br]] 
     
    126126 
    127127 
    128 == 設定 == 
     128画面を確認したら、PrintAnyServerは一旦{{{CTRL+C}}}で終了しておく。 
     129 
     130 
     131= 設定 = 
    129132 
    130133この状態でも一般的な使用は可能なので、そのまま使っても問題はないが、最低でも{{{http://(HOSTNAMEorIPADDR)/TEST/botlog/***}}}の{{{/TEST}}}は変更したほうがいいだろう。[[br]] 
     
    133136 
    134137{{{ 
    135 [root@installtest2 ~]# service httpd restart 
     138[root@localhost ~]# service httpd restart 
    136139Stopping httpd:                                            [  OK  ] 
    137140Starting httpd:                                            [  OK  ] 
    138141}}} 
    139142 
    140 === botlog === 
    141  
    142 ==== URL変更 ==== 
     143== botlog == 
     144 
     145=== URL変更 === 
    143146接続先URLが、{{{/TEST/botlog/***}}}となっているので、これを変更する。[[br]] 
    144147 
     
    169172 
    170173修正箇所は{{{getServerCfg:root}}}。[[br]] 
    171 修正後に、httpdを再起動し、{{{http://(HOSTNAMEorIPADDR)/EUJP/botlog/edit}}}にアクセスしすると同じデータが表示される。 
    172  
    173 ==== DB ==== 
     174修正後に、httpdを再起動し、{{{http://(HOSTNAMEorIPADDR)/EUJP/botlog/edit}}}にアクセスすると変更前と同じデータが表示される。 
     175 
     176=== DB === 
    174177 
    175178デフォルトでは、sqlite3が動作確認用DBとして設定されている。[[br]] 
     
    213216PostgreSQL自体の設定はここでは説明しない。 
    214217 
    215 ==== セクション(グルーブ)設定 ==== 
     218=== セクション(グルーブ)設定 === 
    216219 
    217220セクション名の設定は、SQLを直接実行するか、{{{/opt/OperationLog/botlog/sql/[sqlite3|PostgreSQL]/section.sql}}}を編集したデータを各DB用のコンソールから設定する。[[br]] 
     
    236239テーブルがない状態でこれらのスクリプトを起動すると、いくつかエラーが表示されるが、無視してもいい。 
    237240 
    238 === !PrintAnyServer === 
    239  
    240 ==== 設定 ==== 
     241 
     242== !PrintAnyServer == 
     243 
     244=== URL変更 === 
    241245''' 
    242246設定の変更は管理ユーザーで行うが、プログラムの実行は{{{root}}}で行うので注意。'''[[br]] 
    243247ディレクトリ名をbotlogと合わせるようにする場合には、設定ファイルと{{{/var/www/html/~}}}のディレクトリ名を変更する。[[br]] 
     248 
     249変更しない場合にはここを読み飛ばして構わない。[[br]] 
     250 
    244251 
    245252ここでは、例としてbotlogと同じく{{{EUJP}}}としておく。[[br]] 
     
    276283[root@localhost ~]$ cd /var/www/html 
    277284[root@localhost html]$ mkdir EUJP 
    278 [root@localhost html]$ mmv printView EUJP 
    279 }}} 
    280  
    281 ==== 動作確認 ==== 
     285[root@localhost html]$ mv printView EUJP 
     286}}} 
     287 
     288=== 動作確認 === 
    282289 
    283290PrintAnyServerは、サーバー起動後にWeb画面から画像を登録して動作を確認する。[[br]] 
     291 
     292まずは、rootになってからPrintAnyServerを再起動する。 
     293 
     294{{{ 
     295[root@localhost ~]# cd /opt/OperationLog/PrintAnyServer 
     296[root@localhost PrintAnyServer]# source /opt/OperationLog/etc/env.sh 
     297[root@localhost PrintAnyServer]# python2.7 printAnyServer.py conf/eujp.cfg 
     298Bottle v0.12.13 server starting up (using PasteServer())... 
     299Listening on http://0.0.0.0:9090/ 
     300Hit Ctrl-C to quit. 
     301 
     302serving on 0.0.0.0:9090 view at http://127.0.0.1:9090 
     303}}} 
     304 
     305Web画面を起動し、クリップボードに画像を読み込んでから、"Paste clipboard image or Drop image file"上で右クリックして、"Paste"を選択する。[[br]] 
     306画像のサムネイルとキャプションが入力できるダイアログボックスが表示されるので、"登録"ボタンを押下する。[[br]] 
    284307正常に動作すれば画像が表示され、{{{/opt/OperationLog/data/pas}}}に日付ディレクトリとindex_list.txtというファイルが作成される。[[br]] 
    285 動作しない場合は、ほとんどがログファイル周りなので、{{{/var/log/httpd/error_log}}}でエラーが発生していないかを確認する。[[br]] 
    286 エラーが発生している場合には、{{{/opt/OperationLog/log/pas/*.log}}}のパーミッションを755にして、 
    287  
    288  
     308 
     309 
     310=== 起動スクリプト === 
     311 
     312PrintAnyServerをprocServで起動するためのスクリプト"{{{/opt/OperationLog/PrintAnyServer/bootPas.sh}}}"を作成してあるので、通常運用時に使用して欲しい。[[br]] 
     313ファイルの内容は以下の通り。 
     314 
     315{{{ 
     316#!/bin/sh 
     317 
     318TOP=/opt/OperationLog 
     319 
     320PROCSERV=$TOP/local/bin/procServ 
     321PYTHON=$TOP/local/bin/python 
     322 
     323PAS_TOP=$TOP/PrintAnyServer 
     324PAS=$PAS_TOP/printAnyServer.py 
     325PAS_CONFIG=$PAS_TOP/conf/test.cfg 
     326 
     327PROC_LOG=$TOP/log/pas/procServ.log 
     328PROC_PORT=20200 
     329 
     330$PROCSERV -P $PROC_PORT -L $PROC_LOG $PYTHON $PAS $PAS_CONFIG 
     331}}} 
     332 
     333通常は、{{{PAS_CONFIG}}}で設定ファイルの名前を変更する程度だが、実際に使用する際には、環境に合わせてスクリプトの内容は変更してから使用すること。[[br]] 
     334 
     335 
     336=== その他の設定 === 
     337 
     338基本的な設定以外にも、[wiki:misc/botlog_pas/client_download Windowsクライアント用プログラムのダウンロード機能]と[wiki:misc/botlog_pas/printer 同時印刷機能]があるが、これらは別ページで解説する。 
     339 
     340 
     341== EPICS record monitor == 
     342 
     343EPICS record monitor は、botlog用Web APIを使用した外部プログラムで、登録されているEPICSレコードに変化があった場合、botlogに自動的にメッセージを登録する。[[br]] 
     344監視するレコードとメッセージの関連付けは、pythonで記述し、1メッセージにつき、1ファイルを作成する必要がある。[[br]] 
     345 
     346プログラム本体は、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor}}}の{{{epicsRecordMonitor.py}}}で、各設定は{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/Modules}}}に設定する。 
     347 
     348=== 設定ファイル === 
     349 
     350設定ファイルは、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/test_ermi.py}}}をひな型にして作成し、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/Modules}}}に保存すれば、{{{epicsRecordMonitor.py}}}を起動した際に読み込まれ、実行される。 
     351 
     352{{{ 
     353# -*- coding: utf-8 -*- 
     354# 
     355 
     356""" 
     357このプログラムを EPICS Record Monitor 定義のひな型として使用すること 
     358 
     359各設定に使用する場合に変更する箇所は、pvs変数とexecFunc関数 
     360クラス名は変更しないこと 
     361 
     362""" 
     363 
     364from epicsRecordMonitorItem import * 
     365 
     366# 
     367# 
     368# 
     369class ermi(epicsRecordMonitorItemIF): 
     370    # 
     371    # クラスコンストラクタ 
     372    # ここで使用するレコード名を設定 
     373    # 
     374    def __init__(self): 
     375        pvs = ['jane', 'fred']    # ここに使用するレコード名をリスト形式で設定 
     376        self.setPvs(pvs) 
     377 
     378    # 
     379    # メッセージ出力条件を記述 
     380    # 関数の引き数 pvs に関数実行時のデータが渡される 
     381    # データの形式は辞書型を含んだリストで、構造は以下のようになっている 
     382    # 
     383    # [ 
     384    #   { 
     385    #     'name'   : record name, 
     386    #     'prevVal': previos value, 
     387    #     'val'    : current value, 
     388    #     'time'   : record process time 
     389    #   }, 
     390    #     : 
     391    # ] 
     392    # 
     393    # リストの順番はコンストラクタで設定した順番 
     394    # 
     395    # 戻り値はメッセージのみを返すようにして、メッセージがない場合には None を返すこと 
     396    # 
     397    def execFunc(self, pvs): 
     398        janePv = pvs[0] 
     399        fredPv = pvs[1] 
     400 
     401        rtn = None 
     402        if janePv['val'] < fredPv['val'] and fredPv['prevVal'] != fredPv['val']: 
     403            rtn = "fred is over jane!!!" 
     404 
     405        return rtn 
     406 
     407}}} 
     408 
     409 
     410 
     411