22.2. Rsyslog の基本設定
/etc/rsyslog.conf です。このファイルでは、グローバルディレクティブ、モジュール、および フィルター と アクション の部分で構成される ルール を指定できます。また、ハッシュ記号 (#) の後にテキスト形式でコメントを追加することもできます。
22.2.1. フィルター
/etc/rsyslog.conf 設定ファイル内でルールを定義するには、フィルターとアクションの両方を 1 行内で、1 つ以上の空白かタブでそれらを区切って定義します。
- Facility (ファシリティー) /Priority (優先度) ベースのフィルター
- syslog メッセージのフィルター操作で最も使用されよく知られているのは、facility/priority ベースのフィルターを使用する方法です。これは、facility と priority の 2 つの条件をベースにして syslog メッセージをフィルター処理します。これらの条件は、ドットで区切られます。セレクターを作成するには以下の構文を使用します。
FACILITY.PRIORITY
ここでは、- FACILITY は、特定の syslog メッセージを作成するサブシステムを指定します。たとえば、
mailサブシステムはメール関連のすべての syslog メッセージを処理します。FACILITY は、以下の キーワードのいずれかで表すことができます。kern(0)、user(1)、mail(2)、daemon(3)、auth(4)、syslog(5)、lpr(6)、news(7)、uucp(8)、cron(9)、authpriv(10)、ftp(11)、およびlocal0〜local7(16〜23)。 - PRIORITY は、syslog メッセージの優先度を指定します。PRIORITY は以下のキーワード (または数字) のいずれかで表示できます。
debug(7)、info(6)、notice(5)、warning(4)、err(3)、crit(2)、alert(1)、およびemerg(0)。上記の構文は、定義された優先度もしくは より高い 優先度で syslog メッセージを選択します。いずれかの優先度のキーワード前に等号 (=) を付けると、指定された優先度の syslog メッセージのみ選択されることが指定されます。他のすべての優先度は無視されます。反対に、感嘆符 (!) を優先度のキーワードの前に付けると、この優先度以外のすべての syslog メッセージが選択されます。
上記で指定されているキーワード以外に、アスタリスク (*) を使用してすべてのファシリティーもしくは優先度を定義することもできます (アスタリスクをコンマの前か後に配置するかによる)。優先度キーワードnoneを指定すると、優先度のないファシリティーを指定することになります。ファシリティーおよび優先度の条件は、どちらも大文字と小文字を区別しません。複数のファシリティーや優先度を定義するには、コンマ (,) でそれらを区切ります。複数のセレクターを 1 行内で定義するには、セミコロン (;) でそれらを区切ります。セレクターフィールド内の各セレクターは、以前のものを上書きすることに注意してください。これにより、パターンから優先度が除外される可能性があります。例22.1 ファシリティー/優先度ベースのフィルター
以下は簡単なファシリティー/優先度ベースのフィルターの例です。これは、/etc/rsyslog.confで指定できます。優先度ですべてのカーネル syslog メッセージを選択するには、設定ファイルに以下のテキストを追加します。kern.*
critおよびそれ以上の優先度があるメール syslog メッセージすべてを選択するには、以下の形式を使用します。mail.crit
infoまたはdebug優先度以外のすべての cron syslog メッセージを選択するには、設定ファイルで以下の形式を設定します。cron.!info,!debug
- プロパティーベースのフィルター
- プロパティベースのフィルターでは、
timegeneratedやsyslogtagなどのプロパティーで syslog メッセージのフィルター処理ができます。プロパティーに関する詳細情報は、「プロパティー」 を参照してください。指定された各プロパティーは、表22.1「プロパティベースの比較処理 」 で一覧表示されている比較処理のいずれかを使用して特定の値に対して比較できます。プロパティー名と比較処理はどちらも大文字と小文字を区別します。プロパティーベースのフィルターは、コロン (:) で開始する必要があります。フィルターの定義には、以下の構文を使用します。:PROPERTY, [!]COMPARE_OPERATION, "STRING"
ここでは、- PROPERTY 属性は希望するプロパティーを指定します。
- オプションの感嘆符 (
!) は比較処理の出力を無効にします。他のブール値演算子は現在、プロパティーベースのフィルターではサポートされていません。 - COMPARE_OPERATION 属性は、表22.1「プロパティベースの比較処理 」 に一覧表示してある比較処理のいずれかを指定します。
- STRING 属性は、プロパティーが提供するテキストの比較対象となる値を指定します。この値は、引用符で囲む必要があります。この文字列内の特定の文字をエスケープさせるには (たとえば、引用符 (
"))、バックスラッシュ (\) を使用します。
表22.1 プロパティベースの比較処理
比較処理 説明 contains提供された文字列が、プロパティーで提供されたテキストのいずれかの部分に適合するかどうかをチェックします。大文字と小文字を区別しない比較を実行するには、 contains_iを使用します。isequal用意された文字列をプロパティーで提供されたテキストすべてに対して比較します。これら 2 つの値が適合するには、完全に等しいものである必要があります。 startswith提供された文字列が、プロパティーで提供されたテキストのちょうど最初にあるかどうかをチェックします。大文字と小文字を区別しない比較を実行するには、 startswith_iを使用します。regex指定された POSIX BRE (Basic Regular Expression) をプロパティーが提供したテキストと比較します。 ereregex指定された POSIX ERE (Extended Regular Expression) 正規表現をプロパティーが提供したテキストと比較します。 isemptyプロパティーが空かどうかをチェックします。値は破棄されます。これは、いくつかのフィールドが正規化の結果に基づいて設定される正規化データでの作業時に特に有用です。 例22.2 プロパティーベースのフィルター
以下は、プロパティーベースのフィルター例です。これは、/etc/rsyslog.confで指定できます。syslog メッセージのテキストに文字列errorが含まれているものを選択するには、以下を使用します。:msg, contains, "error"
以下のフィルターは、ホスト名host1から受信した syslog メッセージを選択します。:hostname, isequal, "host1"
(fatal lib errorなど)fatalとerrorの間にテキストがあるかどうかに関わらず、これらを含まない syslog メッセージを選択するには、以下を入力します。:msg, !regex, "fatal .* error"
- 式ベースのフィルター
- 式ベースのフィルターは、定義されている算術演算、ブール演算、または文字列演算に従って syslog メッセージを選択します。複雑なフィルターを構築するために、式ベースのフィルターは、RainerScript と呼ばれる rsyslog の独自のスクリプト言語を使用します。式ベースのフィルターの基本的な構文は、以下のようになります。
if EXPRESSION then ACTION else ACTION
ここでは、- EXPRESSION 属性は、
$msg startswith 'DEVNAME'や$syslogfacility-text == 'local0'などの評価される式を表します。andおよびor演算子を使うことで、単一フィルター内に複数の式を指定できます。 - ACTION 属性は、式が
trueの値を返す場合に実行される動作を表します。これは単一のアクションの場合と、波括弧で囲まれた任意の複雑なスクリプトになる場合があります。 - 式ベースのフィルターは、行の最初の if キーワードで示されます。then キーワードは、EXPRESSION を ACTION から離します。オプションで、else キーワードを使って条件が満たされない場合に実行されるアクションを指定することもできます。
式ベースのフィルターでは、例22.3「式ベースのフィルター」 にあるように、波括弧に囲まれた式を使うことで条件をネスト化することができます。このスクリプトでは、式内で facility/priority-based フィルターを使うことができます。その一方、ここでは property-based フィルターは推奨されません。RainerScriptは、特別関数re_match()およびre_extract()を伴う正規表現をサポートします。例22.3 式ベースのフィルター
以下の式には、ネスト化された条件が 2 つ含まれています。prog1 と呼ばれるプログラムが生成したログファイルが、メッセージ内の文字列 "test" の有無に基づいて 2 つのファイルに分割されます。if $programname == 'prog1' then { action(type="omfile" file="/var/log/prog1.log") if $msg contains 'test' then action(type="omfile" file="/var/log/prog1test.log") else action(type="omfile" file="/var/log/prog1notest.log") }
22.2.2. アクション
- ログファイルへの syslog メッセージの保存
- アクションの大半は、どのログファイルに syslog メッセージを保存するかを指定します。これは定義済みセレクターの後にファイルパスを指定することで行います。
FILTER PATH
ここでの FILTER はユーザーが指定したセレクターを、PATH はターゲットファイルのパスを示します。たとえば、以下のルールは、すべての cron syslog メッセージを選択するセレクターとそれらのメッセージを/var/log/cron.logログファイルに保存するアクションで構成されています。cron.* /var/log/cron.log
デフォルトでは、syslog メッセージの生成時に毎回ログファイルは同期されます。同期を省略する場合は、ダッシュ記号 (-) を該当するファイルパスの接頭辞として使います。FILTER -PATH
書き込みの直後にシステムが終了すると、情報が失われる場合があることに注意してください。ただし、この設定では、特に非常に詳細なログメッセージを生成するプログラムを実行する場合には、パフォーマンスも改善されます。指定したファイルパスは、静的 でも 動的 でも構いません。静的ファイルは、上記の例で示されているように固定ファイルパスで示されます。動的ファイルパスは、受け取ったメッセージによって異なります。動的ファイルパスは、テンプレートと疑問符 (?) の接頭辞で示されます。FILTER ?DynamicFile
ここでは、DynamicFile は出力パスを修正する定義済みテンプレート名になります。ダッシュ記号 (-) の接頭辞を使うと同期を無効にでき、またコロン (;) 区切りで複数のテンプレートを使用できます。テンプレートの詳細については、「動的なファイル名の生成」 を参照してください。指定したファイルが既存の terminal または/dev/consoleデバイスである場合、syslog メッセージは標準出力 (特別な terminal 処理を使用) へ送信されるか、X Window システムの使用時には使用中のコンソール (特別な/dev/console処理を使用) へそれぞれ送信されます。 - ネットワークを使った syslog メッセージの送信
- rsyslog を使用すると、ネットワークを使って syslog メッセージを送受信できます。この機能により、1 台のマシン上で複数ホストの syslog メッセージを管理できます。syslog メッセージをリモートマシンに転送するには、以下の構文を使用します。
@[(
zNUMBER)]HOST:[PORT]ここでは、- アットマーク (
@) は、syslog メッセージがUDPプロトコルを使用してホストへ転送されることを示します。TCPプロトコルを使用するには、2 つのアットマークを空白なしで (@@) 使用します。 - オプションの
zNUMBER設定を使用すると、syslog メッセージの zlib 圧縮が可能になります。NUMBER 属性は、圧縮レベルを指定します (最低の 1 から最高の 9 まで)。圧縮が得られたことはrsyslogdが自動的にチェックします。メッセージが圧縮されるのは圧縮が可能になった場合のみで、60 バイト未満のメッセージは圧縮されません。 - HOST 属性は、選択した syslog メッセージを受信するホストを指定します。
- PORT 属性は、ホストマシンのポートを指定します。
IPv6アドレスをホストとして指定する場合は、アドレスを角括弧 ([,]) で囲みます。例22.4 ネットワークを使った syslog メッセージの送信
以下の例は、ネットワーク上で syslog メッセージを転送するアクションです (注記: すべてのアクションの前には、いずれかの優先度を持つすべてのメッセージを選択するセレクターが付いています)。メッセージをUDP経由で192.168.0.1に転送するには、以下を入力します。*.* @192.168.0.1
ポート 6514 とTCPプロトコルを使ってメッセージを "example.com" に転送するには、以下を使用します。*.* @@example.com:6514
以下ではメッセージを zlib (レベル 9 圧縮) で圧縮し、UDPプロトコルを使って2001:db8::1に転送します。*.* @(z9)[2001:db8::1]
- 出力チャンネル
- 出力チャンネルは主にログファイルの最大サイズを指定するために使われます。これは、ログファイルのローテーションに非常に便利なものです (詳細は 「ログローテーション」 を参照してください)。出力チャンネルは基本的に出力アクションについての情報を集めたものです。出力チャンネルは、
$outchannelディレクティブで定義されます。/etc/rsyslog.confで出力チャンネルを定義するには、以下の構文を使用します。$outchannel NAME, FILE_NAME, MAX_SIZE, ACTION
ここでは、- NAME 属性は、出力チャンネル名を指定します。
- FILE_NAME 属性は、出力ファイル名を指定します。出力チャンネルはファイルにのみ書き込み可能で、パイプやターミナル、その他の出力には書き込みできません。
- MAX_SIZE 属性は、(FILE_NAME 内にある) 指定されたファイルが拡張可能な最大サイズを表します。この値は バイト 単位で指定します。
- ACTION 属性は、MAX_SIZE で定義された最大サイズに到達した際に取るべきアクションを指定します。
定義済みの出力チャンネルをルール内のアクションとして使用するには、以下を入力します。FILTER :omfile:$NAME
例22.5 出力チャンネルのログローテーション
以下の出力は、出力チャンネルを使用した簡単なログローテーションを示しています。まず、出力チャンネルは$outchannelディレクティブにより定義されます。$outchannel log_rotation, /var/log/test_log.log, 104857600, /home/joe/log_rotation_script
その後に、優先度を持つすべての syslog メッセージを選択し、取得した syslog メッセージ上の事前定義された出力チャンネルを実行するルール内で使用されます。*.* :omfile:$log_rotation
制限 (例では100 MB) に達すると、/home/joe/log_rotation_scriptが実行されます。このスクリプトには、ファイルを異なるフォルダーに移動することやその中の特別なコンテンツを編集すること、単にそれを削除することなど、様々なタスクを含めることができます。 - 特定ユーザーへの syslog メッセージの送信
- メッセージの送信先となるユーザー名を指定することで、rsyslog は syslog メッセージを送信することができます (例22.7「複数アクションの指定」 で表示)。複数のユーザーを指定するには、各ユーザー名をコンマ (
,) で区切ります。現在ログオンしている全ユーザーにメッセージを送るには、アスタリスク (*) を使用します。 - プログラムの実行
- rsyslog は選択した syslog メッセージ用のプログラムを実行可能とし、
system()呼び出しを使用してシェル内でプログラムを実行します。実行するプログラムを指定するには、そのプログラムの前に caret 文字(^) を付けます。その後に、受信したメッセージをフォーマットしてそれを 1 行のパラメーターとして指定した実行ファイルに渡すテンプレートを指定します (テンプレートに関する詳細は、「テンプレート」 を参照)。FILTER ^EXECUTABLE; TEMPLATE
ここでは、FILTER 条件の出力は EXECUTABLE で表されるプログラムで処理されます。このプログラムは、有効な実行ファイルであればどれでも構いません。TEMPLATE をフォーマットするテンプレートに置き換えます。例22.6 プログラムの実行
以下の例では、すべての優先度の syslog メッセージが選択され、templateテンプレートでフォーマットされた後にパラメーターとして test-program プログラムに渡されます。その後は、提供されているパラメーターで実行されます。*.* ^test-program;template
警告
ホストからメッセージを受信して、シェル実行アクションを使用する際には、コマンドインジェクションに対する脆弱性があります。ユーザーが自身のアクションで実行されるように指定しているプログラム内で、攻撃者が別のコマンドの挿入と実行を試みる可能性があります。セキュリティー脅威の可能性を回避するには、シェル実行アクションの使用をよく考慮してください。 - syslog メッセージのデータベースでの保存
- 選択された syslog メッセージは、データベースライター の動作を使用して、直接データベーステーブルに書き込むことができます。データベースライターは、以下の構文を使用します:
:PLUGIN:DB_HOST,DB_NAME,DB_USER,DB_PASSWORD;[TEMPLATE]ここでは、- PLUGIN はデータベースの書き込みを処理する指定プラグインを呼び出します (例えば、
ommysqlplug-in)。 - DB_HOST 属性は、データベースのホスト名を指定します。
- DB_NAME 属性はデータベースの名前を指定します。
- DB_USER 属性はデータベースのユーザーを指定します。
- DB_PASSWORD 属性は上述のデータベースユーザーが使用するパスワードを指定します。
- TEMPLATE 属性は syslog メッセージを修正するテンプレートのオプション使用を指定します。テンプレートに関する詳細は、「テンプレート」 を参照してください。
重要
現在 rsyslog は、MySQLデータベースとPostgreSQLデータベースにのみ対応しています。MySQLおよびPostgreSQLのデータベースライター機能を使用するには、rsyslog-mysql および rsyslog-pgsql パッケージをそれぞれインストールします。また、/etc/rsyslog.conf設定ファイルに適切なモジュールを確実に読み込んでください。module(load=”ommysql”) # Output module for MySQL support module(load=”ompgsql”) # Output module for PostgreSQL support
rsyslog モジュールに関する詳細は、「Rsyslog モジュールの使用」 を参照してください。別の方法として、omlibdbモジュールが提供する汎用のデータベースインターフェースを使用することもできます (サポート対象: Firebird/Interbase、MS SQL、Sybase、SQLLite、Ingres、Oracle、mSQL)。 - syslog メッセージの破棄
- 選択したメッセージを破棄するには、チルダ文字 (
~) を使用します。FILTER ~
破棄するアクションは、ほとんどの場合、さらに処理をする前にメッセージをフィルターするために使用されます。破棄しなければログファイルを満たしてしまう繰り返されるメッセージを削除したい場合に、これは効果的です。破棄のアクションの結果は、設定ファイルのどこで指定されているかに左右されます。最善の結果を得るには、これらのアクションをアクションリストの最上部に置きます。メッセージは一旦破棄されると、設定ファイルの後ろの行で回復することはできないことに注意してください。たとえば、以下のルールはすべての cron syslog メッセージを破棄します。cron.* ~
複数アクションの指定
FILTER ACTION & ACTION & ACTION
例22.7 複数アクションの指定
crit) を持つすべてのカーネル syslog メッセージはユーザー user1 に送信され、テンプレートtemp によって処理されてから、test-program 実行ファイルに渡され、その後に UDP プロトコルを介して 192.168.0.1 に転送されます。
kern.=crit user1 & ^test-program;temp & @192.168.0.1
;) を末尾に付けてからテンプレートの名前を指定します。テンプレートについての詳細は、「テンプレート」 を参照してください。
警告
/etc/rsyslog.conf でルール定義の前にある必要があります。
22.2.3. テンプレート
/etc/rsyslog.conf で以下の構文を使用します。
template(name=”TEMPLATE_NAME” type=”string” string="text %PROPERTY% more text" [option.OPTION="on"])
template()はテンプレートを定義するディレクティブ導入ブロックです。TEMPLATE_NAMEの必須引数はテンプレートの参照に使われます。TEMPLATE_NAMEは固有のものである必要があります。typeの必須引数は 「list」、「subtree」、「string」、「plugin」のいずれかの値を取得します。string引数は実際のテンプレートテキストです。このテキスト内では、改行文字の \n、キャリッジリターンの \r などの特殊文字を使用できます。% または " などのその他の文字を使用する場合は、それらの文字を文字どおりエスケープする必要があります。このテキスト内では、改行文字の\n、キャリッジリターンの\rなどの特殊文字を使用できます。%または"などのその他の文字を使用する場合は、それらの文字を文字どおりエスケープする必要があります。- 2 つのパーセントマーク (
%) の間にあるテキストは、syslog メッセージの特定のコンテンツにアクセスできるようにする プロパティー を指定します。プロパティーに関する詳細は、「プロパティー」 を参照してください。 OPTION属性は、テンプレート機能を修正するオプションを指定します。現在サポートされているテンプレートオプションはsqlとstdsqlで、テキストを SQL クエリとして、またはテキストを JSON 処理に最適な形にフォーマットする JSON としてフォーマットするために使用されます。casesensitiveはプロパティ名の大文字小文字の区別を設定します。注記
データベースライターは、sqlまたはstdsqlオプションがテンプレート内で指定されているかどうかをチェックします。指定されていないと、データベースライターはアクションを実行しません。これは SQL インジェクションなどのセキュリティーの脅威を回避するためです。詳細については、「アクション」 の項「『syslog メッセージのデータベースでの保存』」を参照してください。
動的なファイル名の生成
timegenerated プロパティーを使用すると、各 syslog メッセージ用に一意のファイル名を生成できます。
template(name=”DynamicFile” type=”list”) {
constant(value=”/var/log/test_logs/”)
property(name=”timegenerated”)
constant(value”-test.log”)
}$template ディレクティブは単にテンプレートを指定するだけです。効果を反映するためには、それをルール内で使用しなければなりません。/etc/rsyslog.conf 内で、クエスチョンマーク (?) をアクション定義に使って、動的ファイル名テンプレートをマークします。
*.* ?DynamicFile
プロパティー
%) の内側) で定義されたプロパティーにより、プロパティー置換関数 を使って syslog メッセージの各種コンテンツにアクセスできるようになります。テンプレート内 (2 つの引用符 ("…")の間) でプロパティーを定義するには、以下の構文を使用します。
%PROPERTY_NAME[:FROM_CHAR:TO_CHAR:OPTION]%- PROPERTY_NAME 属性は、プロパティー名を指定します。利用可能なすべてのプロパティーとその詳細説明の一覧は、
rsyslog.conf(5)man ページの Available Properties セクションでご覧になれます。 - FROM_CHAR 属性と TO_CHAR 属性は、指定したプロパティーが動作する文字の範囲を表します。他の方法では、正規表現を使用して文字の範囲を指定することもできます。これを行うには、文字
Rを FROM_CHAR 属性として指定し、希望する正規表現を TO_CHAR 属性として指定します。 - OPTION 属性は、入力を小文字に変換する
lowercaseオプションのようなプロパティーオプションを指定します。利用可能なすべてのプロパティーオプションとその詳細説明の一覧は、rsyslog.conf(5)man ページの Property Options セクションでご覧になれます。
- 以下のプロパティーは、syslog メッセージのメッセージテキスト全体を取得します。
%msg%
- 以下のプロパティは、syslog メッセージにあるメッセージテキストの最初の 2 文字を取得します。
%msg:1:2%
- 以下のプロパティは、syslog メッセージの全メッセージテキストを取得して、最後のラインフィード文字を省きます。
%msg:::drop-last-lf%
- 以下のプロパティは、syslog メッセージを受信して 『RFC 3999』 日付基準にしたがってそれをフォーマットした時に生成されるタイムスタンプの最初の 10 文字を取得します。
%timegenerated:1:10:date-rfc3339%
テンプレートの例
例22.8 詳細な syslog メッセージのテンプレート
template(name=”verbose” type=”list”) {
property(name="syslogseverity”)
property(name="syslogfacility”)
property(name="timegenerated”)
property(name="HOSTNAME”)
property(name="syslogtag”)
property(name="msg”)
constant(value=”\n")
}mesg(1) パーミッションが yes に設定されている全ユーザーに送信されるメッセージ) に似ているテンプレートを示しています。このテンプレートは改行後 (\r と \nを使用) にメッセージテキストと共にホスト名、メッセージタグ、およびタイムスタンプを出力してベル (\7 を使用) を鳴らします。
例22.9 ウォールメッセージのテンプレート
template(name=”wallmsg” type=”list”) {
constant(value="\r\n\7Message from syslogd@”)
property(name="HOSTNAME”)
constant(value=” at ")
property(name="timegenerated”)
constant(value=" ...\r\n ”)
property(name="syslogtag”)
constant(value=” “)
property(name="msg”)
constant(value=”\r\n”)
}sql オプションの使用に注目してください。これは、データベースライターに対してメッセージを MySQL SQL クエリーとしてフォーマットするように指示します。
例22.10 データベースフォーマットをしたメッセージのテンプレート
template(name="dbFormat" type="list" option.sql="on") {
constant(value="insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag)")
constant(value=" values ('")
property(name="msg")
constant(value="', ")
property(name="syslogfacility")
constant(value=", '")
property(name="hostname")
constant(value="', ")
property(name="syslogpriority")
constant(value=", '")
property(name="timereported" dateFormat="mysql")
constant(value="', '")
property(name="timegenerated" dateFormat="mysql")
constant(value="', ")
property(name="iut")
constant(value=", '")
property(name="syslogtag")
constant(value="')")
}RSYSLOG_ 接頭辞で識別される事前定義のテンプレートのセットも含まれています。これらは syslog の使用に確保されており、競合を防止するためにこの接頭辞を使用したテンプレートを作成しないことが推奨されます。以下の一覧では、これらの事前定義のテンプレートとその定義を示しています。
RSYSLOG_DebugFormat- プロパティー問題のトラブルシューティングに使われる特別なフォーマット。
template(name=”RSYSLOG_DebugFormat” type=”string” string="Debug line with all properties:\nFROMHOST: '%FROMHOST%', fromhost-ip: '%fromhost-ip%', HOSTNAME: '%HOSTNAME%', PRI: %PRI%,\nsyslogtag '%syslogtag%', programname: '%programname%', APP-NAME: '%APP-NAME%', PROCID: '%PROCID%', MSGID: '%MSGID%',\nTIMESTAMP: '%TIMESTAMP%', STRUCTURED-DATA: '%STRUCTURED-DATA%',\nmsg: '%msg%'\nescaped msg: '%msg:::drop-cc%'\nrawmsg: '%rawmsg%'\n\n")
RSYSLOG_SyslogProtocol23Format- IETF のインターネットドラフト ietf-syslog-protocol-23 で指定されるフォーマット。これは新たな syslog 標準 RFC になると想定されています。
template(name=”RSYSLOG_SyslogProtocol23Format” type=”string” string="%PRI%1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n ")
RSYSLOG_FileFormat- TraditionalFileFormat に類似したモダンスタイルのログファイルフォーマットですが、高精度のタイムスタンプとタイムゾーン情報を備えています。
template(name="RSYSLOG_FileFormat" type="list") { property(name="timestamp" dateFormat="rfc3339") constant(value=" ") property(name="hostname") constant(value=" ") property(name="syslogtag") property(name="msg" spifno1stsp="on" ) property(name="msg" droplastlf="on" ) constant(value="\n") } RSYSLOG_TraditionalFileFormat- 精度の低いタイムスタンプを持つ旧式のデフォルトのログファイルフォーマット。
template(name="RSYSLOG_TraditionalFileFormat" type="list") { property(name="timestamp") constant(value=" ") property(name="hostname") constant(value=" ") property(name="syslogtag") property(name="msg" spifno1stsp="on" ) property(name="msg" droplastlf="on" ) constant(value="\n") } RSYSLOG_ForwardFormat- 高精度のタイムスタンプとタイムゾーン情報を備えた転送フォーマット。
template(name="ForwardFormat" type="list") { constant(value="<") property(name="pri") constant(value=">") property(name="timestamp" dateFormat="rfc3339") constant(value=" ") property(name="hostname") constant(value=" ") property(name="syslogtag" position.from="1" position.to="32") property(name="msg" spifno1stsp="on" ) property(name="msg") } RSYSLOG_TraditionalForwardFormat- 精度の低いタイムスタンプを持つ従来の転送フォーマット。
template(name="TraditionalForwardFormat" type="list") { constant(value="<") property(name="pri") constant(value=">") property(name="timestamp") constant(value=" ") property(name="hostname") constant(value=" ") property(name="syslogtag" position.from="1" position.to="32") property(name="msg" spifno1stsp="on" ) property(name="msg") }
22.2.4. グローバルディレクティブ
rsyslogd デーモンに適用される設定オプションです。通常、これらは rsyslogd デーモンの動作に影響を与える事前定義された特定の変数の値または生じるルールを指定します。グローバルディレクティブはすべて、global 設定ブロックに含まれています。以下は、上書きするログメッセージのローカルホスト名を指定するグローバルディレクティブのサンプルです。
global(localHostname=”machineXY”)
10,000 メッセージ) は、別の値を指定することで上書きされます (上記の例を参照)。
/etc/rsyslog.conf 設定ファイル内で複数のディレクティブを定義することもできます。1 つのディレクティブは、同じディレクティブの発生が再度検出されるまですべての設定オプションの動作に影響します。グローバルディレクティブは、アクションやキュー、デバッグの設定に使用できます。利用可能なすべての設定ディレクティブの一覧は、「オンラインのドキュメント」 でご覧になれます。現在、$ ベースの構文 (「新規設定フォーマットの使用」 を参照) に代わる新たな設定フォーマットが開発されています。ただし、従来のグローバルディレクティブはレガシーフォーマットとして引き続きサポートされます。
22.2.5. ログローテーション
/etc/logrotate.conf 設定ファイルのサンプルを示します:
# rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # uncomment this if you want your log files compressed compress
.gz 形式に圧縮されます。ハッシュマーク (#) で始まる行はすべてコメントで、これは処理されません。
/etc/logrotate.d/ ディレクトリー内に特定ログファイル用の個別の設定ファイルを作成し、そこに設定オプションを定義することが推奨されます。
/etc/logrotate.d/ ディレクトリーに配置されている例を以下に示します。
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}/var/log/messages ログファイル専用の特有なものです。ここで指定された設定は、可能な場合はグローバルオプションを上書きします。そのため、交代された /var/log/messages ログファイルは、グローバルオプションで定義された 4 週間ではなく、5 週間保管されます。
weekly— ログファイルの週毎のローテーションを指定します。同様なディレクティブには以下のものがあります。dailymonthlyyearly
compress— 交代したログファイルの圧縮を有効にします。同様なディレクティブには、以下のものがあります。nocompresscompresscmd— 圧縮に使用するコマンドを指定します。uncompresscmdcompressext— 圧縮に使用する拡張子を指定します。compressoptions— 使用される圧縮プログラムに渡すオプションを指定します。delaycompress— ログファイルの圧縮を次回のログファイルのローテーションまで延期します。
rotate INTEGER— ログファイルが削除される、または特定のアドレスに送信されるまでにログファイルがローテーションされる回数を指定します。値0が指定されると、古いログファイルはローテーションではなく削除されます。mail ADDRESS— このオプションは、rotateディレクティブで定義された回数ローテーションされたログファイルを特定のアドレスへメール送信できるようにします。同様なディレクティブには以下のものがあります。nomailmailfirst— 間もなく期限切れになるログファイルではなく、交代されたばかりのログファイルがメール送信されるよう指定します。maillast— 交代されたばかりのログファイルではなく、間もなく期限切れになるログファイルがメール送信されるよう指定します。mailが有効の場合は、これがデフォルトのオプションです。
logrotate(5) man ページを参照してください。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.