rsyslogの設定方法

rsyslogの方法についてまとめました。

(1)rsyslogの概要


 
・rsyslogは、sysklogdと置き換わる強化されたマルチスレッドのsyslogデーモン。
 
・rsyslogはsysklogdと同じ機能を持ちながら、強化されたフィルタリング、暗号化で保護されたメッセージのリレー、各種設定オプション、TCPまたはUDPプロトコルによる転送のサポートにより拡張する。
 
・rsyslogとsysklogdは互換性がある。
 
・設定ファイルは/etc/rsyslog.conf。
 

(2)rsyslogの設定 グローバル指示文


 
・グローバル指示文で、rsyslogdデーモンに適用する設定オプションを指定。
 
・すべてのグローバル指示文は、ドル記号($)で始まらなければならない。
 
例)
$MainMsgQueueSize 50000
 
・設定項目は下記参照
/usr/share/doc/rsyslog-5.8.10/rsyslog_conf_global.html
 

(3)rsyslogの設定 モジュール


 
・下記記述でモジュールをロード
 
$ModLoad モジュール名
 
・モジュールに関するリファレンス
http://www.rsyslog.com/doc/v8-stable/configuration/modules/index.html
 
①入力モジュール
・接頭辞:im
・様々なソースからメッセージを収集。
 
②出力モジュール
・接頭辞:om
・様々な対象にメッセージを格納する機能を提供。例えば、ネットワーク上でのメッセージの送信、データベースへのメッセージの格納やその暗号化など。
 
③フィルターモジュール
・接頭辞:fm
・指定されたルールに従ってメッセージをフィルター。
 
④パーサモジュール
・接頭辞:pm
・メッセージパーサを使用して受信メッセージの内容を構文解析。
 
⑤メッセージ修正モジュール
・syslogメッセージの内容を修正する。
 
⑥文字列ジェネレータモジュール
・接頭辞:sm
・メッセージの内容を基にして文字列を生成し、rsyslogにより提供されるテンプレート機能とよく動作する。
 
⑦ライブラリモジュール
・他のロード可能なモジュールに機能性を提供。
・必要な場合にrsyslogにより自動的にロードされ、ユーザーは設定できない。
 

(4)rsyslogの設定 ルール設定


 
syslogメッセージを選択するフィルターとフィルターマッチ時に実行する内容を指定するアクションからなる。
 
1)フィルター
 
①Facility(ファシリティ)/Priority(優先度)ベースのフィルター
 
・形式
FACILITY.PRIORITY
 
●FACILITY
 
・メール関連などある特定のsyslogメッセージを生成するサブシステムを指定。
 
・下記キーワードから指定
auth、authpriv、cron、daemon、kern、lpr、mail、news、syslog、user、uucp、local0~local7
 
●PRIORITY
 
・syslogメッセージの優先度を指定。
 
・下記キーワードから指定
debug、info、notice、warning、err、crit、alert、emerg。
 
・優先度の前に等号を付けることによって、その優先度のみを選択。
優先度の前に感嘆符(!)を付けると、それ以外の優先度を選択。
これらの2つの拡張子を使用しない場合は、指定した優先度以上が選択される。
 
・アスタリスク(*)を使用して、すべてのファシリティ/優先度を定義することができる。
 
・複数のファシリティと優先度を定義するには、カンマで区切る。
 
②プロパティベースのフィルター
 
・timegeneratedやsyslogtagなどのプロパティによってsyslogメッセージをフィルターできる。
 
・形式
:PROPERTY, [!]COMPARE_OPERATION, “STRING”
 
●PROPERTY
 
timegenerated、hostname、msgなど。
プロパティのリストは下記参照。
/usr/share/doc/rsyslog-5.8.10/property_replacer.html
 
●COMPARE_OPERATION
 
下記比較処理を指定。
contains、isequal、startswith、regex、ereregex
 
●”STRING”
 
比較対象となる値を指定。
 
例)文字列”error”を含むsyslogメッセージを選択
:msg, contains, “error”
 
例)ホスト名”host1″から受信したsyslogメッセージを選択
:hostname, isequal, “host1”
 
③式ベースのフィルター
 
・定義済み算術演算、ブール演算または文字列演算に従ってsyslogメッセージを選択
 
・rsyslog自身のスクリプト言語を使用。
 
・形式
if EXPRESSION then ACTION
 
●EXPRESSION
 
$msg startswith ‘DEVNAME’ や $syslogfacility-text == ‘local0’ など評価される式を表す。
 
●ACTION
 
式が true の値を返す場合に実行される動作を表す。
 
2)アクション
 
ルールはフィルターとアクションで構成され、アクションはフィルターされたメッセージで実行する内容を指定する。
 
①ログファイルへのsyslogメッセージの保存
 
・syslog メッセージが保存されるログファイルを指定。
 
例)
cron.* /var/log/cron.log
 
②ネットワーク上でのsyslogメッセージの送信
 
・ネットワーク上でsyslogメッセージを送受信できる。この機能により、1台のマシン上で複数ホストのsyslogメッセージを管理することができる。
 
・形式
@[(OPTION)]HOST:[PORT]
 
アットマーク(@)は、UDPを使用。TCPを使用するには、@@を使用。
 
●OPTION
 
zなど。このオプションを使用すると、zlib圧縮可能でNUMBERで圧縮レベルを指定。複数のオプションを定義するにはカンマで区切る。
 
●HOST
 
選択したsyslogメッセージを受信するホストを指定。
IPv6アドレスをホストとして指定する場合は、アドレスを角括弧([, ])で囲む。
 
●PORT
 
ホストマシンのポートを指定。
 
例)”example.com”のTCPポート18に送信
*.* @@example.com:18
 
③出力チャンネル
 
・主にログファイルのローテーションでログファイルが拡張できる最大サイズを指定するために使用される。
 
・形式
$outchannel NAME, FILE_NAME, MAX_SIZE, ACTION
 
NAME:出力チャンネルの名前を指定。
FILE_NAME:出力ファイルの名前を指定。
MAX_SIZE:指定されたファイルが拡張できる最大サイズ。
ACTION:最大サイズに到達した時に取るべき動作を指定。
 
例)
$outchannel log_rotation,/var/log/test_log.log, 104857600, /home/joe/log_rotation_script
*.* $log_rotation
 
④特定ユーザーへのsyslogメッセージの送信
 
・相手のユーザー名を指定するだけで、そのユーザーにsyslogメッセージを送信できる。
 
・複数のユーザーを指定するには、各ユーザー名をカンマで区切りる。
 
・現在ログオンしている全ユーザーにメッセージを送るには、アスタリスク (*) を使用。
 
⑤プログラムの実行
 
・system()呼び出しを使用してシェル内でプログラムを実行。
 
・実行するプログラムを指定するには、そのプログラムの前にキャレットの記号(^)を付ける。
 
指定後、受信したメッセージをフォーマットしてそれを1行のパラメーターとして指定した実行ファイルに渡すテンプレートを指定する。
 
例)templateテンプレートでフォーマットされ、test-programプログラムに渡す。
*.* ^test-program;template
 
⑥データベースへのsyslogメッセージの入力
 
・データベースライターの動作を使用して、直接データベーステーブルに書き込む。
 
・形式
:PLUGIN:DB_HOST,DB_NAME,DB_USER,DB_PASSWORD;[TEMPLATE]
 
PLUGIN:データベースの書き込みを処理する指定プラグインを呼び出す。
DB_HOST:データベースのホスト名を指定。
DB_NAME:データベースの名前を指定。
DB_USER:データベースのユーザーを指定。
DB_PASSWORD:データベースユーザーが使用するパスワードを指定。
TEMPLATE:syslog メッセージを修正するテンプレートの使用を指定。
 
●MySQLとPostgreSQLの使用
 
・現在、rsyslogはMySQLとPostgreSQLのみに対応。
 
・MySQL、PostgreSQLのデータベースライター機能を使用するには、rsyslog-mysql、rsyslog-pgsqlパッケージをそれぞれインストールする。
 
また、/etc/rsyslog.conf設定ファイルにモジュールロードの設定を追加する。
 
$ModLoad ommysql # Output module for MySQL support
$ModLoad ompgsql # Output module for PostgreSQL support
 
rsyslog モジュールの詳細については、”モジュール”を参照。
別の方法として、omlibdbモジュールで提供される汎用のデータベースインターフェースも使用することができる。ただし、このモジュールは現在コンパイルされていない。
 
⑦syslogメッセージの破棄
 
・選択したメッセージを破棄するには、チルダの記号 (~) を使用する。
 
例)すべてのcron syslogメッセージを破棄
cron.* ~
 
⑧複数のアクションを指定
 
・各セレクターごとに、複数のアクションを指定することができる。
 
・1つのセレクターに複数の動作を指定するには、各動作を別々の行に書き込み、それらの先頭にアンパサンドの記号(&)を付ける。
 
例)ユーザーjoeに送信、テンプレートtempで処理し、test-program実行ファイルに渡す。その後UDPで送信
kern.=crit joe
& ^test-program;temp
& @192.168.0.1

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です