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でくっつける』書式のほうが、
- 一貫性があって
- 設定の境目やつながりがわかりやすい
と思うのですがどうでしょうか。