ファイルの監視モジュールは、「1 行に 1 レコード」の書式でリストに登録されているファイルのみを監視します。監視ファイルに対する変更が検知されると、モジュールはイベントを作成して、それを表に表示します。モジュールは、passwd、vfstab などのいくつかの一般的なファイルに対しては、デフォルトの機能を提供します。
このデフォルトリスト内のエントリは、追加、削除、または編集できます。新しいファイルを追加するには、監視ファイルのレコード書式を定義する必要があります。また、以下のケースに生成される、ファイルに固有のアラーム重要度を指定する必要があります。
レコード追加イベント
レコード削除イベント
レコード変更イベント
ファイルの監視モジュールは、passwd ファイルなど、頻繁に変更されないシステムファイルの監視にのみ使用してください。システムファイルの監視にのみ使用することで、変更通知が有益なものになります。
監視ファイルテーブル
ファイル変更テーブル
監視ファイルが、ディレクトリのように存在するが開けない場合、そのファイルは監視ファイルテーブルに追加されます。このファイルに関するほかの情報は表示されません。情報アラームが生成されます。
ファイルの監視モジュールは、各表見出しの右側に、関連するアラーム数をリストします。監視ファイルテーブルは、ファイルの存在を監視するために使用します。ファイル変更テーブルは、既存のファイルの変更を監視するために使用します。
モジュールは検証スクリプトを使用して、ファイルのタイムスタンプが変更されたときにファイルの妥当性を確認します。検証スクリプトについては、モジュールに含まれている fileparse バイナリを使用することも、独自に作成することもできます。
このモジュールでは、特定のファイルに対して、イベント監視モードを有効または無効に設定することができます。これは、ファイルスキャンモジュールのパターンマッチング検索の有効/無効の概念に類似しています。たとえば、/etc/passwd ファイルのイベント監視モードを無効にした場合、このファイルにエントリが追加されると、対応するイベント検出は ファイル変更テーブルには現れません。エントリは、/etc/passwd の監視モードを有効にすると現れます。
監視ファイルテーブルはモジュールが監視しているすべてのファイルのリストを表示します。この表は、より一般的に使用される属性を高いレベルに表示し、ほかの隠し属性については低いレベルに表示します。隠し属性の詳細については、ファイルの隠し属性を参照してください。
ファイルの変更は、いったんファイルの存在が検知された後で通知されるようになります。ファイルが存在しない場合、モジュールはそのファイルが 0 より大きいサイズで存在していると検知します。たとえば、ファイルが 2 つのレコードを持つ場合、モジュールは 2 つのレコードがあることを検知できません。ただし、モジュールは将来のすべての変更を検知します。
この表は、次の 7 つのシステムファイルで初期化されます。
/etc/hosts /etc/aliases /etc/nsswitch.conf /etc/inittab /etc/vfstab /etc/passwd /etc/rmtab
監視ファイルテーブルは、各ファイルに関する情報を表示し、次に示す属性のデータを提供します。
表 3–1 監視ファイルテーブル
フィールド |
説明 |
---|---|
ファイル |
ファイル名 |
フルパス |
ファイルへのパスおよび実際の名前 |
ファイルサイズ |
ファイルのサイズ (バイト数) |
ファイル所有者 |
ファイルの所有者 |
ファイルグループ |
ファイルが属するグループ |
ファイルのアクセス権 |
ファイルのアクセス権 |
ファイルのタイムスタンプ |
ファイルが最後に更新された時刻 |
認識スクリプト |
ファイルのタイムスタンプが変更されたときの妥当性の確認に使用される検証スクリプトへのパス。スクリプトは /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts に保存し、相対パスを指定します。スクリプトの値の指定は任意です。詳細については、検証スクリプトを参照してください。 |
終了コード |
検証スクリプトの最後の実行で終了コードを表示します。 |
イベントの監視 |
各ファイルのファイルウォッチモードの状態を表示します。詳細については、イベント監視を無効にするを参照してください。 |
以下の表は、隠れている属性を示しています。これらは、「行の編集」ウィンドウからアクセスできます。このウィンドウを開くには、任意の行でマウスボタン 3 を押し、ポップアップメニューから「行の編集」を選択します。
表 3–2 ファイルの隠し属性
フィールド |
説明 |
---|---|
区切り記号 |
カラム間の区切り |
ファイルコメント文字 |
コメント行を区切る文字の種類 |
フィールド数 |
各ファイルエントリのフィールド数 |
キーフィールド数 |
キーを構成するフィールド数キーは、レコードの先頭にあります。キーはレコードの識別子です。たとえば、passwd ファイルの場合、各レコードのキーは、第 1 フィールドが ユーザー名になります。キーは各レコードで固有のものです。 |
フィールド名 |
ファイルエントリの異なるカラムの名前 |
値非表示フラグ |
次のいずれかの値を使用します。
|
追加の重要度 |
可能な値: 情報、警告、エラー、なし |
削除の重要度 |
可能な値: 情報、警告、エラー、なし |
変更の重要度 |
可能な値: 情報、警告、エラー、なし |
レコード形式 |
レコードの書式。詳細については、レコード形式を参照してください。 |
属性エディタを使用して、終了コードに正規表現のアラームしきい値を設定できます。アラームしきい値にデフォルト値はありません。
監視対象のファイルが存在しない場合、「ファイルの監視」は情報アラームを生成します。このファイルはモジュールによって 監視ファイルテーブルに追加されますが、このファイルに関するほかの情報は表示されません。
ディレクトリなどのように、存在するが開くことができないファイルの場合、ファイルは監視ファイルテーブルに追加されます。このファイルに関するほかの情報は表示されません。
ファイル変更テーブルは、ファイルを監視して、追加、削除、または変更操作のレコードを表示します。
ファイル変更テーブルは、以下に示す属性のデータを提供します。
表 3–3 ファイル変更テーブル
「ファイルの監視」が新しいイベントを検知すると、そのイベントが表示され、対応するアラームが生成されます。ファイル名セルの色は、イベント値に適合する色に変わります。この色は、ファイルを監視ファイルテーブルに追加したときに指定します。イベントのオプションは、情報、警告、エラー、またはなしです。
モジュールが監視するファイルのリストに新しいファイルを追加するときは、レコード形式属性に値を指定する必要があります。この属性は、監視ファイルの書式を定義します。fileparse バイナリのみが必須の検証スクリプトとして指定されている場合、この値が必要になります。fileparse バイナリは、ファイルに対して実行される検証の一部でレコード書式をチェックします。レコード形式は、監視ファイルテーブルのファイルエントリの隠し属性になります。この属性はいったん定義されると、ファイルエントリの編集を選択しない限り表示されることはありません。詳細については、検証スクリプトを参照してください。
以下に、サポートされるレコード形式のデータ型を示します。
datatype = {STRING, INT, IPADDRESS, ZERO_STRING, RANGE_INT, CHOICE_INT, CHOICE_STRING CONST}
次に、各引数について説明します。
文字列は空にできません。
文字列は空にするか、空にしません。
整数は指定した文字列の 1 つと一致する必要があります。
整数は指定した整数の 1 つと一致する必要があります。
文字列は指定した文字列の 1 つと一致する必要があります。
フィールド値は一致する必要があります。
文法により、さらに次の値をサポートします。
文字列の選択リスト内で、パイプ文字 ( | ) は使用できません。監視ファイル内に、これらの文字列が二重引用符で囲まれて存在する場合にのみ、これらの文字列を二重引用符内に埋め込むことができます。INT 値は、正の値のみです。負の値の INT はサポートされません。
定数文字列は、二重引用符で囲むことで宣言できます。以下を参照してください。
"+" | "-" | STRING STRING
使用可能な演算子を以下に示します。
operator = | , [], *
次に、各引数について説明します。
「または」を示します。例: - line-format = "+" | "-" | STRING STRING
任意指定であることを示します。例: - line-format = STRING [STRING|IPADDRESS]
1 つのデータ型のゼロ回または複数回の繰り返しを示します。次に例を示します。- line-format= IPADDRESS STRING STRING*
以下の例は、/etc/passwdの妥当性を検証するレコード書式を示しています。
STRING STRING INT INT ZERO_STRING STRING ZERO_STRING | "+" | "-"
演算子の優先度は以下のとおりです。
[] , | , *
モジュールで再表示したときに、ファイルのタイムスタンプが変更されていることを検知した場合、関連する検証スクリプトが実行されます。最後の実行の終了コードが、終了コードフィールドに表示されます。スクリプトフィールドに新しい値が指定されると、モジュールは、指定されたパスが有効なファイルかどうかを検査します。パスが有効でない場合、終了コードフィールドに NO_SUCH_SCRIPT が表示されます。また、実行されている検証スクリプトが強制終了されると、このフィールドに killed が表示されます。この場合、終了コード用のアラームを生成する正規表現を指定します。
独自の検証スクリプトを /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts ディレクトリに置くことも、モジュールと共にインストールされた fileparse バイナリを使用することもできます。
fileparse を指定した場合、モジュールは提供されるパラメータを無視します。引数は、そのファイルが認識する区切り文字、コメント、およびレコード書式値から構成されます。値を指定すると、すべてのパラメータは、モジュールに組み込まれたパラメータで置き換えられます。この手法により、サポートされないコメントや区切り文字が指定されることはありません。
たとえば、mytest.sh -a myarg を指定すると、mytest.sh スクリプトが -a myarg 引数で実行されます。
fileparse は、C バイナリであり、/var/opt/SUNWsymon/SysMgmtPack/filewch/scripts/ にあります。
スクリプトファイルのデフォルトリストには、検証スクリプトおよびレコード書式用に設定された値があります。たとえば、/etc/hosts の場合、値は以下のように設定されています。
検証スクリプトは、fileparse に設定されています。
レコード書式は、IPADDRESS STRING STRING に設定されています。
バイナリは、監視ファイルテーブルに含まれるファイル定義に指定されたレコード形式に対してファイル名を構文解析します。ファイル内容が入力ファイルレコード形式に一致しない場合、エラーが報告されます。空白行とコメント行はスキップされます。バイナリは次の値を返します。
成功
ファイルを開けない
レコード形式が正しくない
ファイルフォーマットが正しくない
メモリー不足などのプログラムエラー
引数エラー