プロセスアカウンティングとは?
ユーザが、いつどんなコマンドを実行したのかを把握し、これをログとして残すことができる。
【インストール】
RHEL6.1ではpsacctパッケージ
【起動・停止方法】
①/etc/init.d/psacct start (or stop)
この方法で起動する場合、ログファイル名は、 /var/account/acct
② accton ログファイル名
任意のログファイルを指定する事が可能
ログファイル名を指定しない場合、プロセスアカウンティングを停止。
【履歴参照方法】
●lastcommコマンドを入力する事で、ログファイルの内容をすべて表示することができる。
●取得できる内容は、
コマンド名、flag、プロセスを実行したユーザー名、コマンドを実行した端末(tty)、プロセスの起動時間、プロセスが終了した時間
flagの種類
S :スーパユーザによって実行されるコマンド
F :Fork後、次のEXECせずに実行されたコマンド
C : PDP - 11互換モード(VAXのみ)で実行されるコマンド(PDP-11 の後継でページング方式の仮想記憶を特徴とする32ビットコンピュータVAX?)
D :コアファイル生成をして終了するコマンド(core dump)
X :シグナルで終了したコマンド(SIGTERM)
●オプションコマンド
–-user 特定のユーザー出力
--command 特定のコマンド出力
--tty tty 名のレコード出力
これらを併用も可能だが、どちらかの条件を満たせば、出力を行ってしまう(or)。どちらの条件も満たすようにするためには、 (AND)
--strict-match 上記コマンドの前に指定することで、可能となる。
--f ファイルを指定してログを参照。ローテートファイルの参照に必要。(/var/account/ファイル名)
ローテートしたファイルは圧縮されているため、解凍後のファイルを指定する必要がある。直接catでは不可。
圧縮しない方法もとることはできる。下記設定ファイルで変更可能============================
/etc/logrotate.d/psacct の内容
# Logrotate file for psacct RPM
/var/account/pacct {
#prerotate loses accounting records, let's no
# prerotate
# /usr/sbin/accton
# endscript
compress ⇒ ローテーションしたログをgzipで圧縮
delaycompress ⇒ログ圧縮作業を次ローテート時に遅らせる
notifempty ⇒ ログファイルが空ならローテーションしない
daily ⇒ ローテート(日単位)
rotate 31 ⇒ 世代管理(31世代)
create 0600 root root ⇒ パーミッション、ユーザ名、グループ名
size=100k ⇒キロバイト指定で可能(?)指定したファイルサイズ以上でローテート
postrotate ↓
/usr/sbin/accton /var/account/pacct
endscript
}
postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
===================================
上記ファイルは logrotate.dのディレクティブのコマンドをいろいろ使える。man logrotateで使えるオプションを閲覧可能。
【ローテート設定方法】
/etc/logrotate.d/psacctの設定を変更する。
できる方法としては、日単位、週単位、月単位でのローテートが可能で、世代管理も行う事が出来る。サイズ指定出来そう。調査中
ローテート後は、pacct-20111006.gzのように保存される。 (圧縮設定にしている場合)
【その他特徴】
1.プロセスアカウンティング情報を記録するタイミングは、コマンドが終了するとき
2.ログファイルの参照には root の権限が必要
3.ファイルの容量が少なくなると、カーネルがProcess accounting pausedと出力し、アカウンティングを停止してしまいます
また、一定量の空きができることで、カーネルがProcess accounting resumedを出力し、自動で取得を開始してくれる。( /proc/sys/kernel/acctの値が基準となっている)
以下出力例 空き容量が 2% 以下でアカウンティングを停止して、 4% 以上で再開します。そして、空き容量の確認を、30秒毎に行います。
% sysctl kernel.acct 空き容量が 2% 以下でアカウンティングを停止して、 4% 以上で再開。そして、空き容量の確認を、30秒毎に行う。
kernel.acct = 4 2 30
検出されるコマンドは基本的にLinuxのシステムコマンド。
system()内で指定するコマンド等も検出可能。
ただ、スクリプト内で実行しているコマンド等もログに残ってしまう。。。。。
0 件のコメント:
コメントを投稿