25.7. Rsyslog モジュールの使用
モジュラー設計により、rsyslog は、追加機能を提供するさまざまな モジュール を提供します。モジュールはサードパーティーによる書き込みが可能であることに注意してください。ほとんどのモジュールは、追加入力 (以下の Input Modules 参照) または出力 (以下の Output Modules 参照) を提供します。その他のモジュールは、各モジュールに固有の機能を提供します。モジュールは、モジュールの読み込み後に利用可能になる追加の設定ディレクティブを提供する場合があります。モジュールを読み込むには、以下の構文を使用します。
$ModLoad MODULE
$ModLoad
は指定されたモジュールをロードするグローバルディレクティブで、MODULE は希望のモジュールを表します。たとえば、rsyslog を有効にして標準テキストファイルを syslog メッセージに変換する Text File Input Module(imfile)を読み込む場合は、/etc/rsyslog.conf
設定ファイルで以下の行を指定します。
$ModLoad imfile
rsyslog は、以下の主なカテゴリーに分割されるモジュールを多数提供します。
- 入力モジュール: 入力モジュールは、さまざまなソースからメッセージを収集します。入力モジュールの名前は、常に imfile のように接頭辞
im
で始まります。 - 出力モジュール: 出力モジュールはメッセージをネットワーク上に送信したり、データベース内に保存したり、暗号化するなど、様々なターゲットにメッセージを発行するための機能を提供します。出力モジュールの名前は常に omsnmp や
om
relp などのように接頭辞 om で始まります。 - パーサーモジュール: これらのモジュールは、カスタムの解析ルールの作成や不正な形式のメッセージ解析に使用されます。C プログラミング言語についてある程度の知識があれば、独自のメッセージパーサーが作成できます。パーサーモジュールの名前は、常に
pm
rfc5424 やpmrfc3164 などの接頭辞 pm で始まります。 - メッセージ修正モジュール: メッセージ修正モジュールは、syslog メッセージの内容を変更します。このモジュールの名前は、
mm
接頭辞で始まります。mmanon、mmnormalize、mmjsonparse などのメッセージ修正モジュールは、メッセージの匿名化や正規化に使用されます。 - 文字列生成モジュール - 文字列生成モジュールは、メッセージの内容に基づいて文字列を生成し、rsyslog が提供するテンプレート機能と密接に連携します。テンプレートに関する詳細は 「テンプレート」 を参照してください。文字列生成モジュールの名前は、
sm
file や smtradfile のように常に接頭辞 sm で始まります。 - ライブラリーモジュール - ライブラリーモジュールは、他の読み込み可能なモジュール用の機能を提供します。これらのモジュールは、必要でユーザーが設定できない場合に rsyslog によって自動的にロードされます。
利用可能なモジュールの一覧とその詳細な説明は、http://www.rsyslog.com/doc/rsyslog_conf_modules.html を参照してください。
警告
rsyslog はモジュールを読み込む際に、モジュールに対して一部の機能とデータへのアクセスを提供します。これはセキュリティー上の脅威となる可能性があります。セキュリティーリスクを最小限にするために、信頼できるモジュールのみを使用するようにしてください。
25.7.1. テキストファイルのインポート
テキストファイル入力モジュールは imfile と省略され、rsyslog がテキストファイルを syslog メッセージのストリームに変換できるようにします。imfile を使用して、独自のテキストファイルログを作成するアプリケーションからログメッセージをインポートできます。imfile を読み込むには、以下を
/etc/rsyslog.conf
に追加します。
$ModLoad imfile $InputFilePollInterval int
複数のファイルをインポートする場合でも、imfile を一度読み込むだけで十分です。$InputFilePollInterval global ディレクティブは、接続済みテキストファイルの変更に対する rsyslog チェックの頻度を指定します。デフォルトの間隔は 10 秒で、変更するには int を秒単位で指定した時間間隔に置き換えます。
インポートするテキストファイルを特定するには、
/etc/rsyslog.conf
で以下の構文を使用します。
# File 1 $InputFileName path_to_file $InputFileTag tag: $InputFileStateFile state_file_name $InputFileSeverity severity $InputFileFacility facility $InputRunFileMonitor # File 2 $InputFileName path_to_file2 ...
入力テキストファイルを指定するには、以下の 4 つの設定が必要です。
- path_to_file を、テキストファイルへのパスに置き換えます。
- tag: を、このメッセージのタグ名に置き換えます。
- state_file_name は、状態ファイル の一意の名前に置き換えます。rsyslog の作業ディレクトリーに保管されている 状態ファイル は、監視対象ファイルのカーソルを保持し、すでに処理されたパーティションを示します。これらを削除すると、ファイル全体が再度読み込まれます。存在していない名前を指定してください。
- ファイルモニタリングを有効にする $InputRunFileMonitor ディレクティブを追加します。この設定がないと、テキストファイルは無視されます。
必要なディレクティブ以外に、テキスト入力に適用可能な設定がいくつかあります。severity を適切なキーワードに置き換えて、インポートされたメッセージの重大度を設定します。facility を、メッセージを生成したサブシステムを定義するキーワードに置き換えます。重要度と機能のキーワードは、機能または優先度ベースのフィルターで使用されたものと同じものです (「フィルター」 を参照)。
例25.15 テキストファイルのインポート
Apache HTTP サーバーはログファイルをテキスト形式で作成します。rsyslog の処理機能を apache エラーメッセージに適用するには、まず imfile モジュールを使用してメッセージをインポートします。以下を
/etc/rsyslog.conf
に追加します。
$ModLoad imfile $InputFileName /var/log/httpd/error_log $InputFileTag apache-error: $InputFileStateFile state-apache-error $InputRunFileMonitor