syslog-ng.confの設定

ここでは、syslog-ngの設定ファイル syslog-ng.conf について説明します。
syslog-ngのインストール方法については syslog-ng.confのインストール を参照ください。

syslog-ng.confのlinuxテンプレート syslog-ng.conf.RedHat を例にとって説明します。

source ログの受信設定

sourceでは、どこからログを受信するかについて設定を行います。
この設定はおまじない程度に覚えておいてよいと思います。

source s_sys { file ("/proc/kmsg" log_prefix("kernel: "));
               unix-stream ("/dev/log"); internal(); };

Linuxでは /proc/kmsgよりカーネルメッセージを取得し、また、log_prefixにより、ログの先頭に"kernel: "の文字列を追加します。
これは、従来のsyslogと同じ形式にするためです。

destination ログの送信設定

ログの出力先のファイルを定義するものです。デフォルトでは以下のようになっています。

destination d_cons { file("/dev/console"); };       (1)
destination d_mesg { file("/var/log/messages"); };  (2)
destination d_auth { file("/var/log/secure"); };    (3)
destination d_mail { file("/var/log/maillog"); };   (4)
destination d_spol { file("/var/log/spooler"); };   (5)
destination d_boot { file("/var/log/boot.log"); };  (6)
destination d_cron { file("/var/log/cron"); };      (7)
destination d_mlal { usertty("*"); };               (8)

【書式】
destination <destname> { destdriver-params; destdriver-params; ... ; };

destname
送信設定の定義名です。もちろんですがsyslog-ng内で一意となる名前を定義する必要があります。
destdriver-params
送信方法で、従来のsyslog同様にファイルに保存するのであれば
file("保存したい場所"); と定義します。
他に定義できるパラメータは

パラメータ意味
unix-streamUNIXドメインソケットのSOCK_STREAM形式でメッセージを送信します
userttyコンソール上にログを出力
programプログラムにログを出力(Swatchのような機能 詳しくはsyslog-ngでログ監視の自動化を参照)

などあります。

それをふまえて
(1)~(7)は従来のsyslogと同じようにファイルの保存場所を定義しています。
(8)はコンソール上にログを出力する定義になります。

filter 出力するログのフィルタ

出力するログメッセージのフィルタを行います。
filterで合致したログメッセージに対して、先ほど説明したdestinationでログの出力先を決定します。

デフォルト定義は以下のようになっています。

filter f_filter1     { facility(kern); };                            (1)
filter f_filter2     { level(info) and
                     not (facility(mail)
                        or facility(authpriv) or facility(cron)); }; (2)
filter f_filter3     { facility(authpriv); };                        (3)
filter f_filter4     { facility(mail); };                            (4)
filter f_filter5     { level(emerg); };                              (5)
filter f_filter6     { facility(uucp) or
                     (facility(news) and level(crit)); };            (6)
filter f_filter7     { facility(local7); };                          (7)
filter f_filter8     { facility(cron); };                            (8)

【書式】
filter <filtername> { expression; };

filtername
出力フィルタの定義名です。もちろんですがsyslog-ng内で一意となる名前を定義する必要があります。
expression
and、or、notの論理式を組み合わせてsyslogの ファシリティ や プライオリティ を定義します。
ファシリティの設定は facility
プライオリティの設定は level です。
他に定義できる設定には

パラメータ意味
programUNIXドメインソケットのSOCK_STREAM形式でメッセージを送信します
hostコンソール上にログを出力
matchプログラムにログを出力(Swatchのような機能 詳しくはsyslog-ngでログ監視の自動化を参照)

などあります。

それをふまえて
(1)はファシリティが kerne lのものを f_filter1 として定義
(2)はプライオリティが info で ファシリティが mail,authpriv,authpriv でないものを f_filter2 として定義
(3)はファシリティが authpriv のものを f_filter3 として定義
(4)はファシリティが mail のものを f_filter4 として定義
(5)はプライオリティが emerg のものを f_filter5 として定義
(6)はファシリティが uucp と ファシリティが news でプライオリティが crit のものを f_filter6 として定義
(7)はファシリティが local7 のものを f_filter7 として定義
(8)はファシリティが cron のものを f_filter8 として定義

参考までにファシリティとプライオリティについて
ファシリティ
authpriv 認証サービス
cron cronのメッセージ
daemon デーモンのメッセージ
kern カーネルのメッセージ
mail メールサービスのメッセージ
news ニュースサービスのメッセージ
user ユーザプロセスのメッセージ
uucp uucp転送を行うプログラムのメッセージ
local0~7 アプリケーションが自由にわりあえることのできるメッセージ

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

log source,destination,filterの関連づけ

前述のsource、destination、filterで定義したルール名の対応付けをします。
デフォルト定義は以下のようになっています。

log { source(s_sys); filter(f_filter2); destination(d_mesg); }; (1)
log { source(s_sys); filter(f_filter3); destination(d_auth); }; (2)
log { source(s_sys); filter(f_filter4); destination(d_mail); }; (3)
log { source(s_sys); filter(f_filter5); destination(d_mlal); }; (4)
log { source(s_sys); filter(f_filter6); destination(d_spol); }; (5)
log { source(s_sys); filter(f_filter7); destination(d_boot); }; (6)
log { source(s_sys); filter(f_filter8); destination(d_cron); }; (7)

これについては特に説明は必要ないかと思いますが念のため、、、

(1) ログ受信 s_sys を利用し、f_filter2 の条件に当てはまったものを d_mesg に出力します。
(2) ログ受信 s_sys を利用し、f_filter3 の条件に当てはまったものを d_auth に出力します。
(3) ログ受信 s_sys を利用し、f_filter4 の条件に当てはまったものを d_mail に出力します。
(4) ログ受信 s_sys を利用し、f_filter5 の条件に当てはまったものを d_mlal に出力します。
(5) ログ受信 s_sys を利用し、f_filter6 の条件に当てはまったものを d_spol に出力します。
(6) ログ受信 s_sys を利用し、f_filter7 の条件に当てはまったものを d_bootg に出力します。
(7) ログ受信 s_sys を利用し、f_filter8 の条件に当てはまったものを d_cron に出力します。

これで従来の syslog と同じようにログが出力されます。

option

syslog-ngに関する初期設定値などの変更行います。
必要に応じてオプションの値を変更して下さい。

デフォルトは以下のようになっています。

options { sync (0);
          time_reopen (10);
          #log_fifo_size (1000);
          long_hostnames (off);
          use_dns (no);
          use_fqdn (no);
          create_dirs (no);
          keep_hostname (yes);
        };

特に変更箇所は無いと思いますが私は log_fifo_size をコメントしました。

これでsyslog-ng.confの設定は完了です。
次回、syslog-ngを利用してswatchのような機能は ログ監査の自動化 を参照下さい。

marronおすすめの参考書 by Amazon
SupportDeskパック Standard24(Linuxサポート付)3年[カスタムメイド対応] SupportDeskパック Standard24(Linuxサポート付)3年[カスタムメイド対応]
/
SupportDeskパック Standard(Linuxサポート付)4年[カスタムメイド対応] SupportDeskパック Standard(Linuxサポート付)4年[カスタムメイド対応]
/
SupportDeskパック Standard24(Linuxサポート付)4年[カスタムメイド対応] SupportDeskパック Standard24(Linuxサポート付)4年[カスタムメイド対応]
/

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.