ブログせつめい

このブログはタイトルの通り、メモ代わりです。
内容に関しては誤っている個所があるかと思いますので、参考にされる場合は、要検討のうえご利用ください。
また、気になったことなどLinux以外の話もあります。

2011年11月1日火曜日

プロセスアカウンティング概要

プロセスアカウンティングとは?

ユーザが、いつどんなコマンドを実行したのかを把握し、これをログとして残すことができる。


インストール

 RHEL6.1ではpsacctパッケージ


起動・停止方法

 ①/etc/init.d/psacct startor 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 件のコメント:

コメントを投稿