「Rsyslog」の版間の差分

提供: Wikinote
移動: 案内検索
(プロパティベース フィルタ)
行16: 行16:
 
  $ModLoad imtcp
 
  $ModLoad imtcp
 
  $InputTCPServerRun 514
 
  $InputTCPServerRun 514
 +
 +
=== 基本構文 ===
 +
 +
syslogd と同様に以下が基本。
 +
 +
''フィルタ'' ''アクション''
 +
 +
* 複数のアクションを適用する
 +
 +
''フィルタ'' ''アクション1''
 +
& ''アクション2''
 +
& ''アクション3''
 +
 +
* それ以降の処理をやめる (discard)
 +
 +
''フィルタ'' '''~'''
  
 
=== フィルタ ===
 
=== フィルタ ===
行55: 行71:
 
  daemon.notice;daemon.!err    # daemon の notice と warning のみマッチ?(試してない)
 
  daemon.notice;daemon.!err    # daemon の notice と warning のみマッチ?(試してない)
  
=== プロパティベース フィルタ ===
+
==== プロパティベース フィルタ ====
  
 
rsyslogd 独自のフィルタ。
 
rsyslogd 独自のフィルタ。
行61: 行77:
 
  :''property'', [!]''compare-operation'', "''value''"
 
  :''property'', [!]''compare-operation'', "''value''"
  
==== property ====
+
===== property =====
  
 
主なプロパティは以下。
 
主なプロパティは以下。
行75: 行91:
 
; timestamp (timereported) : メッセージのタイムスタンプ
 
; timestamp (timereported) : メッセージのタイムスタンプ
  
==== compare-operations ====
+
===== compare-operations =====
  
 
以下があるらしいが全部は試していない。
 
以下があるらしいが全部は試していない。
行90: 行106:
 
  :msg, regex, "fatal .* error"
 
  :msg, regex, "fatal .* error"
  
==== value ====
+
===== value =====
  
 
* クォートされた文字列を指定する。
 
* クォートされた文字列を指定する。

2013年4月23日 (火) 07:44時点における版

結構、設定がわかりにくいのであるよ。

設定

モジュール

$ModLoad でモジュールを読み込む。

UDP あるいは TCP ソケットで待ち受ける

syslogd では -r オプションだったが、rsyslog では rsyslog.conf に記述する。

$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

基本構文

syslogd と同様に以下が基本。

フィルタ アクション
  • 複数のアクションを適用する
フィルタ アクション1
& アクション2
& アクション3
  • それ以降の処理をやめる (discard)
フィルタ ~

フィルタ

セレクタ

syslogd と同じ伝統的な形式。

facility.priority
facility
主に:auth, authpriv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp, local0 - local7
priority
主に:debug, info, notice, warning, err, crit, alert, emerg

主なルール

  • 指定した priority 以上のログにマッチする
  • アスタリスク (*) ですべての facility あるいは priority にマッチ
  • セミコロン (;) で複数のセレクタを指定可能
  • none で対象 facility を除外可能
  • コンマ (,) で複数の facility を指定可能
  • イコール (=) で特定の priority のみにマッチ
  • エクスクラメーションマーク (!) で priority 以上を無視
daemon.err       # daemon の err, crit, alert, emerg にマッチ

mail.*           # mail のすべてのログにマッチ
*.emerg          # すべての emerg のログにマッチ
*.*              # すべてのログにマッチ

daemon.warning;cron.err

*.*;mail.none    # mail 以外のすべてのログにマッチ

uucp,news.crit   # uucp と news の crit, alert, emerg にマッチ

daemon.=err      # daemon の err のみにマッチ

daemon.notice;daemon.!err    # daemon の notice と warning のみマッチ?(試してない)

プロパティベース フィルタ

rsyslogd 独自のフィルタ。

:property, [!]compare-operation, "value"
property

主なプロパティは以下。

msg 
メッセージ本体 (MSG)
hostname 
ホスト名
fromhost, fromhost-ip 
メッセージを送信したホスト名 or IP アドレス
syslogtag 
タグ部分 (TAG) (例:"kernel:", "ntpd[xxx]:")
programname 
タグ中の名前部分 (例:"kernel", "ntpd")
syslogfacility-text 
ファシリティ名
syslogpriority-text 
プライオリティ名
timegenerated 
メッセージを受信した日時
timestamp (timereported) 
メッセージのタイムスタンプ
compare-operations

以下があるらしいが全部は試していない。

contains 
文字列が含まれているかどうか。ワイルドカードは使用不可。
isequal 
exact マッチ
startswith 
指定した文字列から始まるかどうか。
regex 
POSIX BRE
ereregex 
POSIX ERE

マニュアルによると、正規表現を使わなくて良いのであればそちらの方が速い。

正規表現のサンプル:

:msg, regex, "fatal .* error"
value
  • クォートされた文字列を指定する。
  • エスケープシーケンス使用可 (\" でダブルクォート、\\ でバックスラッシュ)

フォーマット

  • ファシリティ・プライオリティを syslogd の -SS オプションのように出力する
$template MyFormat,"%TIMESTAMP% <%syslogfacility-text%.%syslogpriority-text%> %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"

例) Apr 19 08:04:08 <user.notice> courier hagio: test