rsyslogの方法についてまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
rsyslogの概要
・rsyslogは、sysklogdと置き換わる強化されたマルチスレッドのsyslogデーモン。
・rsyslogはsysklogdと同じ機能を持ちながら、強化されたフィルタリング、暗号化で保護されたメッセージのリレー、各種設定オプション、TCPまたはUDPプロトコルによる転送のサポートにより拡張する。
・rsyslogとsysklogdは互換性がある。
・設定ファイルは/etc/rsyslog.conf。
・rsyslogはsysklogdと同じ機能を持ちながら、強化されたフィルタリング、暗号化で保護されたメッセージのリレー、各種設定オプション、TCPまたはUDPプロトコルによる転送のサポートにより拡張する。
・rsyslogとsysklogdは互換性がある。
・設定ファイルは/etc/rsyslog.conf。
rsyslogの設定 グローバル指示文
・グローバル指示文で、rsyslogdデーモンに適用する設定オプションを指定。
・すべてのグローバル指示文は、ドル記号($)で始まらなければならない。
例)
$MainMsgQueueSize 50000
・設定項目は下記参照
/usr/share/doc/rsyslog-5.8.10/rsyslog_conf_global.html
・すべてのグローバル指示文は、ドル記号($)で始まらなければならない。
例)
$MainMsgQueueSize 50000
・設定項目は下記参照
/usr/share/doc/rsyslog-5.8.10/rsyslog_conf_global.html
rsyslogの設定 モジュール
・下記記述でモジュールをロード
$ModLoad モジュール名
・モジュールに関するリファレンス
http://www.rsyslog.com/doc/v8-stable/configuration/modules/index.html
①入力モジュール
・接頭辞:im
・様々なソースからメッセージを収集。
②出力モジュール
・接頭辞:om
・様々な対象にメッセージを格納する機能を提供。例えば、ネットワーク上でのメッセージの送信、データベースへのメッセージの格納やその暗号化など。
③フィルターモジュール
・接頭辞:fm
・指定されたルールに従ってメッセージをフィルター。
④パーサモジュール
・接頭辞:pm
・メッセージパーサを使用して受信メッセージの内容を構文解析。
⑤メッセージ修正モジュール
・syslogメッセージの内容を修正する。
⑥文字列ジェネレータモジュール
・接頭辞:sm
・メッセージの内容を基にして文字列を生成し、rsyslogにより提供されるテンプレート機能とよく動作する。
⑦ライブラリモジュール
・他のロード可能なモジュールに機能性を提供。
・必要な場合にrsyslogにより自動的にロードされ、ユーザーは設定できない。
$ModLoad モジュール名
・モジュールに関するリファレンス
http://www.rsyslog.com/doc/v8-stable/configuration/modules/index.html
①入力モジュール
・接頭辞:im
・様々なソースからメッセージを収集。
②出力モジュール
・接頭辞:om
・様々な対象にメッセージを格納する機能を提供。例えば、ネットワーク上でのメッセージの送信、データベースへのメッセージの格納やその暗号化など。
③フィルターモジュール
・接頭辞:fm
・指定されたルールに従ってメッセージをフィルター。
④パーサモジュール
・接頭辞:pm
・メッセージパーサを使用して受信メッセージの内容を構文解析。
⑤メッセージ修正モジュール
・syslogメッセージの内容を修正する。
⑥文字列ジェネレータモジュール
・接頭辞:sm
・メッセージの内容を基にして文字列を生成し、rsyslogにより提供されるテンプレート機能とよく動作する。
⑦ライブラリモジュール
・他のロード可能なモジュールに機能性を提供。
・必要な場合にrsyslogにより自動的にロードされ、ユーザーは設定できない。
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の使用
・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
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
複数のオプションを定義するにはカンマで区切る。
●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の使用
・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
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限