LoginSignup
59
71

More than 3 years have passed since last update.

rsyslog.confの文法

Last updated at Posted at 2019-10-22

■ rsyslogとは

アプリケーションから通知されたメッセージをログファイルに保存するLinuxのログ管理システム。

■ /etc/rsyslog.confの文法

● 基本構成

セレクタ(出力対象ログの内容設定)とアクション(出力先のログファイルの設定)で構成される。

下記のような形式で指定する。

複数のセレクターを定義するには、セミコロン (;) を使用して区切ぎる。

# セレクタ   アクション
authpriv.* /var/log/auth.log

# セレクタ;セレクタ      アクション
mail.info;authpriv.none /var/log/messages

セレクタ

出力対象のログメッセージを指定する。

ファシリティ(≒ログの種類)と、プライオリティ(≒ログのレベル)を設定する。

下記のようにファシリティ.プライオリティという形式で指定する。

定義するファシリティ、プライオリティが複数になる場合は、コンマ (,) を使用して区切ります。

# ファシリティ.プライオリティ
mail.info

# ファシリティ,ファシリティ.プライオリティ
auth,authpriv.none

ファシリティ

ログの種類を示す。

下記のように分類されている。

facility 対象のログ
authpriv 認証サービス 
cron cronのメッセージ
daemon デーモンのメッセージ
kern カーネルのメッセージ
lpr プリンタサービスのメッセージ
mail メールサービスのメッセージ
news ニュースサービスのメッセージ
syslog syslogのメッセージ
user ユーザープロセスのメッセージ
uucp uucp転送を行うプログラムのメッセージ
local0~7 独自に利用できるファシリティ
プライオリティ ( セビリティ )

ログのレベル(重要度)を示す。

priority 内容
emerg システムが停止するようなエラーを示すメッセージ
alert 緊急に対処すべきエラーを示すメッセージ
crit ハードウェアの傷害など致命的なエラーを示すメッセージ
err 一般的なエラーメッセージ
warning 警告メッセージ
notice 通知メッセージ
info 一般的な情報メッセージ
debug デバッグメッセージ
none ログメッセージ出力しない設定
* すべてのプライオリティを示す

local0.noneとした場合、local0のログは出力されなくなる。

アクション

ログファイルの出力先の設定。

出力先のログファイルのファイルパスを記載する。

ハイフン「-」を先頭につけると、ログの書き込みが非同期になる。
非同期モードの場合、ストレージ(永続領域)への書き込みをダイレクトに行わなくなる。
一度、バッファ領域(一時領域)に保存してから、順次ストレージへの保存を行う。

非同期モードのメリットは、

  • 大量のログ出力が同時に発生した場合に、ディスクI/Oを軽減できる

非同期モードのデメリットは、

  • ストレージへの書き移しが完了していない状態で、サーバが停止すると、ログが消失する

mail.info;authpriv.err; /var/log/messages
daemon.*         -/var/log/daemon.log

● テンプレート

出力先や出力メッセージの形式をカスタマイズできる機能。

# テンプレートの定義
# $template テンプレート名, テンプレート形式
$template TemplateName1,"%timereported% %hostname% %syslogfacility-text%.%syslogseverity-text%: %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template TemplateName2,"/var/log/%programname%.log"

# テンプレートの適応方法
# セレクタ アクション;テンプレート名
local1.* /var/log/messages;TemplateName1

# 動的なテンプレートの適用
# 疑問符「?」の後ろにテンプレート名を指定すると動的ファイルパスになる
# セレクタ ?テンプレート名
local1.* ?TemplateName2

プロパティ

出力するログをカスタマイズするために、独自のデータを追加する機能。

%プロパティ名%のように定義すると定義したプロパティに応じた文字列に置換される。

$template TemplateName1,"%timereported% %hostname% %syslogfacility-text%.%syslogseverity-text%: %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template TemplateName2,"/var/log/%programname%.log"

プロパティの例として、下記のようなものがある。

プロパティ 説明
%timereported% ログが出力された日時
%timestamp:::date-year% ログのタイムスタンプの年
%timestamp:::date-month% ログのタイムスタンプの月
%timestamp:::date-day% ログのタイムスタンプの日
%timestamp:::date-hour% ログのタイムスタンプの時
%timestamp:::date-minute% ログのタイムスタンプの分
%timestamp:::date-second% ログのタイムスタンプの秒
%timestamp:::date-subseconds% ログのタイムスタンプのミリ秒
%hostname% ログを出力したホストの名前
%syslogfacility-text% ファシリティ名
%syslogseverity-text% プライオリティ名
%syslogtag% ログのタグ ( apache[123], systemd[123], CRON[123]などのメッセージの出力対象プロセス )
%programname% ログのタグ ( apache, systemd, CRONなどのメッセージの出力対象プロセス名 )
%msg% メッセージ本体
%msg:1:2% syslog メッセージ中の1~2文字目
%msg:::drop-last-lf% syslog メッセージの全メッセージテキストを取得して、最後のラインフィード文字を省く
%sp-if-no-1st-sp% フィールドの最初の文字がスペースじゃないときにのみ、スペースを返す
%fixed-width% 指定された桁数分足りていない場合にスペースで穴埋め (rsyslog 8.13.0から導入)


■ 文法チェック

  • /etc/rsyslog.confのチェックを行う
$ rsyslogd -N 1

バージョンエラーが出る場合は、cオプションを使う。

$ rsyslogd -N 1 -c5
  • loggerコマンドでのテスト

下記コマンドで実際にsyslogに対して出力テストが可能。

logger -p local1.info "test info message."
logger -p local1.warn "test warn message."

参考

59
71
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
71