2015/05/31

rsyslogの基本設定とログのプライオリティ情報の出力

はじめに

syslogを利用して出力されるログを、 warnerr などのプライオリティ文字列の出力の有無でZabbixでのキーワード監視をしようとしたところ、デフォルトの設定ではプライオリティの情報が出力されない(出力されるメッセージ自体にこれらの文字列が出力されることはある)ことがわかりましたので、rsyslogの基本設定とプライオリティ情報を出力させるための設定について調べたことをメモします。

rsyslog.confのフォーマット

rsyslog.confの書式は以下になります。

selector    action
  • selector・・・出力するログの内容の指定
  • action・・・ログの出力先の指定
selector

selectorは出力するログの内容を指定するもので、「facility」と「priority」を.で接続したものになります。特定のactionに対して複数のselectorを指定したい場合は、;で接続します。

例えば、/var/log/messagesへ出力されるログのselectorは以下のようになっています。*.infoでinfoレベル以上のログは全て出力し、あとに続くmail.none;authpriv.none;cron.noneで、メール、認証サービス、cron関連のログは除くような指定がされています。

*.info;mail.none;authpriv.none;cron.none
facility

facilityはログの種類を示します。あらかじめ定義されているものと独自に利用できるものがあります。

facility 対象のログ
auth(security) 認証サービスのメッセージ(現在はauthprivが推奨されている)
authpriv 認証サービス(カテゴリはauthと同じ。authとは出力結果が異なる)
cron cronのメッセージ
daemon デーモンのメッセージ
kern カーネルのメッセージ
lpr プリンタサービスのメッセージ
mail メールサービスのメッセージ
news ニュースサービスのメッセージ
syslog syslogのメッセージ
user ユーザープロセスのメッセージ
uucp uucp転送を行うプログラムのメッセージ
local0~7 独自に利用できるファシリティ
priority

priorityはログのレベルの重要度を設定します。通常は指定したpriority以上のログが出力されます。例えば、errを指定すればcritalertemergのログも出力されます。

>
priority 内容
debug デバッグ情報
info 情報
notice 通知
warn 警告
err 一般的なエラー
crit 致命的なエラー
alert 緊急に対処すべきエラー
emerg システムが落ちるような状態
action

actionには、selectorで指定したメッセージをどこに出力するかを設定します。

  • 指定したファイルのパスに出力する
  • |(パイプ)でほかのプログラムに渡す
  • @ホスト名で指定したホストに転送する
  • ユーザーのコンソール(/dev/condole)に出力
  • 指定したユーザに通知

テンプレートやマクロでのログ出力内容のカスタマイズ

rsyslogで出力されるログをカスタマイズするにはテンプレートという機能を使用します。$templateという記述で定義します。その際、マクロという定義を使って出力する内容を指定できます。マクロは%マクロ名%のように、前後に「%」を付けて使用します。

ファシリティ 用途
msg ログメッセージ
hostname ログを出力したホストの名前
fromhost ログを受け取ったホストの名前
programname プログラム名
syslogfacility ファシリティ(数字)
syslogfacility-text ファシリティ(テキスト)
syslogseverity プライオリティ(数字)
syslogseverity-text プライオリティ(テキスト)
syslogpriority syslogseverityと同等
syslogpriority-text syslogseverity-textと同等
timegenerated ログを受け取った日時
timereported ログが出力された日時
timestamp timereportedと同等
$now 現在時刻(書式:YYYY-MM-DD)
$year 現在の年(4けた)
$month 現在の月(2けた)
$day 現在の日(2けた)
$hour 現在の時(24時間表記、2けた)
$minute 現在の分(2けた)

/var/log/messagesにファシリティのプライオリティの情報を出力する場合は、/etc/rsyslog.confへ以下のような指定をします。

# 既存/var/log/messagesへのログ出力設定をコメントアウト
#*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# 新規に設定を追加
$template mytemplate,"%timegenerated% %hostname% %programname% %syslogpriority-text% %msg%\n"
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;mytemplate

設定をおこなったあとは rsyslog を再起動します。

# service rsyslog restart

おわりに

以上で設定は終了です。

参考

0 Comments:

コメントを投稿