着眼点の構想

読書、音楽、お酒 などについて、語っていきます。

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 配下を実行しているため、セキュリティ対策ソフトを導入
していると、エラーでインストーラーが動かないため、注意。