NW機器のログはsyslogサーバに集約してWEBで見れるようにしてます
理由はこのへんです。
- いちいちログインして見るのがダルい
- 障害時にログインして確認しようにも入れないことが多い(だってNW機器ですもん)
- 仕方ないので再起動するとログ消えちゃう
見ためはこんな感じ(サンプル)
手順
/etc/rsyslog.confを編集
# モジュール読み込み。UDP追加 $ModLoad imuxsock $ModLoad imklog $ModLoad imudp # Apacheユーザで読めるようにパーミッション設定 $umask 0000 $DirCreateMode 0755 $FileCreateMode 0644 # ログのフォーマット、パス定義 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template RemoteLog, "/var/log/remote/%hostname:::secpath-replace%/%hostname:::secpath-replace%_%$year%%$month%%$day%.log" # ローカルログ用のルール設定 $RuleSet local *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg * uucp,news.crit /var/log/spooler local7.* /var/log/boot.log # リモートsyslog用のルール設定 $RuleSet remote *.* ?RemoteLog $DefaultRuleset local # リモートsyslogの受信設定 $AllowedSender UDP, 127.0.0.0/8, 192.168.0.0/16 $InputUDPServerBindRuleset remote $UDPServerRun 514
rsyslog再起動
# /etc/init.d/rsyslog restart
Apache設定
# yum install httpd # vi /etc/httpd/conf.d/remote_log.conf Alias /remote_log/ /var/log/remote/ <Directory /var/log/remote/> Order deny,allow Deny from all Allow from 127.0.0.0/8 Allow from 192.168.0.0/16 Options +Indexes </Directory> # /etc/init.d/httpd start
という感じでサクッとでけました。
rsyslog使ってみた感想
慣れの問題が大きいと思いますが、ちょっと設定がわかりづらく感じました。
・同じ事をするための書式がいろいろある
・各設定の境目とつながりがよくわからない
syslog-ngで同じことをやろうとするとこんな設定になると思います(最後の3行以外ほぼデフォルト)
options {
sync (0);
time_reopen (10);
log_fifo_size (1000);
long_hostnames (off);
use_dns (yes);
use_fqdn (no);
create_dirs (yes);
keep_hostname (no);
stats(86400);
dir_perm(0755);
perm(0644);
owner(root);
group(root);
};
### syslogdのデフォルト設定設定を引き継ぐ
source s_sys {
file ("/proc/kmsg" log_prefix("kernel: "));
unix-stream ("/dev/log");
internal();
# udp(ip(0.0.0.0) port(514));
};
destination d_cons { file("/dev/console"); };
destination d_mesg { file("/var/log/messages"); };
destination d_auth { file("/var/log/secure"); };
destination d_mail { file("/var/log/maillog" sync(10)); };
destination d_spol { file("/var/log/spooler"); };
destination d_boot { file("/var/log/boot.log"); };
destination d_cron { file("/var/log/cron"); };
destination d_kern { file("/var/log/kern"); };
destination d_mlal { usertty("*"); };
filter f_kernel { facility(kern); };
filter f_default { level(info..emerg) and
not (facility(mail)
or facility(authpriv)
or facility(cron)); };
filter f_auth { facility(authpriv); };
filter f_mail { facility(mail); };
filter f_emergency { level(emerg); };
filter f_news { facility(uucp) or
(facility(news)
and level(crit..emerg)); };
filter f_boot { facility(local7); };
filter f_cron { facility(cron); };
#log { source(s_sys); filter(f_kernel); destination(d_cons); };
log { source(s_sys); filter(f_kernel); destination(d_kern); };
log { source(s_sys); filter(f_default); destination(d_mesg); };
log { source(s_sys); filter(f_auth); destination(d_auth); };
log { source(s_sys); filter(f_mail); destination(d_mail); };
log { source(s_sys); filter(f_emergency); destination(d_mlal); };
log { source(s_sys); filter(f_news); destination(d_spol); };
log { source(s_sys); filter(f_boot); destination(d_boot); };
log { source(s_sys); filter(f_cron); destination(d_cron); };
### リモートsyslog集約用設定
source s_remote { udp(ip(0.0.0.0) port(514)); };
destination d_remote { file("/var/log/remote/$HOST/$HOST.$YEAR$MONTH$DAY"); };
log { source(s_remote); destination(d_remote); };syslog-ngの『source、destination、filterを定義→logでくっつける』書式のほうが、
- 一貫性があって
- 設定の境目やつながりがわかりやすい
と思うのですがどうでしょうか。


