JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Solaris のシステム管理 (上級編)     Oracle Solaris 10 8/11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  端末とモデムの管理 (概要)

2.  端末とモデムの設定 (手順)

3.  サービスアクセス機能によるシリアルポートの管理 (手順)

4.  システム資源の管理 (概要)

5.  システム情報の表示と変更 (手順)

6.  ディスク使用の管理 (手順)

7.  UFS 割り当て制限の管理 (手順)

8.  システムタスクのスケジュール設定 (手順)

9.  システムアカウンティングの設定と管理 (手順)

システムアカウンティングの新機能

Oracle Solaris プロセスアカウンティングと統計の改善点

システムアカウンティング

システムアカウンティングの動作

システムアカウンティングのコンポーネント

接続アカウンティング

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

ディスクアカウンティング

料金計算

日次アカウンティング機能の動作

システムがシャットダウンしたときの動作

システムアカウンティング (作業マップ)

システムアカウンティングの設定

システムアカウンティングを設定する方法

ユーザーへの課金

ユーザーに課金する方法

アカウンティング情報の管理

壊れたファイルと wtmpx エラーを修復する

壊れた wtmpx ファイルの修復方法

tacct エラーを修復する

tacct エラーを修復する方法

runacct スクリプトを再起動する

runacct スクリプトを再起動する方法

システムアカウンティングの停止と無効

一時的にシステムアカウンティングを停止する方法

システムアカウンティングを永続的に無効にする方法

10.  システムアカウンティング (リファレンス)

11.  システムパフォーマンスの管理 (概要)

12.  システムプロセスの管理 (手順)

13.  システムパフォーマンスの監視 (手順)

14.  ソフトウェアの問題解決 (概要)

15.  システムメッセージの管理

16.  コアファイルの管理 (手順)

17.  システムクラッシュ情報の管理 (手順)

18.  ソフトウェアで発生するさまざまな問題の解決 (手順)

19.  ファイルアクセスでの問題の解決 (手順)

20.  UFS ファイルシステムの不整合解決 (手順)

21.  ソフトウェアパッケージで発生する問題の解決 (手順)

索引

システムアカウンティング

Oracle Solaris OS のシステムアカウンティングソフトウェアは、ユーザー接続時間、プロセスに使用された CPU 時間、およびディスク使用量についてのデータを収集および記録できるプログラム群です。一度このデータを収集すると、レポートを生成したり、システム使用に対して課金したりすることができます。

システムアカウンティングは、日次または月次ベースで使用できます。また、ユーザー単位のディスク使用量を追跡することもできます。

アカウンティングプログラムを使用すると、次の作業を行うことができます。

システムアカウンティングプログラムは、設定が済むと、ほとんどの場合自動的に実行されます。

システムアカウンティングの動作

自動アカウンティングは、まずアカウンティング起動スクリプトをルートの crontab ファイルに配置することによって設定します。すると、アカウンティング起動スクリプトが、cron コマンドによって自動的に起動されます。

次の概要は、システムアカウンティングのプロセスを示したものです。

  1. システムを起動してからシャットダウンするまでの間に、システムの利用に関する (ユーザーログイン、実行されたプロセス、データの格納などの) raw データがアカウンティングファイルに収集されます。

  2. 定期的に (通常 1 日に 1 回)、/usr/lib/acct/runacct スクリプトが各種のアカウンティングファイルを処理して、累積要約ファイルと日次アカウンティングレポートを生成します。次に、 /usr/lib/acct/prdaily スクリプトが日次レポートを印刷します。

    runacct スクリプトについては、runacct スクリプト」を参照してください。

  3. 毎月、monacct スクリプトを実行することによって、 runacct 累積要約ファイルを処理して印刷します。monacct スクリプトによって生成される要約レポートは、月次またはその他の会計期間ベースのユーザーに対する効率的な課金手段になります。

システムアカウンティングのコンポーネント

システムアカウンティングソフトウェアは、データから要約ファイルとレポートを生成する C 言語プログラムとシェルスクリプトを提供します。これらのプログラムは /usr/lib/acct ディレクトリにあります。アカウンティングレポートは、/var/adm/acct ディレクトリにあります。

日次アカウンティングによって、次の 4 種類の監査を行うことができます。

接続アカウンティング

接続アカウンティングでは、次のデータを調べることができます。

この接続セッション情報を提供するために、システムは次のデータを格納します。

これらのレコードは、dateinitloginttymonacctwtmp などのシステムプログラムの出力によって生成されます。これらは /var/adm/wtmpx ファイルに格納されます。

wtmpx ファイルのエントリには、次の情報を入れることができます。

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

プロセスアカウンティングでは、システムで実行される各プロセスに関する次のデータを追跡できます。

プロセスが終了するたびに、exit プログラムは上記のデータを収集し、/var/adm/pacct ファイルに書き込みます。

ディスクアカウンティング

ディスクアカウンティングでは、各ユーザーがディスク上に持っているファイルについて、次のデータを収集しフォーマットできます。

これらのデータは、/usr/lib/acct/dodisk シェルスクリプトによって収集されますが、収集周期は /var/spool/cron/crontabs/root ファイルに追加するエントリによって決定されます。一方、dodisk スクリプトは、acctdisk コマンドと acctdusg コマンドを起動します。これらのコマンドは、ログイン名ごとのディスク使用量を収集します。


注意

注意 - dodisk スクリプトを実行して収集された情報は /var/adm/acct/nite/disktacct ファイルに格納されます。これらの情報は、次に dodisk スクリプトを実行したときに上書きされます。したがって、dodisk スクリプトは同じ日に 2 回以上実行しないでください。


acctdusg コマンドは、ランダムに書き込まれたため穴があいたファイルに対して過剰に課金します。このような問題が起こるのは、acctdusg コマンドが、ファイルサイズを決めるときに、ファイルの間接ブロックを読み取らないからです。 acctdusg コマンドは、i ノードの現在のファイルサイズの値をチェックして、ファイルのサイズを決めます。

料金計算

chargefee ユーティリティーは、ユーザーに提供した特別なサービスに対する課金を、/var/adm/fee ファイルに格納します。特別なサービスとは、たとえば、ファイルの復元です。 このファイルの各エントリは、ユーザーのログイン名、ユーザー ID、および料金から構成されています。このファイルは、runacct スクリプトによって毎日チェックされて、新しいエントリが全体のアカウンティングレコードにマージされます。chargefee スクリプトを実行してユーザーに課金する方法については、「ユーザーに課金する方法」を参照してください。

日次アカウンティング機能の動作

次に、日次アカウンティング機能がどのように動作するかを要約して示します。

  1. システムをマルチユーザーモードに切り替えると、/usr/lib/acct/startup プログラムが実行されます。この startup プログラムは、それぞれ日次アカウンティング機能を呼び出す他のプログラムを実行します。

  2. acctwtmp プログラムは、/var/adm/wtmpx ファイルに「ブート」レコードを追加します。このレコードには、システム名が wtmpx レコード内のユーザー名として示されます。次の表に、raw アカウンティングデータがどのように収集され、どこに格納されるかをまとめて示します。

    /var/adm 内のファイル
    格納される情報
    データを書き込むプログラム
    表記形式
    wtmpx
    接続セッション数
    logininit
    バイナリ形式
    変更
    date
    バイナリ形式
    リブート
    acctwtmp
    バイナリ形式
    シャットダウン
    shutacct
    バイナリ形式
    pacctn
    プロセス数
    カーネル (プロセス終了時)
    バイナリ形式
    turnacct switch (古いファイルの内容が 500 ブロックに達すると、新しいファイルが作成される)
    バイナリ形式
    fee
    特別料金
    chargefee
    ASCII
    acct/nite/disktacct
    使用ディスク領域
    dodisk
    バイナリ形式
  3. turnacct スクリプトが -on オプションで起動されて、プロセスアカウンティングを開始します。具体的には、turnacct スクリプトは、/var/adm/pacct 引数を使用して accton プログラムを実行します。

  4. remove シェルスクリプトが、runacct によって sum ディレクトリに保存されている pacct および wtmpx ファイルを「整理」します。

  5. login および init プログラムが、 /var/adm/wtmpx ファイルにレコードを書き込み、接続セッションを記録します。すべての日付変更 (引数を指定して date を使用) も /var/adm/wtmpx ファイルに書き込まれます。リブート回数とシャットダウン回数も、acctwtmp コマンドを使用して、 /var/adm/wtmpx ファイルに記録されます。

  6. プロセスが終了すると、カーネルが /var/adm/pacct ファイルにプロセスごとに 1 レコードを acct.h 形式で書き込みます。

    cron コマンドは、1 時間ごとに ckpacct スクリプトを実行して、/var/adm/pacctファイルのサイズをチェックします。このファイルが 500 ブロック (デフォルト) よりも大きくなった場合は、turnacct switch コマンドが実行されます。このプログラムは pacct ファイルを pacctn ファイルに移動して、新しいファイルを作成します。pacct ファイルを小さく分けることの利点は、それらのレコードを処理するときに障害が発生して、runacct スクリプトを再起動しようとしたときに明らかになります。

  7. runacct スクリプトは、cron コマンドによって毎晩実行されます。runacct スクリプトは、アカウンティングファイルを処理し、ユーザー別のコマンド要約と利用状況要約を生成します。処理されるアカウンティングファイルは以下のとおりです。 /var/adm/pacct n/var/adm/wtmpx/var/adm/fee、および /var/adm/acct/nite/disktacct

  8. /usr/lib/acct/prdaily スクリプトは、runacct スクリプトによって1 日1 回実行され、/var/adm/acct/sum/rprtMMDD ファイルに日次アカウンティング情報を書き込みます。

  9. monacct スクリプトを月に 1 回 (または毎会計期の終わりなど、ユーザーが決めた周期で) 実行すべきです。monacct スクリプトは、sum ディレクトリに格納されているデータに基づいてレポートを作成します。これらのデータは runacct スクリプトによって毎日更新されています。このレポートを作成後、monacct スクリプトは sum ディレクトリを「整理」して、新しい runacct データを格納するためのファイルを準備します。

システムがシャットダウンしたときの動作

shutdown コマンドを使用してシステムをシャットダウンした場合は、shutacct スクリプトが自動的に実行されます。shutacct スクリプトは /var/adm/wtmpx ファイルに「理由レコード」を書き込み、プロセスアカウンティングを無効にします。