PISOについての纏め
今 担当しているシステムで、PISOを導入しています。
PISOは、データベースを監査するソフト。
私はデータベースを担当しており、PISOは他社が担当しているため
詳しくありませんが、ポイントを纏めてみました。
現在 担当しているシステムでは、以下のように使用しています。
・SQLとセッションの監視ルールを設定し、ルール違反があればシスログへ出力
・監視ソフトがシスログを監視し、キーワードに引っ掛かるとメールを送付
■------------------
メモリ
■------------------
マニュアルには、以下としか書かれていない。
・メモリ :8GB以上
・SWAP領域:RAMのサイズの0.75倍
■------------------
1台ごとの稼働上限値
■------------------
マニュアルに以下と書かれているが、何らかで計測しないと難しい。
※以下を超える場合、2台以上必要
・1時間当たりの件数:最大40万件/1インスタンス
・1日の合計件数 : 900万件/全インスタンス
1インスタンス追加する毎に、プロセスが2つずつ増えるため、
インスタンスを追加していくと、使用メモリ量が少しずつ増えていく。
※ジョブでサービスを再起動しているため、このプロセスのメモリは 大きくならない。
上記以外にもプロセスが40個以上あり、ps参照時のRSSは
サイズは殆どが変わらないが、2つのみ、徐々に増えていくプロセスがある。
※こちらのプロセスはPIDが変わらず、起動しっぱなし。
PISOは、用途が2つあるため、サーバが2つある。
・A用:20超インスタンス
・B用: 数インスタンス
PISOは、ORACLEのSGA_TARGETを6GBで設定しており、
多くのプロセスのVSZが6GBで、RSSが増減する。
2つのプロセスのみ RSS値が徐々に増えていき、各3.2GBと3.4GBまで増えた。
本番はインスタンス(プロセス)が多く、恐らくメモリが足りないため、
3.2GBと3.4GBまで増えていたが、災対を確認したら、
1つのプロセスのRSS値が4GBを超えていた。
現在 担当しているシステムでは、12インスタンスまで問題なかったが、以降、
SWAPの空き容量が少しずつ減っていき、Freezeした。(接続できなくなった)
※PISOのみ使用している専用サーバで、Frreze後に初めて気付いた。
メモリ/SWAPを、以下の 上から下へ 変更した。
・メモリ :10GB
・SWAP領域: 5GB(導入時マニュアルを読んでおらず、メモリの半分に設定)
↓
・メモリ :16GB
・SWAP領域:12GB
■------------------
SQL監視
■------------------
監視したいテーブルを設定すると、以下に対するSQLが記録される。
1.設定したテーブル
2.上記1.の後で追加したテーブル
2.があり、1.に戻したい場合、ターゲットリロードを実施する。
※2.が蓄積されていることに気付かない場合があるので注意
SQLは、更新やWHERE句に指定した値は記録されず、「$1」等と記録される。
取得元が不明だが、「Elapsed Time」(処理時間)も記録される。
■------------------
除外設定
■------------------
クラスタ環境の場合、ハートビートが頻繁に行われるため、
ハートビートの記録を除外する事が可能。
OSUSER、MACHINE、PROGRAM等を設定可能で、合致すれば記録されない。
設定すると、以下にファイルが作成される。
$IST_HOME/ホスト名/インスタンス名/etc/exclusion_session.lst(セッション除外の場合)
※OSUSERについて
Linuxの場合、/proc/net/tcpのuidカラムから取得しており、
接続が短いと取得できない、とサポートから回答されたため、注意。
現在 担当しているシステムの場合、ハートビートの接続が
1インスタンスにつき、10件/日ほどOSUSERがNULLになっており、
除外設定に合致せず、アラートが挙がっていた。
Linuxの場合、ローカル接続の場合は取得できるが、
他端末からの接続の場合、取得できない。
■------------------
ジョブ
■------------------
スケジューリング機能を標準搭載し、以下にcrontabの形式で書かれる。
$IST_HOME/etc/jobtbl
バックアップ系は、以下が設定されている。
17 * * * * Backup_Controlfile.sub
5 1 * * * usrlog_backup.sub
0 1 * * 0 ConsoleBackup.sub
30 1 * * * LogDataBackup.sub
0 3 * * 1 OracleBackup.sub
追加設定することが可能。
上記で実行されるモジュールは、以下のディレクトリに格納されており、
ソースに 最大実行時間が書かれている。
$IST_HOME/stage/文字コード/admin
LogDataBackup.subで サービスを再起動しており、
OracleBackup.sub内でも、LogDataBackup.subを起動している。
以下の仕組みがあるため、サービスが停止しても 問題ない。
Targetで取得した監査ログデータをネットワーク障害などの理由でISMへ
送信できなかった場合、そのデータを一時的にPISO用SWAP領域に格納する。
格納されたデータは、通信が正常に確立された時点で自動的に送信する。
チェック系では、以下が設定されている。
*/5 * * * * ISMService_Alive.sub
0 6,18 * * * Disk_Free.sub
*/10 * * * * Memory_Swap_Free.sub
7 * * * * CheckDatafile.sub
Memory_Swap_Freeは、SWAPの空き容量を10分毎にチェックしており、
以下の閾値を下回ったら、SWAPの空き容量含め、シスログに出力される。
・Windows
・警告レベル1: 50MB
・警告レベル2:100MB
・警告レベル3:200MB
・UNIX
・警告レベル1:512MB
・警告レベル2: 1GB
・警告レベル3:1.5GB
■------------------
最大実行時間
■------------------
ジョブ毎に最大実行時間が設定されており、超過したら 異常終了する。
以下に、ジョブの実行/終了/エラー等が出力されるため、
監視すれば、ジョブの異常を即時に発見できる。
$IST_HOME/tmp/console.log
バックアップ系の最大実行時間は、以下に設定されている。(単位:分)
・Backup_Controlfile:MAXWTM=10
・usrlog_backup :MAXWTM=10
・ConsoleBackup :MAXWTM=6
・LogDataBackup :MAXWTM=180
・OracleBackup :MAXWTM=180
月曜日 3:00起動の「OracleBackup」は30分以上かかることがあり、
毎時 17分起動の「Backup_Controlfile」と重なると、
「Backup_Controlfile」の処理時間が長くなり、最大実行時間を越え易い。
■------------------
ログ
■------------------
・ジョブのログは以下
$IST_HOME/tmp/console.log
$IST_HOME/log/console.bkup(logディレクトリ配下だが、こちらの方が古い)
■------------------
メッセージ
■------------------
マニュアルに以下と記載されている。
-----
当製品はUTF-8 の入出力をサポートしておりません。
なお、英語版でインストールした場合には、
画面表示の文字コードとしてUTF-8 を採用しています
-----
メッセージは、メッセージファイルを持っており、
メッセージファイルから出力していると思われる。
メッセージファイルは、以下の通り 文字コード毎にファイルを持っている。
・@@@@_C.msg
・@@@@_EUC_JP.msg
・@@@@_SJIS.msg
UTF-8でメッセージを参照すると文字化けする場合があるが、
メッセージファイルで 内容を確認できる。
※ツールを使用してメッセージ監視している場合に便利
■------------------
マイニングサーチ
■------------------
マイニングサーチという機能があり、ログを条件指定して検索でき、
スケジューリングしてファイルへ出力することが可能。
設定すると、以下に設定ファイルが作成される。
$IST_HOME/admin/<設定名称>.msr
CSVファイルへ出力しており、ヘッダー行を出力しているが、
明細行の有/無を判定せず、必ずヘッダー行を出力している。
ログは以下に出力され、出力件数が書かれるため、
ログを見れば 件数を把握できる。
$IST_HOME/log/MS_<設定名称>_YYYYMMDD_HHMI24SS_CSV.log
■------------------
警告ルール
■------------------
rulectl export
コマンドを実行すると、現在設定している警告ルールが以下に出力され、
全ルールを確認するのに便利。
※条件を指定できるが、指定しないと全てのルールが出力される。
$IST_HOME/log/RULE_YYYYMMDDHHMI24.log
警告ルールに合致してアラートが挙がる場合、
警告ルール名が出力されるため、分かり易い名前にしておかないと、
何が起きているのか 判断できない。
■------------------
インスタンス追加時の注意点
■------------------
$IST_HOME/install/install.sh
インスタンス追加時、上記を実行するが、中で呼んでいるシェルが
「$IST_HOME/stage/sh」から「$IST_HOME/bin」へコピーして
/bin 配下を実行しているため、セキュリティ対策ソフトを導入
していると、エラーでインストーラーが動かないため、注意。